JobScopeLookups.cs 4.7 KB

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