using Comal.Classes; using InABox.Core; using InABox.Database; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PRS.Shared.Database_Update_Scripts; internal class Update_8_47 : DatabaseUpdateScript { public override VersionNumber Version => new(8, 47); public override bool Update() { MigrateProductInstanceMinimumStockLevels(); return true; } private void MigrateProductInstanceMinimumStockLevels() { var provider = DbFactory.NewProvider(Logger.Main); Logger.Send(LogType.Information, "", $"Migrating ProductInstance Minimum Stock Levels..."); var instances = provider.Query( new Filter("MinimumStockLevel").IsNotEqualTo(FilterConstant.Null), Columns.Local() ).ToArray(); Utils.Utils.ProcessInChunks( instances, chunk => { foreach(var instance in instances) { instance.MinimumStock.CustomStockLevel = true; instance.MinimumStock.StockLevel = (int)(CoreUtils.GetPropertyValue(instance, "MinimumStockLevel") ?? 0); CoreUtils.SetPropertyValue(instance, "MinimumStockLevel", 0); } provider.Save(chunk.Where(x => x.IsChanged())); }, 1000, percent => Logger.Send(LogType.Information, "", $"Migrating Minimum Stock Levels: {percent:F2}%") ); Logger.Send(LogType.Information, "", $"Migrating Minimum Stock Levels complete"); } }