JobGrid.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. using System;
  2. using System.Linq;
  3. using Comal.Classes;
  4. using InABox.Clients;
  5. using InABox.Core;
  6. using InABox.DynamicGrid;
  7. namespace PRSDesktop
  8. {
  9. public class JobGrid : DynamicDataGrid<Job>
  10. {
  11. private Guid _statusid = Guid.Empty;
  12. public JobGrid()
  13. {
  14. HiddenColumns.Add(x => x.ID);
  15. HiddenColumns.Add(x => x.JobNumber);
  16. HiddenColumns.Add(x => x.Name);
  17. HiddenColumns.Add(x => x.Customer.ID);
  18. HiddenColumns.Add(x => x.Customer.Code);
  19. HiddenColumns.Add(x => x.Customer.Name);
  20. HiddenColumns.Add(x => x.SiteAddress.Street);
  21. HiddenColumns.Add(x => x.SiteAddress.City);
  22. HiddenColumns.Add(x => x.SiteAddress.State);
  23. HiddenColumns.Add(x => x.SiteAddress.PostCode);
  24. HiddenColumns.Add(x => x.Account.ID);
  25. HiddenColumns.Add(x => x.Account.Code);
  26. HiddenColumns.Add(x => x.Account.Name);
  27. HiddenColumns.Add(x => x.Notes);
  28. HiddenColumns.Add(x => x.JobStatus.ID);
  29. HiddenColumns.Add(x => x.JobStatus.Active);
  30. HiddenColumns.Add(x => x.DefaultScope.ID);
  31. ActionColumns.Add(new DynamicMapColumn<Job>(this, x => x.SiteAddress.Location));
  32. }
  33. protected override void DoReconfigure(FluentList<DynamicGridOption> options)
  34. {
  35. base.DoReconfigure(options);
  36. options.AddRange(
  37. DynamicGridOption.RecordCount,
  38. DynamicGridOption.SelectColumns,
  39. DynamicGridOption.FilterRows
  40. );
  41. }
  42. public Guid StatusID
  43. {
  44. get => _statusid;
  45. set
  46. {
  47. _statusid = value;
  48. Refresh(false, true);
  49. }
  50. }
  51. protected override void Reload(Filters<Job> criteria, Columns<Job> columns, ref SortOrder<Job> sort, Action<CoreTable, Exception> action)
  52. {
  53. if (_statusid != Guid.Empty)
  54. criteria.Add(new Filter<Job>(x => x.JobStatus.ID).IsEqualTo(_statusid));
  55. sort = new SortOrder<Job>(x => x.JobNumber, SortDirection.Descending);
  56. base.Reload(criteria, columns, ref sort, action);
  57. }
  58. public override DynamicEditorPages LoadEditorPages(Job item)
  59. {
  60. var pages = new DynamicEditorPages(new IDynamicEditorPage[]
  61. {
  62. new DynamicManyToManyGrid<JobDocument,Job>(),
  63. new DynamicManyToManyGrid<JobStyle,Job>(),
  64. new DynamicOneToManyGrid<Job,JobDocumentSetTag>(),
  65. new JobFormDefinitionGrid(),
  66. new DynamicOneToManyGrid<Job, JobProductMapping>(),
  67. });
  68. return pages;
  69. }
  70. protected override Job CreateItem()
  71. {
  72. var result = base.CreateItem();
  73. var defstatus = new Client<JobStatus>().Query(new Filter<JobStatus>(x => x.Default).IsEqualTo(true));
  74. if (defstatus.Rows.Any())
  75. result.JobStatus.ID = defstatus.Rows.First().Get<JobStatus, Guid>(x => x.ID);
  76. return result;
  77. }
  78. }
  79. }