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.NewProvider(Logger.Main) .Query(null, Columns.None().Add(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 = Columns.None() .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.NewProvider(Logger.Main).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.NewProvider(Logger.Main).Save(items); Logger.Send(LogType.Information, "", $"{items.Length} requisition items processed"); } }