ScheduleActionStore.cs 1.1 KB

1234567891011121314151617181920212223242526272829
  1. using System.Linq;
  2. using Comal.Classes;
  3. using InABox.Core;
  4. using System;
  5. namespace Comal.Stores
  6. {
  7. public class ScheduleActionStore<T> : BaseStore<T> where T : Entity, IScheduleAction, new()
  8. {
  9. protected override void AfterSave(T entity)
  10. {
  11. base.AfterSave(entity);
  12. if (entity.HasOriginalValue(x => x.Completed) && !entity.Completed.Equals(DateTime.MinValue) &&
  13. entity.ScheduleLink.IsValid() &&
  14. entity.ScheduleLink.Rollover == ScheduleRollover.FromActualDate)
  15. {
  16. var schedulestore = FindSubStore<Schedule>();
  17. var schedule = schedulestore.Query(
  18. new Filter<Schedule>(x => x.ID).IsEqualTo(entity.ScheduleLink.ID),
  19. null).ToObjects<Schedule>().FirstOrDefault();
  20. if (schedule != null)
  21. {
  22. schedule.DueDate = schedule.GetNextDate(entity.Completed);
  23. schedulestore.Save(schedule, "Updated by Task AfterSave()");
  24. }
  25. }
  26. }
  27. }
  28. }