| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- using Comal.Classes;
- using InABox.Core;
- namespace Comal.Stores;
- public class JobScopeStore : BaseStore<JobScope>
- {
- protected override void BeforeSave(JobScope entity)
- {
- base.BeforeSave(entity);
- if (entity.ID == Guid.Empty)
- {
- var filter = entity.Type == JobScopeType.Contract
- ? Filter<JobScopeStatus>.Where(x => x.ContractDefault).IsEqualTo(true)
- : entity.Type == JobScopeType.Variation
- ? Filter<JobScopeStatus>.Where(x => x.VariationDefault).IsEqualTo(true)
- : Filter<JobScopeStatus>.Where(x => x.AdjustmentDefault).IsEqualTo(true);
- var status = Provider.Query(filter,Columns.Required<JobScopeStatus>()).Rows.FirstOrDefault()?.ToObject<JobScopeStatus>();
- if (status != null)
- entity.Status.CopyFrom(status);
-
- var tax = Provider.Query(
- Filter<TaxCode>.Where(x => x.Default).IsEqualTo(true)
- ).Rows.FirstOrDefault()?.ToObject<TaxCode>();
- if (tax != null)
- entity.TaxCode.CopyFrom(tax);
- }
- }
-
- protected override void AfterSave(IEnumerable<JobScope> entities)
- {
- var _entities = entities as JobScope[] ?? entities.ToArray();
-
- base.AfterSave(_entities);
-
- var _activities = Provider.Query(Filter<Activity>.Where(x=>x.IsJobActity).IsEqualTo(true), Columns.None<Activity>().Add(x=>x.ID))
- .Rows.Select(row =>
- {
- return _entities.Where(x=>x.HasOriginalValue(e=>e.ID)).Select(e =>
- {
- var _result = new JobScopeActivity();
- _result.Job.ID = e.Job.ID;
- _result.Scope.ID = e.ID;
- _result.Activity.ID = row.Get<Activity, Guid>(x => x.ID);
- return _result;
- });
- });
- Provider.Save(_activities.SelectMany(x=>x));
-
- var _costCentres = Provider.Query(Filter<CostCentre>.Where(x => x.IsJobCostCentre).IsEqualTo(true),
- Columns.None<CostCentre>().Add(x => x.ID))
- .Rows.Select(row =>
- {
- return _entities.Where(x=>x.HasOriginalValue(e=>e.ID)).Select(e =>
- {
- var _result = new JobScopeCostCentre();
- _result.Job.ID = e.Job.ID;
- _result.Scope.ID = e.ID;
- _result.CostCentre.ID = row.Get<GLCode, Guid>(x => x.ID);
- return _result;
- });
- });
- Provider.Save(_costCentres.SelectMany(x=>x));
- }
- }
|