RequisitionItemStore.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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. {
  15. Filled = entity.RequisitionLink.Filled, Archived = entity.RequisitionLink.Archived
  16. }.SetID(entity.RequisitionLink.ID);
  17. UpdateTrackingKanban<RequisitionKanban, Requisition, RequisitionLink>(requi, r =>
  18. {
  19. if (!r.Archived.Equals(DateTime.MinValue))
  20. return KanbanStatus.Complete;
  21. if (!r.Filled.Equals(DateTime.MinValue))
  22. return KanbanStatus.Waiting;
  23. if (Provider.Query(
  24. new Filter<RequisitionItem>(x => x.RequisitionLink.ID).IsEqualTo(r.ID)
  25. .And(x=>x.Done).IsEqualTo(true),
  26. Columns.None<RequisitionItem>().Add(x => x.ID)
  27. ).Rows.Any()
  28. )
  29. return KanbanStatus.InProgress;
  30. return KanbanStatus.Open;
  31. });
  32. }
  33. protected override void AfterSave(RequisitionItem entity)
  34. {
  35. base.AfterSave(entity);
  36. UpdateTrackingKanban(entity);
  37. }
  38. protected override void AfterDelete(RequisitionItem entity)
  39. {
  40. base.AfterDelete(entity);
  41. UpdateTrackingKanban(entity);
  42. }
  43. }
  44. }