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.Provider.Query(null, new Columns(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.Provider.Save(rosterTemplatesToSave); DbFactory.Provider.Save(rosterTemplateItems); return true; } public static bool DoEmployeeRosters() { var employees = DbFactory.Provider.Query(null, new Columns(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.Provider.Save(employeesToSave); DbFactory.Provider.Save(rosterTemplateItems); return true; } public override bool Update() { return DoTemplates() && DoEmployeeRosters(); } } }