JobRequisitionItemPurchaseOrderItem.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using InABox.Core;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. namespace Comal.Classes
  7. {
  8. public class JobRequisitionItemPurchaseOrderItem : Entity, IRemotable, IPersistent, IOneToMany<JobRequisitionItem>, ILicense<ProjectManagementLicense>
  9. {
  10. [NullEditor]
  11. [EntityRelationship(DeleteAction.Cascade)]
  12. public JobRequisitionItemLink JobRequisitionItem { get; set; }
  13. private class PurchaseOrderItemLookup : LookupDefinitionGenerator<PurchaseOrderItem, JobRequisitionItemPurchaseOrderItem>
  14. {
  15. public override Filter<PurchaseOrderItem>? DefineFilter(JobRequisitionItemPurchaseOrderItem[] items)
  16. {
  17. var jobs = items.Select(x => x.JobRequisitionItem.Job.ID).Distinct().ToArray();
  18. var products = items.Select(x => x.JobRequisitionItem.Product.ID).Distinct().ToArray();
  19. if(jobs.Length == 1 && products.Length == 1)
  20. {
  21. return new Filter<PurchaseOrderItem>(x => x.Job.ID).IsEqualTo(jobs.First())
  22. .And(x => x.Product.ID).IsEqualTo(products.First());
  23. }
  24. {
  25. return new Filter<PurchaseOrderItem>().None();
  26. }
  27. }
  28. public override Columns<JobRequisitionItemPurchaseOrderItem> DefineFilterColumns()
  29. => Columns.None<JobRequisitionItemPurchaseOrderItem>().Add(x => x.JobRequisitionItem.Job.ID)
  30. .Add(x => x.JobRequisitionItem.Product.ID);
  31. }
  32. [LookupDefinition(typeof(PurchaseOrderItemLookup))]
  33. [EntityRelationship(DeleteAction.Cascade)]
  34. public PurchaseOrderItemLink PurchaseOrderItem { get; set; }
  35. }
  36. }