ソースを参照

Fixed DigitalFormsDock.Description column
Added upgrade script to populate missing Digital Form descriptions

frogsoftware 1 年間 前
コミット
2ed6222c25

+ 2 - 2
prs.desktop/DockPanels/DigitalForms/DigitalFormDockGrid.cs

@@ -26,7 +26,7 @@ public class DigitalFormDockGrid : DynamicGrid<DigitalFormDockModel>
             .Add(x => x.ID, x => x.ID)
             .Add(x => x.Form.ID, x => x.FormID)
             .Add(x => x.Number, x => x.Number)
-            .Add(x => x.Form.Description, x => x.FormName)
+            .Add(x => x.Description, x => x.FormName)
             .Add(x => x.FormCompleted, x => x.Completed)
             .Add(x => x.FormCompletedBy.UserID, x => x.CompletedBy)
             .Add(x => x.FormProcessed, x => x.Processed)
@@ -395,7 +395,7 @@ public class DigitalFormDockGrid : DynamicGrid<DigitalFormDockModel>
                 .Add<IDigitalFormInstance>(c => c.Parent.ID)
                 .Add<IDigitalFormInstance>(c => c.Form.ID)
                 .Add<IDigitalFormInstance>(c => c.Number)
-                .Add<IDigitalFormInstance>(c => c.Form.Description)
+                .Add<IDigitalFormInstance>(c => c.Description)
                 .Add<IDigitalFormInstance>(c => c.FormCompleted)
                 .Add<IDigitalFormInstance>(c => c.FormCompletedBy.UserID)
                 .Add<IDigitalFormInstance>(c => c.FormProcessed);

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

@@ -47,5 +47,6 @@ public static class DatabaseUpdateScripts
         DataUpdater.RegisterUpdateScript<Update_7_62>();
         DataUpdater.RegisterUpdateScript<Update_7_63>();
         DataUpdater.RegisterUpdateScript<Update_7_66>();
+        DataUpdater.RegisterUpdateScript<Update_7_77>();
     }
 }

+ 59 - 0
prs.shared/Database Update Scripts/Update_7_77.cs

@@ -0,0 +1,59 @@
+using Comal.Classes;
+using InABox.Core;
+using InABox.Database;
+
+namespace PRS.Shared.Database_Update_Scripts;
+
+public class Update_7_77 : DatabaseUpdateScript
+{
+    public override VersionNumber Version => new VersionNumber(7, 77);
+
+    public override bool Update()
+    {
+        var formtypes = CoreUtils.Entities
+            .Where(x => x.IsSubclassOfRawGeneric(typeof(EntityForm<,,>)))
+            .ToList();
+
+        int iType = 0;
+        foreach (var formtype in formtypes)
+        {
+            iType++;
+            Logger.Send(LogType.Information, "", $"Updating {formtype.Name} Descriptions ({iType}/{formtypes.Count})");
+            int iCount = 0;
+            List<Entity> updates = new();
+            var forms = DbFactory.Provider.Query(
+                formtype,
+                Filter.Create<ICoreDigitalFormInstance>(formtype,x=>x.Description).IsEqualTo(""),
+                Columns.Create<ICoreDigitalFormInstance>(formtype)
+                    .Add<ICoreDigitalFormInstance>(x=>x.ID)
+                    .Add<ICoreDigitalFormInstance>(x=>x.Description)
+                    .Add<ICoreDigitalFormInstance>(x=>x.Form.Description)
+                ).ToObjects(formtype).ToList();
+            foreach (var form in forms)
+            {
+                if (form is ICoreDigitalFormInstance instance and Entity entity)
+                {
+                    instance.Description = instance.Form.Description;
+                    updates.Add(entity);
+                }
+
+                if (updates.Count >= 100)
+                {
+                    iCount += 100;
+                    Logger.Send(LogType.Information, "", $"- Updating {formtype.Name}s ({iCount}/{forms.Count})");
+                    DbFactory.Provider.Save(formtype,updates);
+                    updates.Clear();
+                }
+            }
+            if (updates.Any())
+            {
+                iCount += updates.Count;
+                Logger.Send(LogType.Information, "", $"- Updating {formtype.Name}s ({iCount}/{forms.Count})");
+                DbFactory.Provider.Save(formtype,updates);
+                updates.Clear();
+            }
+        }
+        
+        return true;
+    }
+}