using System; using System.Linq; using Comal.Classes; using InABox.Core; namespace Comal.Stores { internal class JobStageStore : BaseStore { private void CheckParentDates(JobStage stage) { if (stage.Parent.IsValid()) { var parent = Load(new Filter(x => x.ID).IsEqualTo(stage.Parent.ID)).FirstOrDefault(); if (parent != null) { var start = DateTime.MaxValue; var finish = DateTime.MinValue; var children = Load(new Filter(x => x.Parent.ID).IsEqualTo(stage.Parent.ID)); if (children.Any()) { foreach (var child in children) { start = start > child.StartDate ? child.StartDate : start; finish = finish < child.EndDate ? child.EndDate : finish; } parent.IsHeader = true; } else { start = stage.StartDate; finish = stage.EndDate; parent.IsHeader = false; } parent.StartDate = start; parent.EndDate = finish; if (parent.IsChanged()) { Save(parent, ""); CheckParentDates(parent); } } } } protected override void AfterSave(JobStage entity) { base.AfterSave(entity); //CheckParentDates(entity); } protected override void AfterDelete(JobStage entity) { base.AfterDelete(entity); //CheckParentDates(entity); } } }