using System; using System.Linq; using Comal.Classes; using InABox.Core; namespace Comal.Stores { internal class JobStatusStore : BaseStore { protected override void BeforeSave(JobStatus entity) { base.BeforeSave(entity); var otherrows = Provider.Query(new Filter(x => x.Default).IsEqualTo(true)); if (entity.Default) { if (otherrows.Rows.Any()) { var others = otherrows.Rows.Select(x => x.ToObject()).ToArray(); foreach (var other in others) other.Default = false; Provider.Save(others); } } else { if (!otherrows.Rows.Any()) entity.Default = true; } } } public class JobStore : ScheduleActionStore { protected override void BeforeSave(Job entity) { base.BeforeSave(entity); if (!entity.Account.IsValid() && entity.Customer.IsValid()) { Customer final = null; var customer = Provider.Load(new Filter(x => x.ID).IsEqualTo(entity.Customer.ID)).FirstOrDefault(); if (customer != null) { final = customer; if (customer.Account.IsValid()) { var account = Provider.Load(new Filter(x => x.ID).IsEqualTo(customer.Account.ID)).FirstOrDefault(); if (account != null) final = account; } } entity.Account.Synchronise(final); } StoreUtils.Geocode(entity.SiteAddress); } protected override void AfterSave(Job entity) { base.AfterSave(entity); //Setout[] setouts = FindSubStore().Load(new Filter(x => x.JobLink.ID).IsEqualTo(entity.ID)); //for (int i=0; i< setouts.Length; i++) //{ // Setout setout = setouts[i]; // if ((entity.Name != setout.JobLink.Name) || (entity.Number != setout.JobLink.Number)) // { // setout.JobLink.Name = entity.Name; // setout.JobLink.Number = entity.Number; // FindSubStore().Save(ref setout, "Updated Job Number/Name"); // } //} //Requisition[] requis = FindSubStore().Load(new Filter(x => x.JobLink.ID).IsEqualTo(entity.ID)); //for (int i = 0; i < requis.Length; i++) //{ // Requisition requi = requis[i]; // if ((entity.Name != requi.JobLink.Name) || (entity.Number != requi.JobLink.Number)) // { // requi.JobLink.Name = entity.Name; // requi.JobLink.Number = entity.Number; // FindSubStore().Save(ref requi, "Updated Job Number/Name"); // } //} //Kanban[] kanbans = FindSubStore().Load(new Filter(x => x.JobID).IsEqualTo(entity.ID)); //for (int i = 0; i < kanbans.Length; i++) //{ // Kanban kanban = kanbans[i]; // if ((entity.Name != kanban.JobLink.Name) || (entity.Number != kanban.JobLink.Number)) // { // kanban.JobLink.Name = entity.Name; // kanban.JobLink.Number = entity.Number; // FindSubStore().Save(ref kanban, "Updated Job Number/Name"); // } //} //DeliveryItem[] items = FindSubStore().Load(new Filter(x => x.JobLink.ID).IsEqualTo(entity.ID)); //for (int i = 0; i < items.Length; i++) //{ // DeliveryItem item = items[i]; // if ((entity.Name != item.JobLink.Name) || (entity.Number != item.JobLink.Number)) // { // item.JobLink.Name = entity.Name; // item.JobLink.Number = entity.Number; // FindSubStore().Save(ref item, "Updated Job Number/Name"); // } //} } protected override void AfterDelete(Job entity) { base.AfterDelete(entity); var setoutstore = FindSubStore(); var setouts = setoutstore.Load(new Filter(x => x.JobLink.ID).IsEqualTo(entity.ID)); foreach (var setout in setouts) setoutstore.Delete(setout, "Cascaded Delete from Job"); } } }