StockEntity.cs 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using System;
  2. using InABox.Core;
  3. namespace Comal.Classes
  4. {
  5. public abstract class StockEntity : DimensionedEntity<StockDimensions>
  6. {
  7. public abstract ProductLink Product { get; set; }
  8. protected override void Init()
  9. {
  10. base.Init();
  11. Product = new ProductLink(() => this);
  12. Dimensions = new StockDimensions(() => this);
  13. }
  14. public static void LinkStockDimensions<TStock>() where TStock : StockEntity
  15. {
  16. LinkedProperties.Register<TStock, ProductDimensionUnitLink, Guid>(x => x.Product.Dimensions.Unit, x => x.ID, x => x.Dimensions.Unit.ID);
  17. LinkedProperties.Register<TStock, ProductDimensionUnitLink, String>(x => x.Product.Dimensions.Unit, x => x.Code, x => x.Dimensions.Unit.Code);
  18. LinkedProperties.Register<TStock, ProductDimensionUnitLink, String>(x => x.Product.Dimensions.Unit, x => x.Description, x => x.Dimensions.Unit.Description);
  19. LinkedProperties.Register<TStock, ProductDimensionUnitLink, bool>(x => x.Product.Dimensions.Unit, x => x.HasLength, x => x.Dimensions.Unit.HasLength);
  20. LinkedProperties.Register<TStock, ProductDimensionUnitLink, bool>(x => x.Product.Dimensions.Unit, x => x.HasHeight, x => x.Dimensions.Unit.HasHeight);
  21. LinkedProperties.Register<TStock, ProductDimensionUnitLink, bool>(x => x.Product.Dimensions.Unit, x => x.HasQuantity, x => x.Dimensions.Unit.HasQuantity);
  22. LinkedProperties.Register<TStock, ProductDimensionUnitLink, bool>(x => x.Product.Dimensions.Unit, x => x.HasWeight, x => x.Dimensions.Unit.HasWeight);
  23. LinkedProperties.Register<TStock, ProductDimensionUnitLink, bool>(x => x.Product.Dimensions.Unit, x => x.HasWidth, x => x.Dimensions.Unit.HasWidth);
  24. LinkedProperties.Register<TStock, ProductDimensionUnitLink, String>(x => x.Product.Dimensions.Unit, x => x.Formula, x => x.Dimensions.Unit.Formula);
  25. LinkedProperties.Register<TStock, ProductDimensionUnitLink, String>(x => x.Product.Dimensions.Unit, x => x.Format, x => x.Dimensions.Unit.Format);
  26. LinkedProperties.Register<TStock, ProductDimensions, double>(x => x.Product.Dimensions, x => x.Height, x => x.Dimensions.Height);
  27. LinkedProperties.Register<TStock, ProductDimensions, double>(x => x.Product.Dimensions, x => x.Length, x => x.Dimensions.Length);
  28. LinkedProperties.Register<TStock, ProductDimensions, double>(x => x.Product.Dimensions, x => x.Quantity, x => x.Dimensions.Quantity);
  29. LinkedProperties.Register<TStock, ProductDimensions, double>(x => x.Product.Dimensions, x => x.Weight, x => x.Dimensions.Weight);
  30. LinkedProperties.Register<TStock, ProductDimensions, double>(x => x.Product.Dimensions, x => x.Width, x => x.Dimensions.Width);
  31. LinkedProperties.Register<TStock, ProductDimensions, double>(x => x.Product.Dimensions, x => x.Value, x => x.Dimensions.Value);
  32. LinkedProperties.Register<TStock, ProductDimensions, String>(x => x.Product.Dimensions, x => x.UnitSize, x => x.Dimensions.UnitSize);
  33. }
  34. }
  35. }