JobScopeStore.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using Comal.Classes;
  2. using InABox.Core;
  3. namespace Comal.Stores;
  4. public class JobScopeStore : BaseStore<JobScope>
  5. {
  6. protected override void BeforeSave(JobScope entity)
  7. {
  8. base.BeforeSave(entity);
  9. if (entity.ID == Guid.Empty)
  10. {
  11. var filter = entity.Type == JobScopeType.Contract
  12. ? Filter<JobScopeStatus>.Where(x => x.ContractDefault).IsEqualTo(true)
  13. : entity.Type == JobScopeType.Variation
  14. ? Filter<JobScopeStatus>.Where(x => x.VariationDefault).IsEqualTo(true)
  15. : Filter<JobScopeStatus>.Where(x => x.AdjustmentDefault).IsEqualTo(true);
  16. var status = Provider.Query(filter,Columns.Required<JobScopeStatus>()).Rows.FirstOrDefault()?.ToObject<JobScopeStatus>();
  17. if (status != null)
  18. entity.Status.CopyFrom(status);
  19. var tax = Provider.Query(
  20. Filter<TaxCode>.Where(x => x.Default).IsEqualTo(true)
  21. ).Rows.FirstOrDefault()?.ToObject<TaxCode>();
  22. if (tax != null)
  23. entity.TaxCode.CopyFrom(tax);
  24. }
  25. }
  26. protected override void AfterSave(IEnumerable<JobScope> entities)
  27. {
  28. var _entities = entities as JobScope[] ?? entities.ToArray();
  29. base.AfterSave(_entities);
  30. var _activities = Provider.Query(Filter<Activity>.Where(x=>x.IsJobActity).IsEqualTo(true), Columns.None<Activity>().Add(x=>x.ID))
  31. .Rows.Select(row =>
  32. {
  33. return _entities.Where(x=>x.HasOriginalValue(e=>e.ID)).Select(e =>
  34. {
  35. var _result = new JobScopeActivity();
  36. _result.Job.ID = e.Job.ID;
  37. _result.Scope.ID = e.ID;
  38. _result.Activity.ID = row.Get<Activity, Guid>(x => x.ID);
  39. return _result;
  40. });
  41. });
  42. Provider.Save(_activities.SelectMany(x=>x));
  43. var _costCentres = Provider.Query(Filter<CostCentre>.Where(x => x.IsJobCostCentre).IsEqualTo(true),
  44. Columns.None<CostCentre>().Add(x => x.ID))
  45. .Rows.Select(row =>
  46. {
  47. return _entities.Where(x=>x.HasOriginalValue(e=>e.ID)).Select(e =>
  48. {
  49. var _result = new JobScopeCostCentre();
  50. _result.Job.ID = e.Job.ID;
  51. _result.Scope.ID = e.ID;
  52. _result.CostCentre.ID = row.Get<GLCode, Guid>(x => x.ID);
  53. return _result;
  54. });
  55. });
  56. Provider.Save(_costCentres.SelectMany(x=>x));
  57. }
  58. }