|
@@ -0,0 +1,51 @@
|
|
|
+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<Requisition>(null, new Columns<Requisition>(x => x.ID, x => x.JobLink.ID))
|
|
|
+ .ToDictionary<Requisition, Guid, Guid>(x => x.ID, x => x.JobLink.ID);
|
|
|
+
|
|
|
+ var filter = new Filter<RequisitionItem>(x => x.JobLink.ID)
|
|
|
+ .IsEqualTo(Guid.Empty);
|
|
|
+
|
|
|
+ var columns = new Columns<RequisitionItem>()
|
|
|
+ .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<RequisitionItem>())
|
|
|
+ .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<RequisitionItem>(items);
|
|
|
+ Logger.Send(LogType.Information, "", $"{items.Length} requisition items processed");
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+}
|