123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- using System;
- using System.Linq;
- using Comal.Classes;
- using InABox.Core;
- namespace Comal.Stores
- {
-
- public class StockMovementStore : BaseStore<StockMovement>
- {
- protected override void BeforeSave(StockMovement entity)
- {
- base.BeforeSave(entity);
- EnsureHoldings(entity);
- EnsureJobMaterials(entity.Product, entity.Job, entity.Style, entity.Dimensions);
- }
- protected override void AfterSave(StockMovement entity)
- {
- base.AfterSave(entity);
- CleanupHoldings(entity, false);
- CleanupJobMaterials(entity.ID, entity.Product, entity.Job, entity.Style, entity.Dimensions, true);
- }
- protected override void BeforeDelete(StockMovement entity)
- {
- base.BeforeDelete(entity);
- var delete = Provider.Query(
- new Filter<StockMovement>(x => x.ID).IsEqualTo(entity.ID),
- new Columns<StockMovement>(x => x.ID)
- .Add(x => x.Product.ID)
- .Add(x => x.Location.ID)
- .Add(x => x.Job.ID)
- .Add(x => x.Style.ID)
- .Add(x => x.Dimensions.Unit.ID)
- .Add(x => x.Dimensions.Length)
- .Add(x => x.Dimensions.Width)
- .Add(x => x.Dimensions.Height)
- .Add(x => x.Dimensions.Weight)
- ).Rows.FirstOrDefault()?.ToObject<StockMovement>();
-
- CleanupHoldings(delete, true);
- CleanupJobMaterials(entity.ID, delete.Product, delete.Job, delete.Style, delete.Dimensions, true);
- }
- private void EnsureHoldings(StockMovement entity)
- {
- // var holdings = Provider.List(
- // new Filter<StockHolding>(x => x.Product.ID).IsEqualTo(entity.Product.ID)
- // .And(x => x.Location.ID).IsEqualTo(entity.Location.ID)
- // .And(x => x.Job.ID).IsEqualTo(entity.Job.ID)
- // .And(x => x.Style.ID).IsEqualTo(entity.Style.ID)
- // .And(x => x.Dimensions.Unit.ID).IsEqualTo(entity.Dimensions.Unit.ID)
- // .And(x => x.Dimensions.Length).IsEqualTo(entity.Dimensions.Length)
- // .And(x => x.Dimensions.Width).IsEqualTo(entity.Dimensions.Width)
- // .And(x => x.Dimensions.Height).IsEqualTo(entity.Dimensions.Height)
- // .And(x => x.Dimensions.Weight).IsEqualTo(entity.Dimensions.Weight)
- // ,
- // new Columns<StockHolding>(x => x.ID)
- // );
- // if (!holdings.Any())
- // {
- // var holding = new StockHolding();
- // holding.Product.ID = entity.Product.ID;
- // holding.Location.ID = entity.Location.ID;
- // holding.Job.ID = entity.Job.ID;
- // holding.Style.ID = entity.Style.ID;
- // holding.Dimensions.CopyFrom(entity.Dimensions);
- // Provider.Save(holding);
- // }
- //
- // var jobmaterials = Provider.List(
- // new Filter<JobMaterial>(x => x.Product.ID).IsEqualTo(entity.Product.ID)
- // .And(x => x.Job.ID).IsEqualTo(entity.Job.ID)
- // .And(x => x.Style.ID).IsEqualTo(entity.Style.ID)
- // .And(x => x.Dimensions.Unit.ID).IsEqualTo(entity.Dimensions.Unit.ID)
- // .And(x => x.Dimensions.Length).IsEqualTo(entity.Dimensions.Length)
- // .And(x => x.Dimensions.Width).IsEqualTo(entity.Dimensions.Width)
- // .And(x => x.Dimensions.Height).IsEqualTo(entity.Dimensions.Height)
- // .And(x => x.Dimensions.Weight).IsEqualTo(entity.Dimensions.Weight)
- // ,
- // new Columns<JobMaterial>(x => x.ID)
- // );
- // if (!jobmaterials.Any())
- // {
- // var material = new JobMaterial();
- // material.Product.ID = entity.Product.ID;
- // material.Job.ID = entity.Job.ID;
- // material.Style.ID = entity.Style.ID;
- // material.Dimensions.CopyFrom(entity.Dimensions);
- // Provider.Save(material);
- // }
- }
- private void CleanupHoldings(StockMovement entity, bool delete)
- {
- // var isNew = !delete && entity.HasOriginalValue(x => x.ID) && entity.Product.GetOriginalValue(x => x.ID) == Guid.Empty;
- // if (isNew)
- // return;
- // var hasProduct = !delete && entity.Product.HasOriginalValue(x=>x.ID);
- // var hasLocation = !delete && entity.Location.HasOriginalValue(x=>x.ID);
- // var hasJob = !delete && entity.Job.HasOriginalValue(x=>x.ID);
- // var hasStyle = !delete && entity.Style.HasOriginalValue(x=>x.ID);
- // var hasDimensionUnit = !delete && entity.Dimensions.Unit.HasOriginalValue(x=>x.ID);
- // var hasLength = !delete && entity.Dimensions.HasOriginalValue(x=>x.Length);
- // var hasWidth = !delete && entity.Dimensions.HasOriginalValue(x=>x.Width);
- // var hasHeight = !delete && entity.Dimensions.HasOriginalValue(x=>x.Height);
- // var hasWeight = !delete && entity.Dimensions.HasOriginalValue(x=>x.Weight);
- //
- // if (delete || hasProduct || hasLocation || hasJob || hasStyle || hasDimensionUnit || hasLength || hasWidth || hasHeight || hasWeight)
- // {
- // var product = hasProduct ? entity.Product.GetOriginalValue(x=>x.ID) : entity.Product.ID;
- // var location = hasLocation ? entity.Location.GetOriginalValue(x=>x.ID) : entity.Location.ID;
- // var job = hasJob ? entity.Job.GetOriginalValue(x=>x.ID) : entity.Job.ID;
- // var style = hasStyle ? entity.Style.GetOriginalValue(x=>x.ID) : entity.Style.ID;
- // var dimensionUnit = hasDimensionUnit ? entity.Dimensions.Unit.GetOriginalValue(x=>x.ID) : entity.Dimensions.Unit.ID;
- // var length = hasLength ? entity.Dimensions.GetOriginalValue(x=>x.Length) : entity.Dimensions.Length;
- // var width = hasWidth ? entity.Dimensions.GetOriginalValue(x=>x.Width) : entity.Dimensions.Width;
- // var height = hasHeight ? entity.Dimensions.GetOriginalValue(x=>x.Height) : entity.Dimensions.Height;
- // var weight = hasWeight ? entity.Dimensions.GetOriginalValue(x=>x.Weight) : entity.Dimensions.Weight;
- //
- // var movements = Provider.Query(
- // new Filter<StockMovement>(X => X.ID).IsNotEqualTo(entity.ID)
- // .And(x => x.Product.ID).IsEqualTo(product)
- // .And(x=>x.Location.ID).IsEqualTo(location)
- // .And(x => x.Job.ID).IsEqualTo(job)
- // .And(x => x.Style.ID).IsEqualTo(style)
- // .And(x => x.Dimensions.Unit.ID).IsEqualTo(dimensionUnit)
- // .And(x => x.Dimensions.Length).IsEqualTo(length)
- // .And(x => x.Dimensions.Width).IsEqualTo(width)
- // .And(x => x.Dimensions.Height).IsEqualTo(height)
- // .And(x => x.Dimensions.Weight).IsEqualTo(weight),
- // new Columns<StockMovement>(x => x.Location.ID)
- // );
- //
- // if (!movements.Rows.Any())
- // {
- // var holdings = Provider.Query(
- // new Filter<StockHolding>(x => x.Product.ID).IsEqualTo(product)
- // .And(x => x.Location.ID).IsEqualTo(location)
- // .And(x => x.Job.ID).IsEqualTo(job)
- // .And(x => x.Style.ID).IsEqualTo(style)
- // .And(x => x.Dimensions.Unit.ID).IsEqualTo(dimensionUnit)
- // .And(x => x.Dimensions.Length).IsEqualTo(length)
- // .And(x => x.Dimensions.Width).IsEqualTo(width)
- // .And(x => x.Dimensions.Height).IsEqualTo(height)
- // .And(x => x.Dimensions.Weight).IsEqualTo(weight),
- // new Columns<StockHolding>(x => x.ID)
- // ).Rows.Select(r => r.ToObject<StockHolding>());
- //
- // // should only ever be one, but lets clean up anyways
- // foreach (var holding in holdings)
- // Provider.Delete(holding);
- // }
- //
- // }
- }
-
- }
- }
|