JobBillOfMaterialsItemStore.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System;
  2. using System.Linq;
  3. using System.Reactive;
  4. using Comal.Classes;
  5. using InABox.Core;
  6. namespace Comal.Stores
  7. {
  8. public class JobBillOfMaterialsItemStore : BaseStore<JobBillOfMaterialsItem>
  9. {
  10. protected override void BeforeSave(JobBillOfMaterialsItem entity)
  11. {
  12. base.BeforeSave(entity);
  13. EnsureJobMaterials(entity.Product, entity.Job, entity.Style, entity.Dimensions);
  14. }
  15. protected override void AfterSave(JobBillOfMaterialsItem entity)
  16. {
  17. base.AfterSave(entity);
  18. CleanupJobMaterials(entity.ID, entity.Product, entity.Job, entity.Style, entity.Dimensions, false);
  19. }
  20. protected override void AfterDelete(JobBillOfMaterialsItem entity)
  21. {
  22. base.AfterDelete(entity);
  23. var delete = Provider.Query(
  24. new Filter<JobBillOfMaterialsItem>(x => x.ID).IsEqualTo(entity.ID),
  25. new Columns<JobBillOfMaterialsItem>(x => x.ID)
  26. .Add(x => x.Product.ID)
  27. .Add(x => x.Job.ID)
  28. .Add(x => x.Style.ID)
  29. .Add(x => x.Dimensions.Unit.ID)
  30. .Add(x => x.Dimensions.Length)
  31. .Add(x => x.Dimensions.Width)
  32. .Add(x => x.Dimensions.Height)
  33. .Add(x => x.Dimensions.Weight)
  34. ).Rows.FirstOrDefault()?.ToObject<JobBillOfMaterialsItem>();
  35. if (delete != null)
  36. CleanupJobMaterials(delete.ID, delete.Product, delete.Job, delete.Style, delete.Dimensions, true);
  37. }
  38. }
  39. }