123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- using Comal.Classes;
- using InABox.Core;
- using InABox.Database;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace PRS.Shared;
- public class Update_7_48_ProductInstances : DatabaseUpdateScript
- {
- public override VersionNumber Version => new VersionNumber(7, 48);
- public override bool Update()
- {
- var products = DbFactory.NewProvider(Logger.Main).Query<Product>(
- new Filter<Product>(x => x.DefaultInstance.ID).IsEqualTo(Guid.Empty),
- Columns.None<Product>().Add(x => x.ID)
- .Add(x => x.DefaultStyle.ID)
- .Add(x => x.MinimumStockLevel)
- .Add(x => x.Dimensions.Unit.ID)
- .Add(x => x.Dimensions.Quantity)
- .Add(x => x.Dimensions.Length)
- .Add(x => x.Dimensions.Width)
- .Add(x => x.Dimensions.Height)
- .Add(x => x.Dimensions.Weight)
- .Add(x => x.Dimensions.Value)
- .Add(x => x.Dimensions.UnitSize))
- .ToObjects<Product>();
- var productInstances = new List<Tuple<Product, ProductInstance>>();
- foreach (var product in products)
- {
- if (product.MinimumStockLevel != 0 || product.DefaultStyle.ID != Guid.Empty || product.Dimensions.Unit.ID != Guid.Empty)
- {
- var instance = new ProductInstance();
- instance.Product.ID = product.ID;
- instance.MinimumStockLevel = product.MinimumStockLevel;
- instance.Dimensions.CopyFrom(product.Dimensions);
- instance.Style.ID = product.DefaultStyle.ID;
- productInstances.Add(new(product, instance));
- }
- }
- Logger.Send(LogType.Information, "", $"Creating ProductInstances for {productInstances.Count} products.");
- DbFactory.NewProvider(Logger.Main).Save(productInstances.Select(x => x.Item2));
- foreach (var (product, instance) in productInstances)
- {
- product.DefaultInstance.ID = instance.ID;
- }
- DbFactory.NewProvider(Logger.Main).Save(productInstances.Select(x => x.Item1));
- return true;
- }
- }
|