AssignmentGrid.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using Comal.Classes;
  5. using InABox.Clients;
  6. using InABox.Core;
  7. using InABox.DynamicGrid;
  8. namespace PRSDesktop
  9. {
  10. public class AssignmentGrid : DynamicDataGrid<Assignment>
  11. {
  12. public AssignmentGrid()
  13. {
  14. HiddenColumns.Add(x => x.JobLink.Deleted);
  15. }
  16. protected override Dictionary<string, object> EditorValueChanged(DynamicEditorForm editor, Assignment[] items, string name, object value)
  17. {
  18. var result = base.EditorValueChanged(editor, items, name, value);
  19. if (name.Equals("EmployeeLink.ID"))
  20. {
  21. var activity = editor.FindEditor("ActivityLink.ID") as ILookupEditorControl;
  22. if (activity != null)
  23. DefineLookups(activity, items);
  24. }
  25. else if (name.Equals("JobLink.ID"))
  26. {
  27. var itp = editor.FindEditor("ITP.ID") as ILookupEditorControl;
  28. if (itp != null)
  29. DefineLookups(itp, items);
  30. }
  31. else if (name.Equals("Task.ID"))
  32. {
  33. var jobid = new Client<Kanban>().Query(
  34. new Filter<Kanban>(x => x.ID).IsEqualTo(value),
  35. new Columns<Kanban>(x => x.JobLink.ID)
  36. ).Rows.FirstOrDefault()?.Get<Kanban, Guid>(x => x.JobLink.ID);
  37. DynamicGridUtils.UpdateEditorValue(items, "JobLink.ID", jobid.HasValue ? jobid.Value : Guid.Empty);
  38. DynamicGridUtils.UpdateEditorValue(items, "ITP.ID", Guid.Empty);
  39. var itp = editor.FindEditor("ITP.ID") as ILookupEditorControl;
  40. if (itp != null)
  41. DefineLookups(itp, items);
  42. }
  43. return result;
  44. }
  45. protected override void AfterLoad(DynamicEditorForm editor, Assignment[] items)
  46. {
  47. base.AfterLoad(editor, items);
  48. if (items.FirstOrDefault().ID == Guid.Empty)
  49. ReloadForms<Assignment, AssignmentForm, ActivityForm>(editor, items.FirstOrDefault(), x => x.Activity.ID,
  50. items.FirstOrDefault().ActivityLink.ID);
  51. }
  52. }
  53. }