RequisitionItemStore.cs 1.4 KB

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