JobRequisitionItemPurchaseOrderItem.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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 PurchaseOrderItemAllocation : Entity, IRemotable, IPersistent, ILicense<ProjectManagementLicense>
  9. {
  10. public PurchaseOrderItemLink Item { get; set; }
  11. public JobLink Job { get; set; }
  12. public JobRequisitionItemLink JobRequisitionItem { get; set; }
  13. public double Quantity { get; set; }
  14. }
  15. public class JobRequisitionItemPurchaseOrderItem : Entity, IRemotable, IPersistent, IOneToMany<JobRequisitionItem>, ILicense<ProjectManagementLicense>
  16. {
  17. [NullEditor]
  18. [EntityRelationship(DeleteAction.Cascade)]
  19. public JobRequisitionItemLink JobRequisitionItem { get; set; }
  20. private class PurchaseOrderItemLookup : LookupDefinitionGenerator<PurchaseOrderItem, JobRequisitionItemPurchaseOrderItem>
  21. {
  22. public override Filter<PurchaseOrderItem>? DefineFilter(JobRequisitionItemPurchaseOrderItem[] items)
  23. {
  24. var jobs = items.Select(x => x.JobRequisitionItem.Job.ID).Distinct().ToArray();
  25. var products = items.Select(x => x.JobRequisitionItem.Product.ID).Distinct().ToArray();
  26. if(jobs.Length == 1 && products.Length == 1)
  27. {
  28. return new Filter<PurchaseOrderItem>(x => x.Job.ID).IsEqualTo(jobs.First())
  29. .And(x => x.Product.ID).IsEqualTo(products.First());
  30. }
  31. {
  32. return new Filter<PurchaseOrderItem>().None();
  33. }
  34. }
  35. public override Columns<JobRequisitionItemPurchaseOrderItem> DefineFilterColumns()
  36. => Columns.None<JobRequisitionItemPurchaseOrderItem>().Add(x => x.JobRequisitionItem.Job.ID)
  37. .Add(x => x.JobRequisitionItem.Product.ID);
  38. }
  39. [LookupDefinition(typeof(PurchaseOrderItemLookup))]
  40. [EntityRelationship(DeleteAction.Cascade)]
  41. public PurchaseOrderItemLink PurchaseOrderItem { get; set; }
  42. }
  43. }