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