JobScopeLookups.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. using System.Linq;
  2. using InABox.Core;
  3. namespace Comal.Classes
  4. {
  5. public class JobScopeLookups : EntityLookup<JobScope>,
  6. ILookupDefinition<JobScope, InvoiceLine>,
  7. ILookupDefinition<JobScope, Job>,
  8. ILookupDefinition<JobScope, StagingSetout>,
  9. ILookupDefinition<JobScope, Assignment>,
  10. ILookupDefinition<JobScope, Kanban>,
  11. ILookupDefinition<JobScope, RequisitionItem>,
  12. ILookupDefinition<JobScope, JobForm>,
  13. ILookupDefinition<JobScope, Requisition>
  14. {
  15. #region Invoice Lines
  16. public Filter<JobScope> DefineFilter(InvoiceLine[] items)
  17. {
  18. if (items == null)
  19. return new Filter<JobScope>(x => x.ID).IsEqualTo(CoreUtils.FullGuid);
  20. var jobid = CoreUtils.FullGuid;
  21. foreach (var item in items)
  22. {
  23. if (jobid == CoreUtils.FullGuid)
  24. jobid = item.InvoiceLink.JobLink.ID;
  25. if (item.InvoiceLink.JobLink.ID != jobid)
  26. return new Filter<JobScope>(x => x.ID).IsEqualTo(CoreUtils.FullGuid);
  27. }
  28. return new Filter<JobScope>(x => x.Job.ID).IsEqualTo(jobid).And(x => x.Status.Approved).IsEqualTo(true);
  29. }
  30. Columns<InvoiceLine> ILookupDefinition<JobScope, InvoiceLine>.DefineFilterColumns()
  31. => new Columns<InvoiceLine>(x => x.InvoiceLink.JobLink.ID);
  32. #endregion
  33. #region Assignments
  34. public Filter<JobScope> DefineFilter(Assignment[] items)
  35. {
  36. var item = items?.Length == 1 ? items[0] : null;
  37. if (item != null)
  38. return new Filter<JobScope>(x => x.Job.ID).IsEqualTo(item.JobLink.ID).And(x => x.Status.Approved).IsEqualTo(true);
  39. return new Filter<JobScope>(x => x.ID).None();
  40. }
  41. Columns<Assignment> ILookupDefinition<JobScope, Assignment>.DefineFilterColumns()
  42. => new Columns<Assignment>(x=>x.JobLink.ID);
  43. #endregion
  44. #region Jobs (Default Scope)
  45. public Filter<JobScope> DefineFilter(Job[] items)
  46. {
  47. var item = items?.Length == 1 ? items[0] : null;
  48. if (item != null)
  49. return new Filter<JobScope>(x => x.Job.ID).IsEqualTo(item.ID).And(x => x.Status.Approved).IsEqualTo(true);
  50. return new Filter<JobScope>(x => x.ID).None();
  51. }
  52. Columns<Job> ILookupDefinition<JobScope, Job>.DefineFilterColumns()
  53. => new Columns<Job>(x=>x.ID);
  54. #endregion
  55. #region StagingSetout
  56. public Filter<JobScope> DefineFilter(StagingSetout[] items)
  57. {
  58. var item = items?.Length == 1 ? items[0] : null;
  59. if (item != null)
  60. return new Filter<JobScope>(x => x.Job.ID).IsEqualTo(item.JobLink.ID).And(x => x.Status.Approved).IsEqualTo(true);
  61. return new Filter<JobScope>(x => x.ID).None();
  62. }
  63. Columns<StagingSetout> ILookupDefinition<JobScope, StagingSetout>.DefineFilterColumns()
  64. => new Columns<StagingSetout>(x=>x.JobLink.ID);
  65. #endregion
  66. #region RequisitionItem
  67. public Filter<JobScope> DefineFilter(RequisitionItem[] items)
  68. {
  69. var item = items?.Length == 1 ? items[0] : null;
  70. if (item != null)
  71. return new Filter<JobScope>(x => x.Job.ID).IsEqualTo(item.RequisitionLink.JobLink.ID).And(x => x.Status.Approved).IsEqualTo(true);
  72. return new Filter<JobScope>(x => x.ID).None();
  73. }
  74. Columns<RequisitionItem> ILookupDefinition<JobScope, RequisitionItem>.DefineFilterColumns()
  75. => new Columns<RequisitionItem>(x=>x.RequisitionLink.JobLink.ID);
  76. #endregion
  77. #region Requisition
  78. public Filter<JobScope> DefineFilter(Requisition[] items)
  79. {
  80. var item = items?.Length == 1 ? items[0] : null;
  81. if (item != null)
  82. return new Filter<JobScope>(x => x.Job.ID).IsEqualTo(item.JobLink.ID).And(x => x.Status.Approved).IsEqualTo(true);
  83. return new Filter<JobScope>(x => x.ID).None();
  84. }
  85. Columns<Requisition> ILookupDefinition<JobScope, Requisition>.DefineFilterColumns()
  86. => new Columns<Requisition>(x=>x.JobLink.ID);
  87. #endregion
  88. #region Kanban
  89. public Filter<JobScope> DefineFilter(Kanban[] items)
  90. {
  91. var item = items?.Length == 1 ? items[0] : null;
  92. if (item != null)
  93. return new Filter<JobScope>(x => x.Job.ID).IsEqualTo(item.JobLink.ID).And(x => x.Status.Approved).IsEqualTo(true);
  94. return new Filter<JobScope>(x => x.ID).None();
  95. }
  96. Columns<Kanban> ILookupDefinition<JobScope, Kanban>.DefineFilterColumns()
  97. => new Columns<Kanban>(x => x.JobLink.ID);
  98. #endregion
  99. #region JobForm
  100. public Filter<JobScope> DefineFilter(JobForm[] items)
  101. {
  102. var item = items?.Length == 1 ? items[0] : null;
  103. if (item != null)
  104. return new Filter<JobScope>(x => x.Job.ID).IsEqualTo(item.Parent.ID).And(x => x.Status.Approved).IsEqualTo(true);
  105. return new Filter<JobScope>(x => x.ID).None();
  106. }
  107. Columns<JobForm> ILookupDefinition<JobScope, JobForm>.DefineFilterColumns()
  108. => new Columns<JobForm>(x => x.Parent.ID);
  109. #endregion
  110. public override Columns<JobScope> DefineColumns()
  111. {
  112. return new Columns<JobScope>().Default();
  113. }
  114. public override Filter<JobScope> DefineFilter()
  115. {
  116. return new Filter<JobScope>(x => x.ID).IsEqualTo(CoreUtils.FullGuid);
  117. }
  118. public override SortOrder<JobScope> DefineSortOrder()
  119. {
  120. return new SortOrder<JobScope>(x => x.Number);
  121. }
  122. }
  123. }