Преглед на файлове

Fixed Broken 7.39 Database Update Script

frogsoftware преди 1 година
родител
ревизия
a1f305ec91

+ 1 - 1
prs.shared/Database Update Scripts/DatabaseUpdateScripts.cs

@@ -35,7 +35,7 @@ namespace PRS.Shared
             DataUpdater.RegisterUpdateScript<Update_7_31>();
             DataUpdater.RegisterUpdateScript<Update_7_34>();
             DataUpdater.RegisterUpdateScript<Update_7_37>();
-            DataUpdater.RegisterUpdateScript<Update_7_39>();
+            DataUpdater.RegisterUpdateScript<Update_7_40>();
         }
     }
 }

+ 0 - 40
prs.shared/Database Update Scripts/Update_7_39.cs

@@ -1,40 +0,0 @@
-using Comal.Classes;
-using InABox.Core;
-using InABox.Database;
-
-namespace PRS.Shared;
-
-public class Update_7_39 : DatabaseUpdateScript
-{
-    public override VersionNumber Version => new VersionNumber(7, 39);
-    
-    public override bool Update()
-    {
-        UpdateRequitionJobLinks();
-        return true;
-    }
-
-    private void UpdateRequitionJobLinks()
-    {
-        
-        var columns = new Columns<Requisition>()
-            .Add(x => x.ID)
-            .Add(x => x.JobLink.ID)
-            .Add("Job.ID");
-        var requis = DbFactory.Provider.Query(typeof(Requisition), null, columns)
-            .Rows
-            .Select(r => r.ToObject<Requisition>())
-            .ToArray();
-        
-        foreach (var requi in requis)
-        {
-            var jobid = CoreUtils.GetPropertyValue(requi, "Job.ID");
-            CoreUtils.SetPropertyValue(requi,"JobLink.ID", jobid);
-        }
-        
-        DbFactory.Provider.Save<Requisition>(requis);
-        Logger.Send(LogType.Information, "", $"{requis.Length} requisitions processed");
-
-    }
-
-}

+ 51 - 0
prs.shared/Database Update Scripts/Update_7_40.cs

@@ -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");
+
+    }
+
+}