using Comal.Classes; using InABox.Core; using InABox.Database; namespace PRS.Shared; public class Update_7_40 : DatabaseUpdateScript { public override VersionNumber Version => new VersionNumber(7, 40); public override bool Update() { UpdateRequitionItemJobLinks(); return true; } private void UpdateRequitionItemJobLinks() { var requijobs = DbFactory.Provider .Query(null, new Columns(x => x.ID, x => x.JobLink.ID)) .ToDictionary(x => x.ID, x => x.JobLink.ID); var filter = new Filter(x => x.JobLink.ID) .IsEqualTo(Guid.Empty); var columns = new Columns() .Add(x => x.ID) .Add(x=>x.RequisitionLink.ID) .Add(x=>x.RequisitionLink.Filled) .Add(x=>x.RequisitionLink.Archived) .Add(x => x.JobLink.ID) .Add("Job.ID"); var items = DbFactory.Provider.Query(typeof(RequisitionItem), filter, columns) .Rows .Select(r => r.ToObject()) .ToArray(); foreach (var item in items) { requijobs.TryGetValue(item.RequisitionLink.ID, out Guid jobid); item.JobLink.ID = jobid; CoreUtils.SetPropertyValue(item,"Job.ID", jobid); } DbFactory.Provider.Save(items); Logger.Send(LogType.Information, "", $"{items.Length} requisition items processed"); } }