JobFormDefinitionGrid.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using System;
  2. using System.Linq;
  3. using System.Windows.Controls;
  4. using Comal.Classes;
  5. using InABox.Clients;
  6. using InABox.Core;
  7. using InABox.DynamicGrid;
  8. namespace PRSDesktop;
  9. public class JobFormDefinitionGrid : DynamicManyToManyGrid<JobFormDefinition, Job>
  10. {
  11. public JobFormDefinitionGrid()
  12. {
  13. AddButton("Add All", null, AddAllClick);
  14. HiddenColumns.Add(x => x.Form.ID);
  15. }
  16. private bool AddAllClick(Button arg1, CoreRow[] arg2)
  17. {
  18. var existingforms = ExtractValues(x => x.Form.ID, Selection.All).ToArray();
  19. var newforms = InABox.Clients.Client.Query(
  20. new Filter<DigitalForm>(x => x.Active).IsEqualTo(true)
  21. .And(x => x.AppliesTo).IsEqualTo("Job")
  22. .And(x => x.ID).NotInList(existingforms)
  23. );
  24. foreach (var row in newforms.Rows)
  25. {
  26. var newitem = CreateItem();
  27. newitem.Job.ID = Item.ID;
  28. newitem.Form.ID = row.Get<DigitalForm, Guid>(x => x.ID);
  29. newitem.Form.Synchronise(row.ToObject<DigitalForm>());
  30. SaveItem(newitem);
  31. }
  32. return true;
  33. }
  34. }