using System; using Comal.Classes; using InABox.Core; namespace Comal.Stores { public class SchedulableStore : BaseStore where T : Entity, ISchedulable, new() { public Type DocumentType => typeof(T); //.Name; private Schedule[] GetSchedules(Guid id) { var store = FindSubStore(); return store.Load( new Filter(x => x.DocumentClass).IsEqualTo(DocumentType.EntityName()) .And(x => x.DocumentID).IsEqualTo(id) ); } //protected override void BeforeSave(T entity) //{ // base.BeforeSave(entity); // Schedule schedule = GetSchedule(entity.ID); // if (schedule != null) // entity.ScheduleEnabled = schedule.Enabled; //} //protected override void AfterSave(T entity) //{ // base.AfterSave(entity); // Schedule schedule = GetSchedule(entity.ID); // if (schedule == null) // { // schedule = new Schedule(); // schedule.DocumentID = entity.ID; // schedule.DocumentType = DocumentType; // FindSubStore().Save(ref schedule, "Updated from Master Record"); // } //} protected override void BeforeDelete(T entity) { var schedules = GetSchedules(entity.ID); foreach (var schedule in schedules) FindSubStore().Delete(schedule, "Updated from Master Record"); base.BeforeDelete(entity); } } }