| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | using System.Linq;using Comal.Classes;using InABox.Core;using System;namespace Comal.Stores{    internal class JobStageStore : BaseStore<JobStage>    {        private void CheckParentDates(JobStage stage)        {            if (stage.Parent.IsValid())            {                var parent = Query(new Filter<JobStage>(x => x.ID).IsEqualTo(stage.Parent.ID), null).ToObjects<JobStage>().FirstOrDefault();                if (parent != null)                {                    var start = DateTime.MaxValue;                    var finish = DateTime.MinValue;                    var children = Query(new Filter<JobStage>(x => x.Parent.ID).IsEqualTo(stage.Parent.ID), null).ToObjects<JobStage>();                    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);        }    }}
 |