RequisitionItemStore.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using System.Linq;
  2. using Comal.Classes;
  3. using InABox.Core;
  4. using System;
  5. namespace Comal.Stores
  6. {
  7. internal class RequisitionItemStore : BaseStore<RequisitionItem>
  8. {
  9. private void UpdateTrackingKanban(RequisitionItem entity)
  10. {
  11. if (entity.RequisitionLink.ID == Guid.Empty)
  12. return;
  13. var requi = new Requisition
  14. { ID = entity.RequisitionLink.ID, Filled = entity.RequisitionLink.Filled, Archived = entity.RequisitionLink.Archived };
  15. UpdateTrackingKanban<RequisitionKanban, Requisition, RequisitionLink>(requi, r =>
  16. {
  17. if (!r.Archived.Equals(DateTime.MinValue))
  18. return KanbanStatus.Complete;
  19. if (!r.Filled.Equals(DateTime.MinValue))
  20. return KanbanStatus.Waiting;
  21. if (Provider.Query(
  22. new Filter<RequisitionItem>(x => x.RequisitionLink.ID).IsEqualTo(r.ID)
  23. .And(x=>x.Done).IsEqualTo(true),
  24. Columns.None<RequisitionItem>().Add(x => x.ID)
  25. ).Rows.Any()
  26. )
  27. return KanbanStatus.InProgress;
  28. return KanbanStatus.Open;
  29. });
  30. }
  31. protected override void AfterSave(RequisitionItem entity)
  32. {
  33. base.AfterSave(entity);
  34. UpdateTrackingKanban(entity);
  35. }
  36. protected override void AfterDelete(RequisitionItem entity)
  37. {
  38. base.AfterDelete(entity);
  39. UpdateTrackingKanban(entity);
  40. }
  41. }
  42. }