| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- using Comal.Classes;
- using InABox.Core;
- namespace Comal.Stores;
- public class CostCentreStore : BaseStore<CostCentre>
- {
- private void UpdateJobScopeCostCentres(IEnumerable<CostCentre> entities)
- {
- var _entities = entities as CostCentre[] ?? entities.ToArray();
-
- var _adds = _entities
- .Where(x => x.HasOriginalValue(x => x.IsJobCostCentre))
- .Where(x => x.IsJobCostCentre).ToArray();
- if (_adds.Any())
- {
- var _new = Provider.Query(
- Filter<JobScope>.Where(x => x.ID).NotInQuery(Filter<JobScopeCostCentre>.Where(x => x.CostCentre.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 _entities.Select(e =>
- {
- var _insert = new JobScopeCostCentre();
- _insert.Job.ID = r.Get<JobScope, Guid>(x => x.ID);
- _insert.Scope.ID = r.Get<JobScope, Guid>(x => x.ID);
- _insert.CostCentre.ID = e.ID;
- return _insert;
- });
- }).SelectMany(x=>x).ToArray();
- Provider.Save(_new);
- }
-
- var _removes = _entities
- .Where(x => x.HasOriginalValue(x => x.IsJobCostCentre))
- .Where(x => !x.IsJobCostCentre).ToArray();
- if (_removes.Any())
- {
- var _deletes = Provider.Query(
- Filter<JobScopeCostCentre>.Where(x => x.CostCentre.ID).InList(_removes.Select(x => x.ID).ToArray())
- .And(x => x.Cost).IsEqualTo(0.0F)
- .And(x=>x.Sell).IsEqualTo(0.0F),
- Columns.None<JobScopeCostCentre>().Add(x => x.ID)
- ).ToArray<JobScopeCostCentre>();
- Provider.Delete(_deletes,this.UserID);
- }
-
- }
-
- protected override void AfterSave(IEnumerable<CostCentre> entities)
- {
- base.AfterSave(entities);
- UpdateJobScopeCostCentres(entities);
- }
-
- }
|