SchedulableStore.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using System;
  2. using Comal.Classes;
  3. using InABox.Core;
  4. namespace Comal.Stores
  5. {
  6. public class SchedulableStore<T> : BaseStore<T> where T : Entity, ISchedulable, new()
  7. {
  8. public Type DocumentType => typeof(T); //.Name;
  9. private Schedule[] GetSchedules(Guid id)
  10. {
  11. var store = FindSubStore<Schedule>();
  12. return store.Load(
  13. new Filter<Schedule>(x => x.DocumentClass).IsEqualTo(DocumentType.EntityName())
  14. .And(x => x.DocumentID).IsEqualTo(id)
  15. );
  16. }
  17. //protected override void BeforeSave(T entity)
  18. //{
  19. // base.BeforeSave(entity);
  20. // Schedule schedule = GetSchedule(entity.ID);
  21. // if (schedule != null)
  22. // entity.ScheduleEnabled = schedule.Enabled;
  23. //}
  24. //protected override void AfterSave(T entity)
  25. //{
  26. // base.AfterSave(entity);
  27. // Schedule schedule = GetSchedule(entity.ID);
  28. // if (schedule == null)
  29. // {
  30. // schedule = new Schedule();
  31. // schedule.DocumentID = entity.ID;
  32. // schedule.DocumentType = DocumentType;
  33. // FindSubStore<Schedule>().Save(ref schedule, "Updated from Master Record");
  34. // }
  35. //}
  36. protected override void BeforeDelete(T entity)
  37. {
  38. var schedules = GetSchedules(entity.ID);
  39. foreach (var schedule in schedules)
  40. FindSubStore<Schedule>().Delete(schedule, "Updated from Master Record");
  41. base.BeforeDelete(entity);
  42. }
  43. }
  44. }