JobStageStore.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System;
  2. using System.Linq;
  3. using Comal.Classes;
  4. using InABox.Core;
  5. namespace Comal.Stores
  6. {
  7. internal class JobStageStore : BaseStore<JobStage>
  8. {
  9. private void CheckParentDates(JobStage stage)
  10. {
  11. if (stage.Parent.IsValid())
  12. {
  13. var parent = Load(new Filter<JobStage>(x => x.ID).IsEqualTo(stage.Parent.ID)).FirstOrDefault();
  14. if (parent != null)
  15. {
  16. var start = DateTime.MaxValue;
  17. var finish = DateTime.MinValue;
  18. var children = Load(new Filter<JobStage>(x => x.Parent.ID).IsEqualTo(stage.Parent.ID));
  19. if (children.Any())
  20. {
  21. foreach (var child in children)
  22. {
  23. start = start > child.StartDate ? child.StartDate : start;
  24. finish = finish < child.EndDate ? child.EndDate : finish;
  25. }
  26. parent.IsHeader = true;
  27. }
  28. else
  29. {
  30. start = stage.StartDate;
  31. finish = stage.EndDate;
  32. parent.IsHeader = false;
  33. }
  34. parent.StartDate = start;
  35. parent.EndDate = finish;
  36. if (parent.IsChanged())
  37. {
  38. Save(parent, "");
  39. CheckParentDates(parent);
  40. }
  41. }
  42. }
  43. }
  44. protected override void AfterSave(JobStage entity)
  45. {
  46. base.AfterSave(entity);
  47. //CheckParentDates(entity);
  48. }
  49. protected override void AfterDelete(JobStage entity)
  50. {
  51. base.AfterDelete(entity);
  52. //CheckParentDates(entity);
  53. }
  54. }
  55. }