Jelajahi Sumber

Added BillDocumentStore and added thumbnail generation to EntityDocumentStore for image files

frogsoftware 1 tahun lalu
induk
melakukan
21c8c0b72d

+ 1 - 1
prs.desktop/Dashboards/Projects/JobsRequiringBookingsWidget.cs

@@ -21,7 +21,7 @@ namespace PRSDesktop
         public JobsRequiringBookingsWidget()
         {
             HiddenColumns.Add(x => x.Assignments);
-            ActionColumns.Add(new DynamicTextColumn(RebookingIndicator) { Position = DynamicActionColumnPosition.End});
+            ActionColumns.Add(new DynamicTextColumn(RebookingIndicator) { Position = DynamicActionColumnPosition.End, Width = 50});
             ActionColumns.Add(new DynamicMenuColumn(CreateJobMenu) { Position = DynamicActionColumnPosition.End});
             ColumnsTag = GetType().Name;
         }

+ 17 - 16
prs.desktop/PRSDesktop.csproj

@@ -815,23 +815,24 @@
       <PackageReference Include="net.sf.mpxj" Version="10.9.0" />
       <PackageReference Include="Scriban" Version="5.5.0" />
       <PackageReference Include="SharpAvi" Version="3.0.1" />
-      <PackageReference Include="Syncfusion.DataGridExcelExport.Wpf" Version="23.2.6" />
-      <PackageReference Include="Syncfusion.Gantt.WPF" Version="23.2.6" />
-      <PackageReference Include="Syncfusion.Grid.WPF" Version="23.2.6" />
-      <PackageReference Include="Syncfusion.Licensing" Version="23.2.6" />
-      <PackageReference Include="Syncfusion.SfBarcode.WPF" Version="23.2.6" />
-      <PackageReference Include="Syncfusion.SfChart.WPF" Version="23.2.6" />
-      <PackageReference Include="Syncfusion.SfDiagram.WPF" Version="23.2.6" />
-      <PackageReference Include="Syncfusion.SfKanban.WPF" Version="23.2.6" />
-      <PackageReference Include="Syncfusion.SfMaps.WPF" Version="23.2.6" />
+      <PackageReference Include="Syncfusion.DataGridExcelExport.Wpf" Version="23.2.7" />
+      <PackageReference Include="Syncfusion.Gantt.WPF" Version="23.2.7" />
+      <PackageReference Include="Syncfusion.Grid.WPF" Version="23.2.7" />
+      <PackageReference Include="Syncfusion.Licensing" Version="23.2.7" />
+      <PackageReference Include="Syncfusion.Pdf.Wpf" Version="23.2.7" />
+      <PackageReference Include="Syncfusion.SfBarcode.WPF" Version="23.2.7" />
+      <PackageReference Include="Syncfusion.SfChart.WPF" Version="23.2.7" />
+      <PackageReference Include="Syncfusion.SfDiagram.WPF" Version="23.2.7" />
+      <PackageReference Include="Syncfusion.SfKanban.WPF" Version="23.2.7" />
+      <PackageReference Include="Syncfusion.SfMaps.WPF" Version="23.2.7" />
       <PackageReference Include="Syncfusion.SfSchedule.WPF" Version="18.3.0.53" />
-      <PackageReference Include="Syncfusion.SfScheduler.WPF" Version="23.2.6" />
-      <PackageReference Include="Syncfusion.SfSpreadsheet.WPF" Version="23.2.6" />
-      <PackageReference Include="Syncfusion.Themes.FluentLight.WPF" Version="23.2.6" />
-      <PackageReference Include="Syncfusion.Themes.MaterialLight.WPF" Version="23.2.6" />
-      <PackageReference Include="Syncfusion.Themes.Office2019White.WPF" Version="23.2.6" />
-      <PackageReference Include="Syncfusion.Themes.SystemTheme.WPF" Version="23.2.6" />
-      <PackageReference Include="Syncfusion.Tools.WPF" Version="23.2.6" />
+      <PackageReference Include="Syncfusion.SfScheduler.WPF" Version="23.2.7" />
+      <PackageReference Include="Syncfusion.SfSpreadsheet.WPF" Version="23.2.7" />
+      <PackageReference Include="Syncfusion.Themes.FluentLight.WPF" Version="23.2.7" />
+      <PackageReference Include="Syncfusion.Themes.MaterialLight.WPF" Version="23.2.7" />
+      <PackageReference Include="Syncfusion.Themes.Office2019White.WPF" Version="23.2.7" />
+      <PackageReference Include="Syncfusion.Themes.SystemTheme.WPF" Version="23.2.7" />
+      <PackageReference Include="Syncfusion.Tools.WPF" Version="23.2.7" />
       <PackageReference Include="System.Collections.Immutable" Version="7.0.0" />
       <PackageReference Include="System.IO.Ports" Version="6.0.0" />
       <PackageReference Include="WindowsShortcutFactory" Version="1.1.0" />

+ 2 - 1
prs.server/PRSServer.csproj

@@ -79,7 +79,8 @@
         <PackageReference Include="PropertyChanged.Fody" Version="3.4.1" />
         <PackageReference Include="RazorEngine.NetCore" Version="3.1.0" />
         <PackageReference Include="Stripe.net" Version="40.2.0" />
-        <PackageReference Include="Syncfusion.Licensing" Version="23.2.6" />
+        <PackageReference Include="Syncfusion.Licensing" Version="23.2.7" />
+        <PackageReference Include="Syncfusion.Pdf.Wpf" Version="23.2.7" />
         <PackageReference Include="Syncfusion.Shared.WPF.Classic" Version="19.4.0.56" />
         <PackageReference Include="System.Data.SqlClient" Version="4.8.3" />
         <PackageReference Include="System.ServiceProcess.ServiceController" Version="6.0.0" />

+ 6 - 0
prs.stores/EntityDocuments/BillDocumentStore.cs

@@ -0,0 +1,6 @@
+using Comal.Classes;
+
+namespace PRSStores
+{
+    public class BillDocumentStore : EntityDocumentStore<BillDocument, Bill, BillLink> { }
+}

+ 30 - 10
prs.stores/EntityDocuments/EntityDocumentStore.cs

@@ -6,6 +6,10 @@ using System.IO;
 using Syncfusion.Pdf.Parsing;
 using System.Drawing;
 using System.Drawing.Imaging;
+using System.Windows.Media.Imaging;
+using InABox.WPF;
+using NPOI.SS.Util;
+using ImageUtils = InABox.WPF.ImageUtils;
 
 namespace PRSStores
 {
@@ -36,20 +40,36 @@ namespace PRSStores
                 return;
 
             Document doc = table.Rows.FirstOrDefault().ToObject<Document>();
-            if (!doc.FileName.ToLower().EndsWith("pdf"))
+            if (doc.Data?.Any() != true)
                 return;
-
-            try
+            
+            if (doc.FileName.ToLower().EndsWith("pdf"))
             {
-                PdfLoadedDocument loadeddoc = new PdfLoadedDocument(doc.Data);
-                Bitmap image = loadeddoc.ExportAsImage(0, new SizeF(256, 256), true);
-                MemoryStream stream = new MemoryStream();
-                image.Save(stream, ImageFormat.Jpeg);
-                entity.Thumbnail = stream.ToArray();
+                try
+                {
+                    PdfLoadedDocument loadeddoc = new PdfLoadedDocument(doc.Data);
+                    Bitmap image = loadeddoc.ExportAsImage(0, new SizeF(256, 256), true);
+                    MemoryStream stream = new MemoryStream();
+                    image.Save(stream, ImageFormat.Jpeg);
+                    entity.Thumbnail = stream.ToArray();
+                }
+                catch (Exception ex)
+                {
+                    Logger.Send(LogType.Information, UserID, ex.Message);
+                }
             }
-            catch (Exception ex) 
+            else
             {
-                Logger.Send(LogType.Information, UserID, ex.Message);
+                try
+                {
+                    var bmp = ImageUtils.BitmapImageFromBytes(doc.Data);
+                    bmp = bmp.Scale(256, 256);
+                    entity.Thumbnail = bmp.ToArray<JpegBitmapEncoder>();
+                }
+                catch (Exception ex)
+                {
+                    Logger.Send(LogType.Information, UserID, ex.Message);
+                }
             }
         }
     }

+ 1 - 0
prs.stores/PRSStores.projitems

@@ -27,6 +27,7 @@
     <Compile Include="$(MSBuildThisFileDirectory)EmployeeProductStore.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)EmployeeQualificationStore.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)EmployeeStore.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)EntityDocuments\BillDocumentStore.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)EntityDocuments\DigitalFormDocumentStore.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)EntityDocuments\EntityDocumentStore.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)EntityDocuments\JobDocumentSetSetMileStoneFileStore.cs" />