using Comal.Classes; using InABox.Core; namespace Comal.Stores { public class ActivityStore : BaseStore { private void UpdateJobScopeActivities(IEnumerable entities) { var _activities = entities as Activity[] ?? entities.ToArray(); var _adds = _activities .Where(x => x.HasOriginalValue(x => x.IsJobActity)) .Where(x => x.IsJobActity).ToArray(); if (_adds.Any()) { var _new = Provider.Query( Filter.Where(x => x.ID).NotInQuery(Filter.Where(x => x.Activity.ID).InList(_adds.Select(x=>x.ID).ToArray()), x => x.Scope.ID), Columns.None().Add(x => x.ID).Add(x=>x.Job.ID) ).Rows.Select(r => { return _activities.Select(e => { var _insert = new JobScopeActivity(); _insert.Job.ID = r.Get(x => x.ID); _insert.Scope.ID = r.Get(x => x.ID); _insert.Activity.ID = e.ID; return _insert; }); }).SelectMany(x=>x).ToArray(); Provider.Save(_new); } var _removes = _activities .Where(x => x.HasOriginalValue(x => x.IsJobActity)) .Where(x => !x.IsJobActity).ToArray(); if (_removes.Any()) { var _deletes = Provider.Query( Filter.Where(x => x.Activity.ID).InList(_removes.Select(x => x.ID).ToArray()) .And(x => x.Hours).IsEqualTo(TimeSpan.Zero), Columns.None().Add(x => x.ID) ).ToArray(); Provider.Delete(_deletes,this.UserID); } } protected override void AfterSave(IEnumerable entities) { base.AfterSave(entities); UpdateJobScopeActivities(entities); } } }