From 03e69393fc58971d5e76abd37281c3d488c445ba Mon Sep 17 00:00:00 2001 From: Matt Burke Date: Sat, 23 Dec 2023 17:19:12 -0500 Subject: [PATCH] Added support for PDFs and Images --- PWAPPv2.sln | 8 +- PWAPPv2/MainWindow.xaml.cs | 102 ++++++++++++++++------- PWAPPv2/PWAPPv2.csproj | 1 + PWAPPv2/Source/API/APIConnection.cs | 17 ++-- PWAPPv2/Source/DataObjects/Attachment.cs | 61 ++++++++++---- PWAPPv2/Source/DataObjects/PWPdf.cs | 31 +++++++ PWAppUpdater2/Form1.cs | 3 +- PWAppUpdater2/Updater.cs | 4 - 8 files changed, 161 insertions(+), 66 deletions(-) create mode 100644 PWAPPv2/Source/DataObjects/PWPdf.cs diff --git a/PWAPPv2.sln b/PWAPPv2.sln index 27b0408..ec07559 100644 --- a/PWAPPv2.sln +++ b/PWAPPv2.sln @@ -5,9 +5,7 @@ VisualStudioVersion = 17.7.34009.444 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PWAPPv2", "PWAPPv2\PWAPPv2.csproj", "{45E26AF8-41D7-4308-A2C8-D55A0350DB47}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PWAppUpdater", "PWAppUpdater\PWAppUpdater.csproj", "{B84B314C-C17A-42A3-BCAE-038F48343F5A}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PWAppUpdaterForm", "PWAppUpdater2\PWAppUpdaterForm.csproj", "{093798DD-2EDD-4519-AAC6-9DFF0DE3C15A}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PWAppUpdaterForm", "PWAppUpdater2\PWAppUpdaterForm.csproj", "{093798DD-2EDD-4519-AAC6-9DFF0DE3C15A}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -19,10 +17,6 @@ Global {45E26AF8-41D7-4308-A2C8-D55A0350DB47}.Debug|Any CPU.Build.0 = Debug|Any CPU {45E26AF8-41D7-4308-A2C8-D55A0350DB47}.Release|Any CPU.ActiveCfg = Release|Any CPU {45E26AF8-41D7-4308-A2C8-D55A0350DB47}.Release|Any CPU.Build.0 = Release|Any CPU - {B84B314C-C17A-42A3-BCAE-038F48343F5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B84B314C-C17A-42A3-BCAE-038F48343F5A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B84B314C-C17A-42A3-BCAE-038F48343F5A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B84B314C-C17A-42A3-BCAE-038F48343F5A}.Release|Any CPU.Build.0 = Release|Any CPU {093798DD-2EDD-4519-AAC6-9DFF0DE3C15A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {093798DD-2EDD-4519-AAC6-9DFF0DE3C15A}.Debug|Any CPU.Build.0 = Debug|Any CPU {093798DD-2EDD-4519-AAC6-9DFF0DE3C15A}.Release|Any CPU.ActiveCfg = Release|Any CPU diff --git a/PWAPPv2/MainWindow.xaml.cs b/PWAPPv2/MainWindow.xaml.cs index 6a5fa1d..7ad0596 100644 --- a/PWAPPv2/MainWindow.xaml.cs +++ b/PWAPPv2/MainWindow.xaml.cs @@ -38,7 +38,7 @@ namespace PWAPPv2 Source.Patient patient; - List images; + List attachments; //string ConfigPath = "C:\\PWAPP\\Config\\Config.xml"; @@ -53,21 +53,21 @@ namespace PWAPPv2 } catch (Exception) { } - + ConfigPath = "C:\\PWAPP\\Config\\"; try { //ConfigPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); //ConfigPath = Path.Combine(ConfigPath, "PWAPP\\Config\\"); - ConfigPath = "C:\\PWAPP\\Config\\"; - practiceConfig = new Source.Config.Configuration(ConfigPath + "PracticeConfig.xml"); - universalConfig = new Source.Config.Configuration(ConfigPath + "UniversalConfig.xml"); + + practiceConfig = new Source.Config.Configuration("C:\\PWAPP\\Config\\PracticeConfig.xml"); + universalConfig = new Source.Config.Configuration("C:\\PWAPP\\App\\Config\\UniversalConfig.xml"); } catch - (Exception) + (Exception ex) { - System.Windows.MessageBox.Show("An error has occured in the configurations files."); + System.Windows.MessageBox.Show("An error has occured in the configurations files.\n(" + ex.Message + ")"); } pwapiConnection = new Source.API.PWApiConnection(practiceConfig, universalConfig); @@ -89,8 +89,12 @@ namespace PWAPPv2 p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardError = true; - p.StartInfo.Arguments = args[0]; - if(System.Environment.OSVersion.Version.Major >= 6) + try + { + p.StartInfo.Arguments = args[0]; + } + catch { } + if (System.Environment.OSVersion.Version.Major >= 6) { p.StartInfo.Verb = "runas"; } @@ -106,8 +110,7 @@ namespace PWAPPv2 try { - images = new List(); - + attachments = new List(); Source.Database.DatabaseConnection dbcon = new Source.Database.DatabaseConnection(practiceConfig); @@ -207,7 +210,8 @@ namespace PWAPPv2 private void Button_Click_1(object sender, RoutedEventArgs e) { Source.DataObjects.Referral referral; - if (images.Count == 0) + + if (attachments.Count == 0) { referral = new Source.DataObjects.Referral(apiCreds, patient, (Source.DataObjects.ReferralTypeBox)TypeBox, @@ -224,17 +228,20 @@ namespace PWAPPv2 fieldRemakrs, contact, true); } + try { string referralString = referral.ToJsonString(); - string result = pwapiConnection.SendReferral(referralString); //apiConnection.SendPostRequestAsync("api/PWMakeReferral", referralString); - if (images.Count > 0) + string result = pwapiConnection.SendReferral(referralString); + + + if (attachments.Count > 0) { - foreach (Source.DataObjects.PWImage im in images) + foreach (Source.DataObjects.Attachment attachment in attachments) { - Source.DataObjects.Attachment att = new Source.DataObjects.Attachment(apiCreds, im, result); - string json = att.ToJsonString(); - apiConnection.SendPostRequestAsync("api/PWAttachment", json); + attachment.Token = result; + string json = attachment.ToJsonString(); + apiConnection.SendPostWithCredsInHeader("api/PWAttachment", json); } } @@ -253,21 +260,41 @@ namespace PWAPPv2 { System.Windows.Forms.OpenFileDialog openFileDialog = new System.Windows.Forms.OpenFileDialog(); openFileDialog.Multiselect = true; - openFileDialog.Filter = "Image files (*.jpg,*.jpeg)|*.jpg;*.jpeg"; + openFileDialog.Filter = "Attachment files (*.jpg,*.jpeg,*.pdf)|*.jpg;*.jpeg;*.pdf"; openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures); if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { foreach (string filename in openFileDialog.FileNames) { - try + if (Path.GetExtension(filename) == ".jpg" || Path.GetExtension(filename) == ".jpeg") { - images.Add(new Source.DataObjects.PWImage(filename)); + try + { + attachments.Add(new Source.DataObjects.Attachment(apiCreds, new Source.DataObjects.PWImage(filename))); + } + catch (NullReferenceException) + { + + attachments = new List + { + new Source.DataObjects.Attachment(apiCreds, new Source.DataObjects.PWImage(filename)) + }; + } } - catch (NullReferenceException) + if (Path.GetExtension(filename) == ".pdf") { - images = new List(); - images.Add(new Source.DataObjects.PWImage(filename)); + try + { + attachments.Add(new Source.DataObjects.Attachment(apiCreds, new Source.DataObjects.PWPdf(filename))); + } + catch (NullReferenceException) + { + attachments = new List() + { + new Source.DataObjects.Attachment(apiCreds, new Source.DataObjects.PWPdf(filename)) + }; + } } } @@ -276,9 +303,17 @@ namespace PWAPPv2 try { ImageList.Items.Clear(); - foreach (Source.DataObjects.PWImage image in images) + + foreach (var attachment in attachments) { - ImageList.Items.Add(CreateImageGridItem(image)); + if (attachment.image == null) + { + ImageList.Items.Add(CreateImageGridItem(new Source.DataObjects.PWImage("C:\\PWAPP\\App\\App\\pdf.jpg"))); + } + else + { + ImageList.Items.Add(CreateImageGridItem(attachment.image)); + } } } catch (NullReferenceException) @@ -293,13 +328,22 @@ namespace PWAPPv2 { return; } - images.RemoveAt(index); + + attachments.RemoveAt(index); try { ImageList.Items.Clear(); - foreach (Source.DataObjects.PWImage image in images) + + foreach (var attachment in attachments) { - ImageList.Items.Add(CreateImageGridItem(image)); + if (attachment.image == null) + { + ImageList.Items.Add(CreateImageGridItem(new Source.DataObjects.PWImage("C:\\PWAPP\\App\\App\\pdf.jpg"))); + } + else + { + ImageList.Items.Add(CreateImageGridItem(attachment.image)); + } } } catch (NullReferenceException) diff --git a/PWAPPv2/PWAPPv2.csproj b/PWAPPv2/PWAPPv2.csproj index 1380906..49e5953 100644 --- a/PWAPPv2/PWAPPv2.csproj +++ b/PWAPPv2/PWAPPv2.csproj @@ -224,6 +224,7 @@ + diff --git a/PWAPPv2/Source/API/APIConnection.cs b/PWAPPv2/Source/API/APIConnection.cs index 4768258..a7ad092 100644 --- a/PWAPPv2/Source/API/APIConnection.cs +++ b/PWAPPv2/Source/API/APIConnection.cs @@ -27,6 +27,10 @@ namespace PWAPPv2.Source.API Client.BaseAddress = new Uri(BaseURL); Client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json")); + Client.DefaultRequestHeaders.Add("UserID", Credentials.UserID); + Client.DefaultRequestHeaders.Add("Password", Credentials.Password); + Client.DefaultRequestHeaders.Add("PracticeID", Credentials.PracticeId); + Client.DefaultRequestHeaders.Add("ApiID", Credentials.APIid); } @@ -94,20 +98,17 @@ namespace PWAPPv2.Source.API /// public string SendPostWithCredsInHeader(string apiUri, string PostData) { - Client.DefaultRequestHeaders.Add("UserID", Credentials.UserID); - Client.DefaultRequestHeaders.Add("Password", Credentials.Password); - Client.DefaultRequestHeaders.Add("PracticeID", Credentials.PracticeId); - Client.DefaultRequestHeaders.Add("ApiID", Credentials.APIid); + StringContent content = new StringContent(PostData, Encoding.UTF8, "application/json"); string conts = content.ToString(); var response = Client.PostAsync(apiUri, content).Result; - Client.DefaultRequestHeaders.Remove("UserID"); - Client.DefaultRequestHeaders.Remove("Password"); - Client.DefaultRequestHeaders.Remove("PraticeID"); - Client.DefaultRequestHeaders.Remove("ApiID"); + //Client.DefaultRequestHeaders.Remove("UserID"); + //Client.DefaultRequestHeaders.Remove("Password"); + //Client.DefaultRequestHeaders.Remove("PraticeID"); + //Client.DefaultRequestHeaders.Remove("ApiID"); if (response.IsSuccessStatusCode) { diff --git a/PWAPPv2/Source/DataObjects/Attachment.cs b/PWAPPv2/Source/DataObjects/Attachment.cs index 3c516c7..53d59ae 100644 --- a/PWAPPv2/Source/DataObjects/Attachment.cs +++ b/PWAPPv2/Source/DataObjects/Attachment.cs @@ -3,32 +3,59 @@ class Attachment { APICredentials Credentials; - PWImage image; + public PWImage image { get; set; } + public PWPdf pdf { get; set; } + public string Token; - string Token; + private string fileType { get; set; } - - public Attachment(APICredentials credentials, PWImage pwImage, string token) + public Attachment(APICredentials credentials, PWImage pwImage) { Credentials = credentials; image = pwImage; - Token = token; + //Token = token; + pdf = null; + fileType = "image/jpeg"; + } + + public Attachment(APICredentials credentials, PWPdf pwPdf) + { + Credentials = credentials; + pdf = pwPdf; + image = null; + fileType = "application/pdf"; } public string ToJsonString() { - return "\"{" + Credentials.BuildJsonBodyContents() + - ",'UserNum':'API'," + - "'AttToken':'" + Token.Replace("\"", "") + "'," + - "'FileName':'" + image.ShortFileName() + "'," + - "'ContentType':'_1'," + - "'ThumbExists':'1'," + - "'ZoomExists':'1'," + - "'FileDate':''," + - "'Base64FileContents':'" + image.GetBase64String() + "',\n" + - "'Base64ThumbContents':'" + image.GetBase64ThumbString() + "',\n" + - "'Base64ZoomContents':'" + image.GetBase64ZoomString() + "'}\""; + if (fileType == "image/jpeg") + { + return "\"{" + Credentials.BuildJsonBodyContents() + + ",'UserNum':'API'," + + "'AttToken':'" + Token.Replace("\"", "") + "'," + + "'FileName':'" + image.ShortFileName() + "'," + + "'ThumbExists':'1'," + + "'ZoomExists':'1'," + + "'FileDate':''," + + "'FileType':'" + fileType + "'," + + "'Base64FileContents':'" + image.GetBase64String() + "',\n" + + "'Base64ThumbContents':'" + image.GetBase64ThumbString() + "',\n" + + "'Base64ZoomContents':'" + image.GetBase64ZoomString() + "'}\""; + } + else + { + return "\"{" + Credentials.BuildJsonBodyContents() + + ",'UserNum':'API'," + + "'AttToken':'" + Token.Replace("\"", "") + "'," + + "'FileName':'" + pdf.ShortFileName() + "'," + + "'ThumbExists':'0'," + + "'ZoomExists':'0'," + + "'FileDate':''," + + "'FileType':'" + fileType + "'," + + "'Base64FileContents':'" + pdf.GetBase64String() + "',\n" + + "'Base64ThumbContents':'',\n" + + "'Base64ZoomContents':''}\""; + } } - } } diff --git a/PWAPPv2/Source/DataObjects/PWPdf.cs b/PWAPPv2/Source/DataObjects/PWPdf.cs new file mode 100644 index 0000000..efa371f --- /dev/null +++ b/PWAPPv2/Source/DataObjects/PWPdf.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace PWAPPv2.Source.DataObjects +{ + public class PWPdf + { + public string path; + + + public PWPdf(string path) + { + this.path = path; + } + + public string GetBase64String() + { + byte[] bytes = File.ReadAllBytes(path); + return Convert.ToBase64String(bytes); + } + + public string ShortFileName() + { + return path.Substring(path.LastIndexOf("\\") + 1); + } + } +} diff --git a/PWAppUpdater2/Form1.cs b/PWAppUpdater2/Form1.cs index 111fb08..c0252e7 100644 --- a/PWAppUpdater2/Form1.cs +++ b/PWAppUpdater2/Form1.cs @@ -20,6 +20,7 @@ namespace PWAppUpdater2 private void button1_Click(object sender, EventArgs e) { + Directory.SetCurrentDirectory("C:\\PWAPP"); label1.Text = "Updating.... Please wait."; label1.Update(); progressBar1.Maximum = 8; @@ -27,7 +28,7 @@ namespace PWAppUpdater2 button1.Enabled = false; try { - PWAppUpdater.Updater.Update("C:\\PWAPP\\App\\", progressBar1, StepInfo, "C:\\PWAPP\\Temp\\"); + PWAppUpdater.Updater.Update("C:\\PWAPP\\App", progressBar1, StepInfo, "C:\\PWAPP\\Temp"); } catch (NoAuthException) { diff --git a/PWAppUpdater2/Updater.cs b/PWAppUpdater2/Updater.cs index 97a04bb..88c8f86 100644 --- a/PWAppUpdater2/Updater.cs +++ b/PWAppUpdater2/Updater.cs @@ -38,10 +38,6 @@ namespace PWAppUpdater progress.PerformStep(); stepInfo.Text = "Removing old installation..."; stepInfo.Update(); - if (Directory.Exists(installPath)) - { - Directory.Delete(installPath, true); - } progress.PerformStep(); stepInfo.Text = "Creating new install directory..."; stepInfo.Update();