| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- using Comal.Classes;
- using InABox.Core;
- namespace Comal.Stores
- {
- public class ActivityStore : BaseStore<Activity>
- {
- private void UpdateJobScopeActivities(IEnumerable<Activity> 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<JobScope>.Where(x => x.ID).NotInQuery(Filter<JobScopeActivity>.Where(x => x.Activity.ID).InList(_adds.Select(x=>x.ID).ToArray()), x => x.Scope.ID),
- Columns.None<JobScope>().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<JobScope, Guid>(x => x.ID);
- _insert.Scope.ID = r.Get<JobScope, Guid>(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<JobScopeActivity>.Where(x => x.Activity.ID).InList(_removes.Select(x => x.ID).ToArray())
- .And(x => x.Hours).IsEqualTo(TimeSpan.Zero),
- Columns.None<JobScopeActivity>().Add(x => x.ID)
- ).ToArray<JobScopeActivity>();
- Provider.Delete(_deletes,this.UserID);
- }
-
- }
-
- protected override void AfterSave(IEnumerable<Activity> entities)
- {
- base.AfterSave(entities);
- UpdateJobScopeActivities(entities);
- }
-
- }
- }
|