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_30 : DatabaseUpdateScript { public override VersionNumber Version => new(7, 30); public static bool DoTemplates() { var rosterTemplates = DbFactory.NewProvider(Logger.Main).Query(null, Columns.None().Add(x => x.ID).Add(x => x.Roster)).ToObjects(); var rosterTemplatesToSave = new List(); var rosterTemplateItems = new List(); foreach (var employee in rosterTemplates) { if (employee.Roster.IsNullOrWhiteSpace()) continue; var rosterItems = Serialization.Deserialize>(employee.Roster) ?? new(); employee.Roster = ""; foreach (var item in rosterItems) { item.Roster.ID = employee.ID; rosterTemplateItems.Add(item); } rosterTemplatesToSave.Add(employee); } DbFactory.NewProvider(Logger.Main).Save(rosterTemplatesToSave); DbFactory.NewProvider(Logger.Main).Save(rosterTemplateItems); return true; } public static bool DoEmployeeRosters() { var employees = DbFactory.NewProvider(Logger.Main).Query(null, Columns.None().Add(x => x.ID).Add(x => x.Roster)).ToObjects(); var employeesToSave = new List(); var rosterTemplateItems = new List(); foreach (var employee in employees) { if (employee.Roster.IsNullOrWhiteSpace()) continue; var rosterItems = Serialization.Deserialize>(employee.Roster) ?? new(); employee.Roster = ""; foreach (var item in rosterItems) { item.Employee.ID = employee.ID; rosterTemplateItems.Add(item); } employeesToSave.Add(employee); } DbFactory.NewProvider(Logger.Main).Save(employeesToSave); DbFactory.NewProvider(Logger.Main).Save(rosterTemplateItems); return true; } public override bool Update() { return DoTemplates() && DoEmployeeRosters(); } } }