using System.Linq; using Comal.Classes; using InABox.Core; using System; namespace Comal.Stores { internal class RequisitionItemStore : BaseStore { private void UpdateTrackingKanban(RequisitionItem entity) { if (entity.RequisitionLink.ID == Guid.Empty) return; var requi = new Requisition { Filled = entity.RequisitionLink.Filled, Archived = entity.RequisitionLink.Archived }.SetID(entity.RequisitionLink.ID); UpdateTrackingKanban(requi, r => { if (!r.Archived.Equals(DateTime.MinValue)) return KanbanStatus.Complete; if (!r.Filled.Equals(DateTime.MinValue)) return KanbanStatus.Waiting; if (Provider.Query( new Filter(x => x.RequisitionLink.ID).IsEqualTo(r.ID) .And(x=>x.Done).IsEqualTo(true), Columns.None().Add(x => x.ID) ).Rows.Any() ) return KanbanStatus.InProgress; return KanbanStatus.Open; }); } protected override void AfterSave(RequisitionItem entity) { base.AfterSave(entity); UpdateTrackingKanban(entity); } protected override void AfterDelete(RequisitionItem entity) { base.AfterDelete(entity); UpdateTrackingKanban(entity); } } }