Browse Source

Fixed 8.57 update script. Fixed Filename issues in Logikal Import, and allowed setout import from Logikal without a job

frogsoftware 2 days ago
parent
commit
c52bd65e8c

+ 7 - 6
prs.classes/Integrations/Logikal/LogikalSettings.cs

@@ -337,16 +337,17 @@ namespace Comal.Classes
             if (!enabled)
                 return false;
             
-            if (job is null)
-                return false;
+            //if (job is null)
+            //    return false;
         
             if (!InABox.Core.Security.IsAllowed<TSecurity>())
                 return false;
             
-            if (UseLogikalProjectNumber)
-                return (string.IsNullOrWhiteSpace(ProjectPrefix) || job.JobNumber.StartsWith(ProjectPrefix)); 
-            
-            return (string.IsNullOrWhiteSpace(job.SourceRef) || job.SourceRef.StartsWith("Logikal:"));
+            return (job == null)
+                ? true
+                : UseLogikalProjectNumber  
+                    ? string.IsNullOrWhiteSpace(ProjectPrefix) || job.JobNumber.StartsWith(ProjectPrefix)
+                    : string.IsNullOrWhiteSpace(job?.SourceRef) || job.SourceRef.StartsWith("Logikal:");
         }
         
     }

+ 1 - 1
prs.desktop/Panels/Jobs/Designs/JobDesignPanel.xaml

@@ -7,5 +7,5 @@
              xmlns:dynamicGrid="clr-namespace:InABox.DynamicGrid;assembly=InABox.Wpf"
              mc:Ignorable="d"
              d:DesignHeight="450" d:DesignWidth="800">
-    <local:StagingPanel x:Name="UnapprovedDesigns" />
+    <local:StagingPanel x:Name="UnapprovedDesigns" ColumnsTag="JobDesigns" />
 </UserControl>

+ 1 - 0
prs.desktop/Panels/Jobs/Designs/JobDesignPanel.xaml.cs

@@ -20,6 +20,7 @@ namespace PRSDesktop
         public JobDesignPanel()
         {
             InitializeComponent();
+            
         }
 
         public Job? Master

+ 4 - 5
prs.desktop/Panels/Staging/Setouts/StagingSetoutGrid.cs

@@ -799,8 +799,6 @@ public class StagingSetoutGrid : DynamicDataGrid<Setout>
     
     private void ImportFromLogikal()
     {
-        if (Job == null)
-            return;
         
         LogikalClient.Instance.Initialize()
             .Error(error => MessageWindow.ShowMessage($"Unable to locate Logikal App!\n\n{error.Message}", "Error"))
@@ -922,19 +920,20 @@ public class StagingSetoutGrid : DynamicDataGrid<Setout>
 
                             if (_logikalSettings.SaveFiles)
                             {
+                                string filename = CoreUtils.SanitiseFileName(elevation.Name);
                                 File.WriteAllBytes(
                                     Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
-                                        $"Elevation - {elevation.Name}.xlsx"),
+                                        $"Elevation - {filename}.xlsx"),
                                     elevation.ExcelData);
 
                                 File.WriteAllBytes(
                                     Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
-                                        $"Elevation - {elevation.Name}.sqlite"),
+                                        $"Elevation - {filename}.sqlite"),
                                     elevation.SQLiteData);
 
                                 File.WriteAllBytes(
                                     Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
-                                        $"Elevation - {elevation.Name} - {_logikalSettings.DesignReport}.pdf"),
+                                        $"Elevation - {filename} - {CoreUtils.SanitiseFileName(_logikalSettings.DesignReport)}.pdf"),
                                     elevation.Drawing);
                             }
 

+ 6 - 0
prs.desktop/Panels/Staging/StagingPanel.xaml.cs

@@ -48,6 +48,12 @@ public partial class StagingPanel : UserControl, IPanel<Setout>
 
     private StagingPanellSettings _settings = new StagingPanellSettings();
 
+    public string ColumnsTag
+    {
+        get => stagingSetoutGrid.ColumnsTag;
+        set => stagingSetoutGrid.ColumnsTag = value;
+    }
+
     private Job? _job;
 
     public Job? Job

+ 31 - 12
prs.shared/Database Update Scripts/Update_8_57.cs

@@ -28,12 +28,20 @@ internal class Update_8_57 : DatabaseUpdateScript
             Columns.None<Setout>()
                 .Add(x => x.ID)
                 .Add(x => x.Status))
-            .ToArray<Setout>();
-        foreach(var setout in setouts)
+            .ToArray<Setout>()
+            
+            .ToQueue();
+        var totalsetouts = setouts.Count;
+        var processedsetouts = 0;
+        while (setouts.Count > 0)
         {
-            setout.Status = SetoutStatus.Approved;
-        }
-        provider.Save(setouts);
+            Logger.Send(LogType.Information, "", $"Updating {setouts.Count} staging setouts; {processedsetouts}/{totalsetouts}");
+            var updates = setouts.Dequeue(100).ToArray();
+            foreach(var update in updates)
+                update.Status = SetoutStatus.Approved;
+            provider.Save(updates);
+            processedsetouts += updates.Length;
+        };
 
         Logger.Send(LogType.Information, "", "Approving all old manufacturing packets");
         var packets = provider.Query(
@@ -42,12 +50,20 @@ internal class Update_8_57 : DatabaseUpdateScript
                 .Add(x => x.ID)
                 .Add(x => x.Approved)
                 .Add(x => x.Created))
-            .ToArray<ManufacturingPacket>();
-        foreach(var packet in packets)
+            .ToArray<ManufacturingPacket>()
+            .ToQueue();
+        var totalpackets = packets.Count;
+        var processedpackets = 0;
+        while (packets.Count > 0)
         {
-            packet.Approved = packet.Created;
+            Logger.Send(LogType.Information, "", $"Updating {packets.Count} staging setouts; {processedpackets}/{totalpackets}");
+            var updates = packets.Dequeue(100).ToArray();
+            foreach(var update in updates)
+                update.Approved = update.Created;
+            provider.Save(updates);
+            processedpackets += updates.Length;
         }
-        provider.Save(packets);
+
     }
 
     public override bool Update()
@@ -95,7 +111,7 @@ internal class Update_8_57 : DatabaseUpdateScript
             var stagingSetouts = stagingSetoutsQueue.Dequeue(100).ToArray();
 
             ProcessStagingSetouts(provider, stagingSetouts);
-
+            
             processed += stagingSetouts.Length;
         }
 
@@ -284,11 +300,14 @@ internal class Update_8_57 : DatabaseUpdateScript
             {
                 setout.Status = SetoutStatus.Cancelled;
                 setout.Problem.AssignedTo.ID = stagingSetout.Task.EmployeeLink.ID;
-                setout.Problem.Notes = new string[]
+                var notes = new List<string>()
                 {
                     stagingSetout.Task.Title,
                     stagingSetout.Task.Description,
-                }.Concatenate(stagingSetout.Task.Notes);
+                };
+                if (stagingSetout.Task.Notes != null)
+                    notes.AddRange(stagingSetout.Task.Notes);
+                setout.Problem.Notes = notes.ToArray();
                 setout.Problem.Resolved = stagingSetout.Task.Completed;
             }