ActivityStore.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using Comal.Classes;
  2. using InABox.Core;
  3. namespace Comal.Stores
  4. {
  5. public class ActivityStore : BaseStore<Activity>
  6. {
  7. private void UpdateJobScopeActivities(IEnumerable<Activity> entities)
  8. {
  9. var _activities = entities as Activity[] ?? entities.ToArray();
  10. var _adds = _activities
  11. .Where(x => x.HasOriginalValue(x => x.IsJobActity))
  12. .Where(x => x.IsJobActity).ToArray();
  13. if (_adds.Any())
  14. {
  15. var _new = Provider.Query(
  16. 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),
  17. Columns.None<JobScope>().Add(x => x.ID).Add(x=>x.Job.ID)
  18. ).Rows.Select(r =>
  19. {
  20. return _activities.Select(e =>
  21. {
  22. var _insert = new JobScopeActivity();
  23. _insert.Job.ID = r.Get<JobScope, Guid>(x => x.ID);
  24. _insert.Scope.ID = r.Get<JobScope, Guid>(x => x.ID);
  25. _insert.Activity.ID = e.ID;
  26. return _insert;
  27. });
  28. }).SelectMany(x=>x).ToArray();
  29. Provider.Save(_new);
  30. }
  31. var _removes = _activities
  32. .Where(x => x.HasOriginalValue(x => x.IsJobActity))
  33. .Where(x => !x.IsJobActity).ToArray();
  34. if (_removes.Any())
  35. {
  36. var _deletes = Provider.Query(
  37. Filter<JobScopeActivity>.Where(x => x.Activity.ID).InList(_removes.Select(x => x.ID).ToArray())
  38. .And(x => x.Hours).IsEqualTo(TimeSpan.Zero),
  39. Columns.None<JobScopeActivity>().Add(x => x.ID)
  40. ).ToArray<JobScopeActivity>();
  41. Provider.Delete(_deletes,this.UserID);
  42. }
  43. }
  44. protected override void AfterSave(IEnumerable<Activity> entities)
  45. {
  46. base.AfterSave(entities);
  47. UpdateJobScopeActivities(entities);
  48. }
  49. }
  50. }