JobGrid.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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 JobGrid : DynamicDataGrid<Job>
  11. {
  12. private Guid _statusid = Guid.Empty;
  13. public JobGrid()
  14. {
  15. HiddenColumns.Add(x => x.ID);
  16. HiddenColumns.Add(x => x.JobNumber);
  17. HiddenColumns.Add(x => x.Name);
  18. HiddenColumns.Add(x => x.Customer.ID);
  19. HiddenColumns.Add(x => x.Customer.Code);
  20. HiddenColumns.Add(x => x.Customer.Name);
  21. HiddenColumns.Add(x => x.SiteAddress.Street);
  22. HiddenColumns.Add(x => x.SiteAddress.City);
  23. HiddenColumns.Add(x => x.SiteAddress.State);
  24. HiddenColumns.Add(x => x.SiteAddress.PostCode);
  25. HiddenColumns.Add(x => x.Account.ID);
  26. HiddenColumns.Add(x => x.Account.Code);
  27. HiddenColumns.Add(x => x.Account.Name);
  28. HiddenColumns.Add(x => x.Notes);
  29. HiddenColumns.Add(x => x.JobStatus.ID);
  30. HiddenColumns.Add(x => x.JobStatus.Active);
  31. HiddenColumns.Add(x => x.DefaultScope.ID);
  32. ActionColumns.Add(new DynamicMapColumn<Job>(this, x => x.SiteAddress.Location));
  33. }
  34. protected override void DoReconfigure(FluentList<DynamicGridOption> options)
  35. {
  36. base.DoReconfigure(options);
  37. options.AddRange(
  38. DynamicGridOption.RecordCount,
  39. DynamicGridOption.SelectColumns,
  40. DynamicGridOption.FilterRows
  41. );
  42. }
  43. public Guid StatusID
  44. {
  45. get => _statusid;
  46. set
  47. {
  48. _statusid = value;
  49. Refresh(false, true);
  50. }
  51. }
  52. protected override void Reload(Filters<Job> criteria, Columns<Job> columns, ref SortOrder<Job>? sort, Action<CoreTable?, Exception?> action)
  53. {
  54. if (_statusid != Guid.Empty)
  55. criteria.Add(new Filter<Job>(x => x.JobStatus.ID).IsEqualTo(_statusid));
  56. sort = new SortOrder<Job>(x => x.JobNumber, SortDirection.Descending);
  57. base.Reload(criteria, columns, ref sort, action);
  58. }
  59. public override DynamicEditorPages LoadEditorPages(Job item)
  60. {
  61. var pages = new DynamicEditorPages(new IDynamicEditorPage[]
  62. {
  63. new DynamicManyToManyGrid<JobDocument,Job>(),
  64. new DynamicManyToManyGrid<JobStyle,Job>(),
  65. new DynamicOneToManyGrid<Job,JobDocumentSetTag>(),
  66. new JobFormDefinitionGrid(),
  67. new DynamicOneToManyGrid<Job, JobProductMapping>(),
  68. });
  69. return pages;
  70. }
  71. protected override Job CreateItem()
  72. {
  73. var result = base.CreateItem();
  74. var defstatus = new Client<JobStatus>().Query(new Filter<JobStatus>(x => x.Default).IsEqualTo(true));
  75. if (defstatus.Rows.Any())
  76. result.JobStatus.ID = defstatus.Rows.First().Get<JobStatus, Guid>(x => x.ID);
  77. return result;
  78. }
  79. protected override Dictionary<string, object?> EditorValueChanged(IDynamicEditorForm editor, Job[] items, string name, object value)
  80. {
  81. var result = base.EditorValueChanged(editor, items, name, value);
  82. if (name.Equals("Customer.ID"))
  83. {
  84. // false here because a customer has a defaultcontact
  85. // and we need to load the lookups before we set the default value
  86. var contact = editor.FindEditor("Contact.ID") as ILookupEditorControl;
  87. if (contact != null)
  88. DefineLookups(contact,items,false);
  89. }
  90. return result;
  91. }
  92. }
  93. }