From 218d5be4d61623d62e3ed01a30dbf507fb2ee71e Mon Sep 17 00:00:00 2001 From: Garritt McCune Date: Tue, 2 May 2017 23:38:00 -0500 Subject: [PATCH] Created the first version of HTML code for the front form. Changed to the Pechkin HTML to PDF library. Removed the string tester. Fixed a bug with the main form where the APC tables would not be sorted by row position. --- AdvertsingProfitControl.sln | 10 - .../AdvertsingProfitControl.csproj | 32 +- AdvertsingProfitControl/App.config | 10 +- AdvertsingProfitControl/BackPageGenerator.cs | 31 +- .../DebugDatabaseConverter.Designer.cs | 25 +- AdvertsingProfitControl/FrmLogFileViewer.cs | 9 +- AdvertsingProfitControl/FrmMain.Designer.cs | 13 +- AdvertsingProfitControl/FrmMain.cs | 108 ++- AdvertsingProfitControl/FrontPageGenerator.cs | 794 +++++++++--------- AdvertsingProfitControl/packages.config | 5 +- SetupProject/bin/Debug/SetupProject.msi | Bin 1044480 -> 0 bytes SetupProject/bin/Debug/SetupProject.wixpdb | 1 - SetupProject/obj/Debug/Product.wixobj | 1 - ...t.wixproj.BindBuiltOutputsFileListnull.txt | 2 - ...oject.wixproj.BindContentsFileListnull.txt | 1 - ...roject.wixproj.BindOutputsFileListnull.txt | 2 - .../Debug/SetupProject.wixproj.FileList.txt | 6 - StringInputParseTester/App.config | 6 - StringInputParseTester/Form1.Designer.cs | 107 --- StringInputParseTester/Form1.cs | 339 -------- StringInputParseTester/Form1.resx | 120 --- StringInputParseTester/Program.cs | 22 - .../Properties/AssemblyInfo.cs | 36 - .../Properties/Resources.Designer.cs | 71 -- .../Properties/Resources.resx | 117 --- .../Properties/Settings.Designer.cs | 30 - .../Properties/Settings.settings | 7 - .../StringInputParseTester.csproj | 90 -- .../StringInputParseTester.vshost.exe.config | 6 - ...StringInputParseTester.vshost.exe.manifest | 11 - ...le_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...le_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...le_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 .../HtmlRenderer.Core.1.5.0.6.nupkg | Bin 1093619 -> 0 bytes .../HtmlRenderer.WinForms.1.5.0.6.nupkg | Bin 264769 -> 0 bytes .../HtmlRenderer.WinForms.1.5.0.6/readme.txt | 50 -- 36 files changed, 560 insertions(+), 1502 deletions(-) delete mode 100644 SetupProject/bin/Debug/SetupProject.msi delete mode 100644 SetupProject/bin/Debug/SetupProject.wixpdb delete mode 100644 SetupProject/obj/Debug/Product.wixobj delete mode 100644 SetupProject/obj/Debug/SetupProject.wixproj.BindBuiltOutputsFileListnull.txt delete mode 100644 SetupProject/obj/Debug/SetupProject.wixproj.BindContentsFileListnull.txt delete mode 100644 SetupProject/obj/Debug/SetupProject.wixproj.BindOutputsFileListnull.txt delete mode 100644 SetupProject/obj/Debug/SetupProject.wixproj.FileList.txt delete mode 100644 StringInputParseTester/App.config delete mode 100644 StringInputParseTester/Form1.Designer.cs delete mode 100644 StringInputParseTester/Form1.cs delete mode 100644 StringInputParseTester/Form1.resx delete mode 100644 StringInputParseTester/Program.cs delete mode 100644 StringInputParseTester/Properties/AssemblyInfo.cs delete mode 100644 StringInputParseTester/Properties/Resources.Designer.cs delete mode 100644 StringInputParseTester/Properties/Resources.resx delete mode 100644 StringInputParseTester/Properties/Settings.Designer.cs delete mode 100644 StringInputParseTester/Properties/Settings.settings delete mode 100644 StringInputParseTester/StringInputParseTester.csproj delete mode 100644 StringInputParseTester/bin/Debug/StringInputParseTester.vshost.exe.config delete mode 100644 StringInputParseTester/bin/Debug/StringInputParseTester.vshost.exe.manifest delete mode 100644 StringInputParseTester/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs delete mode 100644 StringInputParseTester/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs delete mode 100644 StringInputParseTester/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs delete mode 100644 packages/HtmlRenderer.Core.1.5.0.6/HtmlRenderer.Core.1.5.0.6.nupkg delete mode 100644 packages/HtmlRenderer.WinForms.1.5.0.6/HtmlRenderer.WinForms.1.5.0.6.nupkg delete mode 100644 packages/HtmlRenderer.WinForms.1.5.0.6/readme.txt diff --git a/AdvertsingProfitControl.sln b/AdvertsingProfitControl.sln index fb42036..caa69e2 100644 --- a/AdvertsingProfitControl.sln +++ b/AdvertsingProfitControl.sln @@ -5,8 +5,6 @@ VisualStudioVersion = 15.0.26403.3 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdvertsingProfitControl", "AdvertsingProfitControl\AdvertsingProfitControl.csproj", "{4A45C665-5D02-4724-9CC5-C0C50CA44760}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StringInputParseTester", "StringInputParseTester\StringInputParseTester.csproj", "{2663661B-3D90-4D42-B05E-8038923A2891}" -EndProject Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "SetupProject", "SetupProject\SetupProject.wixproj", "{EB640D80-1A1E-4835-90B3-83A688419321}" EndProject Global @@ -25,14 +23,6 @@ Global {4A45C665-5D02-4724-9CC5-C0C50CA44760}.Release|Any CPU.Build.0 = Release|Any CPU {4A45C665-5D02-4724-9CC5-C0C50CA44760}.Release|x86.ActiveCfg = Release|Any CPU {4A45C665-5D02-4724-9CC5-C0C50CA44760}.Release|x86.Build.0 = Release|Any CPU - {2663661B-3D90-4D42-B05E-8038923A2891}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2663661B-3D90-4D42-B05E-8038923A2891}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2663661B-3D90-4D42-B05E-8038923A2891}.Debug|x86.ActiveCfg = Debug|Any CPU - {2663661B-3D90-4D42-B05E-8038923A2891}.Debug|x86.Build.0 = Debug|Any CPU - {2663661B-3D90-4D42-B05E-8038923A2891}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2663661B-3D90-4D42-B05E-8038923A2891}.Release|Any CPU.Build.0 = Release|Any CPU - {2663661B-3D90-4D42-B05E-8038923A2891}.Release|x86.ActiveCfg = Release|Any CPU - {2663661B-3D90-4D42-B05E-8038923A2891}.Release|x86.Build.0 = Release|Any CPU {EB640D80-1A1E-4835-90B3-83A688419321}.Debug|Any CPU.ActiveCfg = Debug|x86 {EB640D80-1A1E-4835-90B3-83A688419321}.Debug|x86.ActiveCfg = Debug|x86 {EB640D80-1A1E-4835-90B3-83A688419321}.Debug|x86.Build.0 = Debug|x86 diff --git a/AdvertsingProfitControl/AdvertsingProfitControl.csproj b/AdvertsingProfitControl/AdvertsingProfitControl.csproj index 7219b2e..a32ac5d 100644 --- a/AdvertsingProfitControl/AdvertsingProfitControl.csproj +++ b/AdvertsingProfitControl/AdvertsingProfitControl.csproj @@ -30,7 +30,7 @@ true - x64 + x86 true full false @@ -82,6 +82,12 @@ app.manifest + + ..\packages\Common.Logging.3.3.1\lib\net40\Common.Logging.dll + + + ..\packages\Common.Logging.Core.3.3.1\lib\net40\Common.Logging.Core.dll + ..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll True @@ -90,13 +96,8 @@ ..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll True - - ..\packages\HtmlRenderer.Core.1.5.0.6\lib\net45\HtmlRenderer.dll - True - - - ..\packages\HtmlRenderer.WinForms.1.5.0.6\lib\net45\HtmlRenderer.WinForms.dll - True + + ..\packages\Pechkin.0.5.8.1\lib\net40\Pechkin.dll @@ -282,7 +283,22 @@ Always + + Always + + + Always + + + Always + + + Always + + + Always +
- +
@@ -30,4 +30,12 @@ + + + + + + + + \ No newline at end of file diff --git a/AdvertsingProfitControl/BackPageGenerator.cs b/AdvertsingProfitControl/BackPageGenerator.cs index 3b31562..96fe57d 100644 --- a/AdvertsingProfitControl/BackPageGenerator.cs +++ b/AdvertsingProfitControl/BackPageGenerator.cs @@ -3,8 +3,8 @@ using System.Data; using System.Windows.Forms; using System.IO; using System.Drawing.Imaging; +using System.Linq; using System.Web.UI; -using TheArtOfDev.HtmlRenderer.WinForms; namespace AdvertsingProfitControl { @@ -22,9 +22,9 @@ namespace AdvertsingProfitControl try { - var imageFromHtml = HtmlRender.RenderToImage(code); - imageFromHtml.Save(Application.StartupPath + "\\BackPage.png", ImageFormat.Png); - imageFromHtml.Dispose(); + //var imageFromHtml = HtmlRender.RenderToImage(code); + //imageFromHtml.Save(Application.StartupPath + "\\BackPage.png", ImageFormat.Png); + //imageFromHtml.Dispose(); } catch (Exception e) { @@ -36,7 +36,28 @@ namespace AdvertsingProfitControl } } - public void GenerateWeeklyInventoryControlPage(int dateId) + public void RenderHtmlCodeToImage(string path, string targetPath) + { + var htmlCode = File.ReadAllLines(path); + var code = htmlCode.Aggregate("", (current, line) => current + "\r\n" + line); + + try + { + //var imageFromHtml = HtmlRender.RenderToImage(code); + //imageFromHtml.Save(targetPath, ImageFormat.Png); + //imageFromHtml.Dispose(); + } + catch (Exception e) + { + _console.WriteToLog(FrmLogConsole.Level.Critical, + "Failed to generate an updated image for the back page of Advertising Profit Control."); + _console.WriteToLog(FrmLogConsole.Level.Debug, e.Message); + _console.WriteToLog(FrmLogConsole.Level.Info, "This is most likely a screw you from the GDI+ subsystem of Windows."); + + } + } + + public void GenerateWeeklyInventoryControlPage(int dateId) { //var databaseTracker = new DatabaseTracker(); //var databaseReader = new DatabaseReader(); diff --git a/AdvertsingProfitControl/DebugDatabaseConverter.Designer.cs b/AdvertsingProfitControl/DebugDatabaseConverter.Designer.cs index b28c4f5..741a5ac 100644 --- a/AdvertsingProfitControl/DebugDatabaseConverter.Designer.cs +++ b/AdvertsingProfitControl/DebugDatabaseConverter.Designer.cs @@ -34,7 +34,7 @@ this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); this.convertButton = new System.Windows.Forms.Button(); this.label1 = new System.Windows.Forms.Label(); - this.button1 = new System.Windows.Forms.Button(); + this.webBrowser1 = new System.Windows.Forms.WebBrowser(); this.SuspendLayout(); // // existingDatesListBox @@ -90,22 +90,23 @@ this.label1.TabIndex = 4; this.label1.Text = "label1"; // - // button1 + // webBrowser1 // - this.button1.Location = new System.Drawing.Point(400, 530); - this.button1.Name = "button1"; - this.button1.Size = new System.Drawing.Size(141, 58); - this.button1.TabIndex = 5; - this.button1.Text = "button1"; - this.button1.UseVisualStyleBackColor = true; - this.button1.Click += new System.EventHandler(this.button1_Click); + this.webBrowser1.AllowNavigation = false; + this.webBrowser1.AllowWebBrowserDrop = false; + this.webBrowser1.Location = new System.Drawing.Point(776, 53); + this.webBrowser1.MinimumSize = new System.Drawing.Size(20, 20); + this.webBrowser1.Name = "webBrowser1"; + this.webBrowser1.Size = new System.Drawing.Size(1524, 940); + this.webBrowser1.TabIndex = 6; + this.webBrowser1.Url = new System.Uri("file:///C:/Users/Crypto/Desktop/FrontPage.html", System.UriKind.Absolute); // // DebugDatabaseConverter // this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(701, 592); - this.Controls.Add(this.button1); + this.ClientSize = new System.Drawing.Size(2374, 1114); + this.Controls.Add(this.webBrowser1); this.Controls.Add(this.label1); this.Controls.Add(this.convertButton); this.Controls.Add(this.moveOverButton); @@ -127,6 +128,6 @@ private System.Windows.Forms.OpenFileDialog openFileDialog1; private System.Windows.Forms.Button convertButton; private System.Windows.Forms.Label label1; - private System.Windows.Forms.Button button1; + private System.Windows.Forms.WebBrowser webBrowser1; } } \ No newline at end of file diff --git a/AdvertsingProfitControl/FrmLogFileViewer.cs b/AdvertsingProfitControl/FrmLogFileViewer.cs index a36a975..91d9fe0 100644 --- a/AdvertsingProfitControl/FrmLogFileViewer.cs +++ b/AdvertsingProfitControl/FrmLogFileViewer.cs @@ -53,7 +53,14 @@ namespace AdvertsingProfitControl var node = new TreeNode(file.Name) { Name = file.FullName }; fileListTreeView.Nodes.Add(node); } - + //Grab the HTML files + fileNames = Directory.GetFiles(Application.StartupPath, "*.html", SearchOption.TopDirectoryOnly); + foreach (var fileName in fileNames) + { + var file = new FileInfo(fileName); + var node = new TreeNode(file.Name) { Name = file.FullName }; + fileListTreeView.Nodes.Add(node); + } if (fileListTreeView.Nodes.Count <= 0) return; ReadSelectedFile(); } diff --git a/AdvertsingProfitControl/FrmMain.Designer.cs b/AdvertsingProfitControl/FrmMain.Designer.cs index 1d1df48..ab24466 100644 --- a/AdvertsingProfitControl/FrmMain.Designer.cs +++ b/AdvertsingProfitControl/FrmMain.Designer.cs @@ -52,6 +52,7 @@ this.rawViewDebugMainMenu = new System.Windows.Forms.ToolStripMenuItem(); this.migrateDatabaseDebugMainMenu = new System.Windows.Forms.ToolStripMenuItem(); this.addRecordToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.testToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mainTableLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); this.commentMainTableLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); this.profitAnalysisMainGroupBox = new System.Windows.Forms.GroupBox(); @@ -140,7 +141,6 @@ this.printPreviewButton.TabIndex = 4; this.printPreviewButton.Text = "Print Preview"; this.printPreviewButton.UseVisualStyleBackColor = true; - this.printPreviewButton.Visible = false; this.printPreviewButton.Click += new System.EventHandler(this.DisplayPrintPreview); // // mainMenu @@ -299,7 +299,8 @@ this.debugMainMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.rawViewDebugMainMenu, this.migrateDatabaseDebugMainMenu, - this.addRecordToolStripMenuItem}); + this.addRecordToolStripMenuItem, + this.testToolStripMenuItem}); this.debugMainMenu.Name = "debugMainMenu"; this.debugMainMenu.Size = new System.Drawing.Size(87, 34); this.debugMainMenu.Text = "Debug"; @@ -326,6 +327,13 @@ this.addRecordToolStripMenuItem.Text = "Add Re&cord"; this.addRecordToolStripMenuItem.Click += new System.EventHandler(this.DisplayLegacyAddRecord); // + // testToolStripMenuItem + // + this.testToolStripMenuItem.Name = "testToolStripMenuItem"; + this.testToolStripMenuItem.Size = new System.Drawing.Size(270, 34); + this.testToolStripMenuItem.Text = "Test"; + this.testToolStripMenuItem.Click += new System.EventHandler(this.testToolStripMenuItem_Click); + // // mainTableLayoutPanel // this.mainTableLayoutPanel.ColumnCount = 2; @@ -1117,6 +1125,7 @@ private System.Windows.Forms.ToolStripMenuItem clearCurrentRecordSelectedDateToolsMainMenu; private System.Windows.Forms.ToolStripMenuItem clearCurrentActiveYearTools; private System.Windows.Forms.ToolStripMenuItem examineLogsToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem testToolStripMenuItem; } } diff --git a/AdvertsingProfitControl/FrmMain.cs b/AdvertsingProfitControl/FrmMain.cs index 49080cf..270abf6 100644 --- a/AdvertsingProfitControl/FrmMain.cs +++ b/AdvertsingProfitControl/FrmMain.cs @@ -2,7 +2,6 @@ using System.Data.Entity.Infrastructure; using System.Drawing; using System.Drawing.Printing; -using System.IO; using System.Linq; using System.Transactions; using System.Windows.Forms; @@ -337,43 +336,68 @@ namespace AdvertsingProfitControl private void DisplayPrintPreview(object sender, EventArgs e) { //Build and render the front and back forms of the document. - var test = new FrontPageGenerator(); - var backPageTest = new BackPageGenerator(); - var printTestPage = new PrintDocument(); - var printDialog = new PrintPreviewDialog(); - if (!usePreRenderedFilesCheckbox.Checked) - { - //var databaseTracker = new DatabaseTracker(); - //var databaseReader = new DatabaseReader(); - //var dateId = - // databaseReader.RetrieveDateIdByDateString(monthCalendar.SelectionStart.ToShortDateString(), - // databaseTracker.DatabaseConnectionString); - //var remaingingSales = _departmentSales - _salesProducedByAdItems; - //var totalProfitReturnFromReminaingSales = remaingingSales * .3m; - //var totalProfitReturn = _totalProfitReturnFromAdItems + totalProfitReturnFromReminaingSales; - ////test.BuildFormFrontCompressedLayout(dateId, _departmentSales, _salesProducedByAdItems, remaingingSales, - // //_totalProfitReturnFromAdItems, totalProfitReturnFromReminaingSales, totalProfitReturn, - // //commentsTextBox.Text); - //test.RenderHtmlToImage(); - //backPageTest.GenerateWeeklyInventoryControlPage(dateId); - //backPageTest.RenderHtmlToImage(); - } - else - { - if (File.Exists(Application.StartupPath + "\\" + "FrontPage.html") && - File.Exists(Application.StartupPath + "\\" + "Backpage.html")) - { - test.RenderHtmlToImage(); - backPageTest.RenderHtmlToImage(); - } - } + //var test = new FrontPageGenerator(); + //var backPageTest = new BackPageGenerator(); + //var printTestPage = new PrintDocument(); + //var printDialog = new PrintPreviewDialog(); + //if (!usePreRenderedFilesCheckbox.Checked) + //{ + // //var databaseTracker = new DatabaseTracker(); + // //var databaseReader = new DatabaseReader(); + // //var dateId = + // // databaseReader.RetrieveDateIdByDateString(monthCalendar.SelectionStart.ToShortDateString(), + // // databaseTracker.DatabaseConnectionString); + // //var remaingingSales = _departmentSales - _salesProducedByAdItems; + // //var totalProfitReturnFromReminaingSales = remaingingSales * .3m; + // //var totalProfitReturn = _totalProfitReturnFromAdItems + totalProfitReturnFromReminaingSales; + // ////test.BuildFormFrontCompressedLayout(dateId, _departmentSales, _salesProducedByAdItems, remaingingSales, + // // //_totalProfitReturnFromAdItems, totalProfitReturnFromReminaingSales, totalProfitReturn, + // // //commentsTextBox.Text); + // //test.RenderHtmlToImage(); + // //backPageTest.GenerateWeeklyInventoryControlPage(dateId); + // //backPageTest.RenderHtmlToImage(); + //} + //else + //{ + // if (File.Exists(Application.StartupPath + "\\" + "FrontPage.html") && + // File.Exists(Application.StartupPath + "\\" + "Backpage.html")) + // { + // test.RenderHtmlToImage(); + // backPageTest.RenderHtmlToImage(); + // } + //} //var margin = new Margins(50, 50, 0, 0); //printDoc.DefaultPageSettings.Margins = margin; - printTestPage.PrintPage += PrintPage; - printDialog.Document = printTestPage; - printDialog.ShowDialog(); - printDialog.Document = new PrintDocument(); + //printTestPage.PrintPage += PrintPage; + //printDialog.Document = printTestPage; + //printDialog.ShowDialog(); + //printDialog.Document = new PrintDocument(); + + //var dialog = new FolderBrowserDialog(); + //dialog.ShowDialog(); + //var path = dialog.SelectedPath; + var gen = new FrontPageGenerator(); + gen.BuildFormFrontCompressedLayout(_currentActiveDate); + //var pdf = gen.RenderHtmlCodeToImage(path + "\\FrontPage.html", path + "\\Image.pdf"); + //var doc = new PrintDocument(); + //doc.PrintPage += RenderPage; + //var spam = new PrintPreviewDialog {Document = doc}; + //spam.ShowDialog(); + //var form = new Test(); + //form.ShowDialog(); + } + + private void RenderPage(object sender, PrintPageEventArgs e) + { + var dialog = new FolderBrowserDialog(); + dialog.ShowDialog(); + var path = dialog.SelectedPath; + var gen = new FrontPageGenerator(); + var pdf = gen.RenderHtmlCodeToImage(path + "\\FrontPage.html", path + "\\Image.pdf"); + e.Graphics.DrawString(pdf.ToString(), DefaultFont, new SolidBrush(Color.Black), 1000, 1000); + + e.Graphics.PageUnit = GraphicsUnit.Inch; } #endregion @@ -500,7 +524,7 @@ namespace AdvertsingProfitControl var adSpecialIndex = -1; decimal totalSales = 0; decimal totalProfitReturn = 0; - var projections = db.Projections.Where(x => x.WeekEndingDate.Id == dateRecord.Id).Select(x => x); + var projections = db.Projections.Where(x => x.WeekEndingDate.Id == dateRecord.Id).Select(x => x).OrderBy(x => x.RowPosition); foreach (var p in projections) { @@ -558,7 +582,7 @@ namespace AdvertsingProfitControl { var db = new AdvertisingProfitControlModel(); var adSpecialIndex = -1; - var inventories = db.Inventories.Where(x => x.WeekEndingDate.Id == dateRecord.Id).Select(x => x); + var inventories = db.Inventories.Where(x => x.WeekEndingDate.Id == dateRecord.Id).Select(x => x).OrderBy(x => x.RowPosition); foreach (var i in inventories) { @@ -592,7 +616,7 @@ namespace AdvertsingProfitControl var adSpecialIndex = -1; decimal totalSales = 0; decimal totalProfitReturn = 0; - var actualSales = db.ActualSales.Where(x => x.WeekEndingDate.Id == dateRecord.Id).Select(x => x); + var actualSales = db.ActualSales.Where(x => x.WeekEndingDate.Id == dateRecord.Id).Select(x => x).OrderBy(x => x.RowPosition); foreach (var a in actualSales) { @@ -1124,5 +1148,13 @@ namespace AdvertsingProfitControl var result = (decimal) form.Shrink / 100; CalculateProfitAnalysis(result); } + + private void testToolStripMenuItem_Click(object sender, EventArgs e) + { + var page = new FrontPageGenerator(); + page.RenderHtmlCodeToImage("C:\\Users\\Crypto\\Desktop\\TestPage.html", + "C:\\Users\\Crypto\\Desktop\\FrontTest.pdf"); + + } } } \ No newline at end of file diff --git a/AdvertsingProfitControl/FrontPageGenerator.cs b/AdvertsingProfitControl/FrontPageGenerator.cs index 90d8a65..a981af4 100644 --- a/AdvertsingProfitControl/FrontPageGenerator.cs +++ b/AdvertsingProfitControl/FrontPageGenerator.cs @@ -1,10 +1,11 @@ using System; +using System.Drawing.Printing; using System.Windows.Forms; using System.IO; using System.Web.UI; -using System.Drawing; -using System.Drawing.Imaging; -using TheArtOfDev.HtmlRenderer.WinForms; +using System.Linq; +using System.Web.UI.WebControls; +using Pechkin; namespace AdvertsingProfitControl { @@ -23,10 +24,10 @@ namespace AdvertsingProfitControl try { - var imageFromHtml = HtmlRender.RenderToImage(code); - imageFromHtml.RotateFlip(RotateFlipType.Rotate90FlipNone); - imageFromHtml.Save(Application.StartupPath + "\\FrontPage.png", ImageFormat.Png); - imageFromHtml.Dispose(); + //var imageFromHtml = HtmlRender.RenderToImage(code); + //imageFromHtml.RotateFlip(RotateFlipType.Rotate90FlipNone); + //imageFromHtml.Save(Application.StartupPath + "\\FrontPage.png", ImageFormat.Png); + //imageFromHtml.Dispose(); } catch (Exception e) { @@ -38,469 +39,466 @@ namespace AdvertsingProfitControl } } - public void BuildFormFrontCompressedLayout(int dateId, double departmentSales, double salesProducedByAdItems, double remainingSales, double totalProfitReturnFromAdItems, double totalProfitReturnFromRemainingSales, double totalProfitReturn, string comments) + public byte[] RenderHtmlCodeToImage(string path, string targetPath) + { + var htmlCode = File.ReadAllLines(path); + var code = htmlCode.Aggregate("", (current, line) => current + "\r\n" + line); + try + { + var config = new Pechkin.GlobalConfig().SetPaperSize(PaperKind.A4).SetPaperOrientation(true); + byte[] pdfBuf = new SimplePechkin(config).Convert(code); + using (var fs = new FileStream(targetPath, FileMode.Create, FileAccess.Write)) + { + fs.Write(pdfBuf, 0, pdfBuf.Length); + } + return pdfBuf; + } + catch (Exception e) + { + _console.WriteToLog(FrmLogConsole.Level.Critical, + "Failed to generate an updated image for the back page of Advertising Profit Control."); + _console.WriteToLog(FrmLogConsole.Level.Debug, e.Message); + _console.WriteToLog(FrmLogConsole.Level.Info, "This is most likely a screw you from the GDI+ subsystem of Windows."); + + } + return new byte[1]; + } + + public void BuildFormFrontCompressedLayout(DateTime date) { - //var databaseTracker = new DatabaseTracker(); - //var databaseReader = new DatabaseReader(); var stringWriter = new StringWriter(); var writer = new HtmlTextWriter(stringWriter); - //var table = databaseReader.ReturnApcTableForReport(dateId, databaseTracker.DatabaseConnectionString); - //var dateString = databaseReader.RetrieveDateStringById(dateId, databaseTracker.DatabaseConnectionString); - //var spam = dateString.Split(' '); - //dateString = spam[0]; - //Begin evaluating the size of the table. - var isCompressedFormat = false; - var willGenerateCommentRow = false; - //if ((table.Rows.Count + 1) == 15) - //{ - // willGenerateCommentRow = true; - //} - //else if ((table.Rows.Count + 1) < 15) - //{ - // isCompressedFormat = true; - //} + var db = new AdvertisingProfitControlModel(); + var dateRecord = db.WeekEndingDates.SingleOrDefault(x => x.EndingDate == date); + if (dateRecord == null) + { + MessageBox.Show("Failed"); + return; + } writer.Write("\n"); writer.RenderBeginTag(HtmlTextWriterTag.Html); writer.RenderBeginTag(HtmlTextWriterTag.Head); writer.AddAttribute(HtmlTextWriterAttribute.Type, "text/css"); + //Set the global style for the data cells. writer.RenderBeginTag(HtmlTextWriterTag.Style); - writer.Write("th{margins:0; padding:0; vertical-align:bottom; height:35px; font-size:14px; border:1px solid black}"); - writer.Write("td{margins:0; padding:0; border:1px solid black; font-size:14px; text-align:center; height:35px}"); - writer.RenderEndTag();//style - writer.RenderEndTag(); // Head - writer.AddAttribute(HtmlTextWriterAttribute.Style, "width:11in; height:8in"); + writer.Write("td{margins:0; padding:2px; border:1px solid black; font-size:20px; text-align:center; vertical-align:bottom}"); + writer.RenderEndTag();// end style + writer.RenderEndTag(); // end Head writer.RenderBeginTag(HtmlTextWriterTag.Body); - //Begin building the header for the page, the HTML engine doesn't seem to like putting content in the Head. - writer.AddAttribute(HtmlTextWriterAttribute.Style, "margin-top:200px; width:100%"); + writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none; border-collapse: collapse; width:100%; height:100%"); //style for the table writer.RenderBeginTag(HtmlTextWriterTag.Table); - writer.AddAttribute(HtmlTextWriterAttribute.Style, "margin:0px; padding:0px"); - writer.RenderBeginTag(HtmlTextWriterTag.Tr); - writer.AddAttribute(HtmlTextWriterAttribute.Style, "font-size:14px; width:20%; vertical-align:bottom; border:none"); + //Begin rendering the top rows, the form name, store, department and date fields. + writer.RenderBeginTag(HtmlTextWriterTag.Tr);//begin first row + writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none; font-size:40px"); + writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "20"); writer.RenderBeginTag(HtmlTextWriterTag.Td); - writer.Write("

Store Name: Allen's of Hastings

"); - writer.RenderEndTag();//td - writer.AddAttribute(HtmlTextWriterAttribute.Style, "width:50%; font-size:15px; margin:0px; padding: 0px 0px 0px 0px; border:none"); - writer.RenderBeginTag(HtmlTextWriterTag.Td); //

(Mode: " + (willGenerateCommentRow ? "Generates Comment row" : "Compressed Format") + ") - writer.Write("

Advertising Profit Control v " + Application.ProductVersion + "

"); - writer.RenderEndTag();//td - writer.AddAttribute(HtmlTextWriterAttribute.Style, "width:33%; padding: 0px 0px 0px 0px; margin:0px; border:none; vertical-align:bottom"); - writer.RenderBeginTag(HtmlTextWriterTag.Td); - writer.Write("

Week Ending: + dateString +
Department: Produce

"); - writer.RenderEndTag();//td - writer.RenderEndTag();//tr - writer.AddAttribute(HtmlTextWriterAttribute.Style, "margin:0px; padding:0px"); - writer.RenderBeginTag(HtmlTextWriterTag.Tr); + writer.Write("Advertising Profit Control v" + Application.ProductVersion + ""); + writer.RenderEndTag();//end product cell. + writer.RenderEndTag(); //End of first row + writer.RenderBeginTag(HtmlTextWriterTag.Tr); //begin second row + writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:left; border:none"); + writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "9"); + writer.RenderBeginTag(HtmlTextWriterTag.Td);//begin store name cell + writer.Write("Store Name: Allen's of Hastings"); + writer.RenderEndTag();//end store name cell + writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right; border:none"); + writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "11"); + writer.RenderBeginTag(HtmlTextWriterTag.Td); //begin date and department cell + writer.Write("Week Ending: " + date.ToString("d") + "
Department: Produce"); + writer.RenderEndTag();//End date and department cell + writer.RenderEndTag();// second row + writer.RenderBeginTag(HtmlTextWriterTag.Tr);//begin label row writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none"); writer.RenderBeginTag(HtmlTextWriterTag.Td); - writer.RenderEndTag();//td + writer.RenderEndTag(); writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none"); - writer.RenderBeginTag(HtmlTextWriterTag.Td); - writer.Write("

ProjectionActual

"); - writer.RenderEndTag();//td + writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "6"); + writer.RenderBeginTag(HtmlTextWriterTag.Td);//projections label cell + writer.Write("Projection"); + writer.RenderEndTag();//end projections label cell writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none"); - writer.RenderBeginTag(HtmlTextWriterTag.Td); - writer.Write("

Profit Analysis

"); - writer.RenderEndTag();//td - writer.RenderEndTag();//tr - writer.RenderEndTag();//table - //END of header table structure - writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none; border-collapse: collapse; width:11in; height:7.0in; table-layout:fixed"); //style for the table - writer.RenderBeginTag(HtmlTextWriterTag.Table); + writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "10"); + writer.RenderBeginTag(HtmlTextWriterTag.Td);//actual label cell + writer.Write("Actual"); + writer.RenderEndTag();//end actual label cell + writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "3"); + writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none"); + writer.RenderBeginTag(HtmlTextWriterTag.Td);//cost analysis label cell + writer.Write("Cost Analysis"); + writer.RenderEndTag();//end cost analysis label cell + writer.RenderEndTag();//end label row (third row) writer.RenderBeginTag(HtmlTextWriterTag.Tr); //Begin building the header row. - writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-left:none"); - writer.RenderBeginTag(HtmlTextWriterTag.Th); + writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-left:none; border-right:double"); + writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.Write("Ad Items"); writer.RenderEndTag(); //th writer.AddAttribute(HtmlTextWriterAttribute.Style, "background-color:#e9e9e9"); - writer.RenderBeginTag(HtmlTextWriterTag.Th); + writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.Write("Sold"); writer.RenderEndTag(); //th writer.AddAttribute(HtmlTextWriterAttribute.Style, "background-color:#e9e9e9"); - writer.RenderBeginTag(HtmlTextWriterTag.Th); + writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.Write("Sale
Price"); writer.RenderEndTag(); //th writer.AddAttribute(HtmlTextWriterAttribute.Style, "background-color:#e9e9e9"); - writer.RenderBeginTag(HtmlTextWriterTag.Th); + writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.Write("Total
Sales"); writer.RenderEndTag(); //th writer.AddAttribute(HtmlTextWriterAttribute.Style, "background-color:#e9e9e9"); - writer.RenderBeginTag(HtmlTextWriterTag.Th); + writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.Write("Cost"); writer.RenderEndTag(); //th writer.AddAttribute(HtmlTextWriterAttribute.Style, "background-color:#e9e9e9"); - writer.RenderBeginTag(HtmlTextWriterTag.Th); + writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.Write("$
Prof.
Retn."); writer.RenderEndTag(); //th - writer.AddAttribute(HtmlTextWriterAttribute.Style, "background-color:#e9e9e9"); - writer.RenderBeginTag(HtmlTextWriterTag.Th); + writer.AddAttribute(HtmlTextWriterAttribute.Style, "background-color:#e9e9e9; border-right:double"); + writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.Write("Total
$
Prof.
Retn."); writer.RenderEndTag(); //th - writer.RenderBeginTag(HtmlTextWriterTag.Th); + writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.Write("Beg.
Inv."); writer.RenderEndTag(); //th - writer.RenderBeginTag(HtmlTextWriterTag.Th); + writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.Write("Rec'd"); writer.RenderEndTag(); //th - writer.RenderBeginTag(HtmlTextWriterTag.Th); + writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.Write("Total"); writer.RenderEndTag(); //th - writer.RenderBeginTag(HtmlTextWriterTag.Th); + writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.Write("End.
Inv."); writer.RenderEndTag(); //th - writer.RenderBeginTag(HtmlTextWriterTag.Th); + writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.Write("Sold"); writer.RenderEndTag(); //th - writer.RenderBeginTag(HtmlTextWriterTag.Th); + writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.Write("Sale
Price"); writer.RenderEndTag(); //th - writer.RenderBeginTag(HtmlTextWriterTag.Th); + writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.Write("Total
Sales"); writer.RenderEndTag(); //th - writer.RenderBeginTag(HtmlTextWriterTag.Th); + writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.Write("Cost"); writer.RenderEndTag(); //th - writer.RenderBeginTag(HtmlTextWriterTag.Th); + writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.Write("$
Prof.
Retn."); - writer.RenderEndTag(); //th - writer.RenderBeginTag(HtmlTextWriterTag.Th); + writer.RenderEndTag(); //th + writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.Write("Total
$
Prof.
Retn."); writer.RenderEndTag(); //th //Department Sales - writer.AddAttribute(HtmlTextWriterAttribute.Style, "width:159px; border-right:none"); - writer.RenderBeginTag(HtmlTextWriterTag.Td); - writer.Write("
Department
Sales

1"+ $"{departmentSales:C}" + "

"); - writer.RenderEndTag();//td + //Grab the department sales from the database + var departmentRecord = db.WeeklySales.SingleOrDefault(x => x.FkDateId == dateRecord.Id); + writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-right:none; border-left:double; font-size:9px"); + writer.RenderBeginTag(HtmlTextWriterTag.Td);//begin number cell + writer.Write("1"); + writer.RenderEndTag();//end number cell + writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-right:none; border-left:none"); + writer.RenderBeginTag(HtmlTextWriterTag.Td);//begin department sales cell + writer.Write("Department
Sales"); + writer.RenderEndTag();//end department sales cell + writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-right:none; border-left:none"); + writer.RenderBeginTag(HtmlTextWriterTag.Td);//department sales total sales column + writer.AddAttribute(HtmlTextWriterAttribute.Style, "margin:0px; border-left:1px solid black; border-top:1px dashed black; text-align:right"); + writer.RenderBeginTag(HtmlTextWriterTag.P);//begin department sales paragraph tag; used because the borders of the element are flush with that of the cell's. + writer.Write(departmentRecord == null ? "$0.00" : $"{departmentRecord.TotalSales:C}"); + writer.RenderEndTag();//end department sales paragraph tag + writer.RenderEndTag();//department sales total sales column writer.RenderEndTag();//End of header row code. - - var isRowMember = false; - var isRenderingGroup = false; - var adSpecialRowIndex = -1; - //Variables for the Totals row. - double projectionProfitReturn = 0; - double projectionTotalProfitReturn = 0; - double actualProfitReturn = 0; - double actualTotalProfitReturn = 0; - var adSpecialOffset = 0; //Profit Analysis values. - //for (var rowIndex = 0; rowIndex < (table.Rows.Count < 19 ? 19 : table.Rows.Count); rowIndex++) //The comparison in the for loop is index based, so no need to add one to the row count. - //{ - // var isProfitAnalysisCell = false; - // //IF the row index goes beyond the number of rows that are in the table, then start padding with blank cells to fit the Profit Analysis cells. - // if (rowIndex < table.Rows.Count) - // { - // var row = table.Rows[rowIndex]; - // var rowAttribute = 0; - // var groupId = 0; - // if (int.TryParse(row.ItemArray[17].ToString(), out rowAttribute)) - // { - // if (rowAttribute != 0) - // { - // if (rowAttribute == 1) - // { - // isRowMember = false; - // } - // else - // { - // isRowMember = true; - // } - // isRenderingGroup = true; - // } - // else - // { - // isRenderingGroup = false; - // isRowMember = false; - // } - // } - // if (adSpecialRowIndex == -1 && int.TryParse(row.ItemArray[18].ToString(), out groupId)) - // { - // if (groupId != 0) - // { - // adSpecialRowIndex = rowIndex; - // writer.RenderBeginTag(HtmlTextWriterTag.Tr); - // writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "17"); - // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-left:none"); - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // writer.Write("
" + - // databaseReader.ReturnGroupNameFromGroupId(groupId.ToString(), - // databaseTracker.DatabaseConnectionString) + "
"); - // writer.RenderEndTag(); //td - // writer.RenderEndTag(); //tr - // BuildProfitAnalysisCell(ref writer, rowIndex, out isProfitAnalysisCell, salesProducedByAdItems, remainingSales, totalProfitReturnFromAdItems, totalProfitReturnFromRemainingSales, totalProfitReturn); - // adSpecialOffset++; - // } - // } - // writer.RenderBeginTag(HtmlTextWriterTag.Tr); - // for (var i = 0; i < row.ItemArray.Length; i++) - // { - // if (i >= 17) continue; - // if (i == 0) - // { - // writer.AddStyleAttribute(HtmlTextWriterStyle.TextAlign, "left"); - // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-left:none"); - // } - // else if (i > 0 && i < 7) - // { - // //background-color:#e9e9e9 - // writer.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, "#e9e9e9"); - // } - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // decimal number; - // if (decimal.TryParse(row.ItemArray[i].ToString(), out number)) - // { - // //Check for the inventory columns and the sold columns. - // if (!isRowMember) - // { - // if (i == 1 || i > 6 && i < 12) - // { - // writer.Write(number == 0 ? "0" : row.ItemArray[i].ToString()); - // } - // if (i > 1 && i < 7 || i > 11) - // { - // writer.Write(number == 0 ? "0.00" : $"{number:N}"); - // } - // } + var projections = db.Projections.Where(x => x.FkDateId == dateRecord.Id).OrderBy(x => x.RowPosition).ToList(); + var inventory = db.Inventories.Where(x => x.FkDateId == dateRecord.Id).OrderBy(x => x.RowPosition).ToList(); + var actualSales = db.ActualSales.Where(x => x.FkDateId == dateRecord.Id).OrderBy(x => x.RowPosition).ToList(); + var comments = db.Notes.SingleOrDefault(x => x.FkDateId == dateRecord.Id); + var projectionA = projections.Sum(x => x.TotalSales); + var projectionB = projections.Sum(x => x.TotalProfitReturn); + var actualA = actualSales.Sum(x => x.TotalSales); + var actualB = actualSales.Sum(x => x.TotalProfitReturn); + var adSpecialIndex = -1; + for (var i = 0; i < 25; i++) + { + var skipCheck = false; + if (i < projections.Count) + { + if (projections[i].FkAdSpecialId != null) + { + if (adSpecialIndex == -1) + { + writer.RenderBeginTag(HtmlTextWriterTag.Tr); //ad special table row + writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-left:none; border-right:double"); + writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "17"); + writer.RenderBeginTag(HtmlTextWriterTag.Td); + writer.Write(projections[i].AdSpecial.Name); + writer.RenderEndTag(); //ad special cell + skipCheck = true; + SelectCostAnalysisCell(i, ref writer, actualA, actualB, departmentRecord, comments); + writer.RenderEndTag(); //end ad special row + } + adSpecialIndex = i; + } + writer.RenderBeginTag(HtmlTextWriterTag.Tr); + writer.AddAttribute(HtmlTextWriterAttribute.Style, + "border-left:none; border-right:double; text-align:left"); + writer.RenderBeginTag(HtmlTextWriterTag.Td); //ad item cell + writer.Write(projections[i].AdItem.Name); + writer.RenderEndTag(); //end ad item cell + writer.AddAttribute(HtmlTextWriterAttribute.Style, "background-color:#e9e9e9"); + writer.RenderBeginTag(HtmlTextWriterTag.Td); //projection sold + writer.Write(projections[i].Sold); + writer.RenderEndTag(); //end projection sold + writer.AddAttribute(HtmlTextWriterAttribute.Style, "background-color:#e9e9e9"); + writer.RenderBeginTag(HtmlTextWriterTag.Td); //projection sale price + writer.Write(projections[i].SalePrice); + writer.RenderEndTag(); //end projection sale price + writer.AddAttribute(HtmlTextWriterAttribute.Style, "background-color:#e9e9e9"); + writer.RenderBeginTag(HtmlTextWriterTag.Td); //projection total sales + writer.Write($"{projections[i].TotalSales:N2}"); + writer.RenderEndTag(); //end projection total sales + writer.AddAttribute(HtmlTextWriterAttribute.Style, "background-color:#e9e9e9"); + writer.RenderBeginTag(HtmlTextWriterTag.Td); //projection cost + writer.Write($"{projections[i].Cost:N2}"); + writer.RenderEndTag(); //end projection cost + writer.AddAttribute(HtmlTextWriterAttribute.Style, "background-color:#e9e9e9"); + writer.RenderBeginTag(HtmlTextWriterTag.Td); //projection profit return + writer.Write($"{projections[i].ProfitReturn:N2}"); + writer.RenderEndTag(); //end projection profit return + writer.AddAttribute(HtmlTextWriterAttribute.Style, "background-color:#e9e9e9; border-right:double"); + writer.RenderBeginTag(HtmlTextWriterTag.Td); //projection total profit return + writer.Write($"{projections[i].TotalProfitReturn:N2}"); + writer.RenderEndTag(); //end projection total profit return + writer.RenderBeginTag(HtmlTextWriterTag.Td); //inventory beginning + writer.Write(inventory[i].BeginningInventory); + writer.RenderEndTag(); //end inventory beginning + writer.RenderBeginTag(HtmlTextWriterTag.Td); //inventory received + writer.Write(inventory[i].Recieved); + writer.RenderEndTag(); //end inventory received + writer.RenderBeginTag(HtmlTextWriterTag.Td); //inventory total + writer.Write(inventory[i].TotalInventory); + writer.RenderEndTag(); //end inventory total + writer.RenderBeginTag(HtmlTextWriterTag.Td); //inventory ending + writer.Write(inventory[i].EndingInventory); + writer.RenderEndTag(); //end inventory ending + writer.RenderBeginTag(HtmlTextWriterTag.Td); //actual sales sold + writer.Write(actualSales[i].Sold); + writer.RenderEndTag(); //end actual sales sold + writer.RenderBeginTag(HtmlTextWriterTag.Td); //actual sales sale price + writer.Write(actualSales[i].SalePrice); + writer.RenderEndTag(); //end actual sales sale price + writer.RenderBeginTag(HtmlTextWriterTag.Td); //actual sales total sales + writer.Write($"{actualSales[i].TotalSales:N2}"); + writer.RenderEndTag(); //end actual sales total sales + writer.RenderBeginTag(HtmlTextWriterTag.Td); //actual sales cost + writer.Write($"{actualSales[i].Cost:N2}"); + writer.RenderEndTag(); //end actual sales cost + writer.RenderBeginTag(HtmlTextWriterTag.Td); //actual sales profit return + writer.Write($"{actualSales[i].ProfitReturn:N2}"); + writer.RenderEndTag(); //end actual sales profit return + writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-right:double"); + writer.RenderBeginTag(HtmlTextWriterTag.Td); //actual sales total profit return + writer.Write($"{actualSales[i].TotalProfitReturn:N2}"); + writer.RenderEndTag(); //end actual sales total profit return + } + else + { + //Pad + AppendPaddingRow(ref writer); + } + if(!skipCheck) SelectCostAnalysisCell(adSpecialIndex != -1 ? i + 1 : i, ref writer, actualA, actualB, departmentRecord, comments); + writer.RenderEndTag();//tr + } + //Create the totals row + writer.RenderBeginTag(HtmlTextWriterTag.Tr); + writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-left:none; border-right:double"); + writer.RenderBeginTag(HtmlTextWriterTag.Td);//empty cell + writer.RenderEndTag();//end padding + writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right"); + writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2"); + writer.RenderBeginTag(HtmlTextWriterTag.Td);//projections total label cell + writer.Write("TOTAL"); + writer.RenderEndTag();//end projections total label cell + writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2"); + writer.RenderBeginTag(HtmlTextWriterTag.Td);//projections A (total sales) + writer.Write("(A) " + $"{projectionA:N2}"); + writer.RenderEndTag();//end projections A (total sales) + writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-right:double"); + writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2"); + writer.RenderBeginTag(HtmlTextWriterTag.Td);//projections B (total profit return) + writer.Write("(B) " + $"{projectionB:N2}"); + writer.RenderEndTag();//end projections B (total profit return) + writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "5"); + writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right"); + writer.RenderBeginTag(HtmlTextWriterTag.Td);//actual sales total label cell + writer.Write("TOTAL"); + writer.RenderEndTag();//end actual sales total label cell + writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2"); + writer.RenderBeginTag(HtmlTextWriterTag.Td);//actual sales A (total sales) + writer.Write("(A) " + $"{actualA:N2}"); + writer.RenderEndTag();//end actual sales A (total sales) + writer.RenderBeginTag(HtmlTextWriterTag.Td);//begin empty cell + writer.RenderEndTag();//end empty cell + writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-right:double"); + writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2"); + writer.RenderBeginTag(HtmlTextWriterTag.Td);//actual sales B (total profit return) + writer.Write("(B) " + $"{actualB:N2}"); + writer.RenderEndTag();//end actual sales A (total profit return) + writer.RenderEndTag();//end totals row + //end totals row + writer.RenderEndTag();//table + writer.RenderEndTag();//body + writer.RenderEndTag();//HTML - // switch (i) - // { - // case 3: - // projectionProfitReturn += double.Parse(row.ItemArray[3].ToString()); - // break; - // case 6: - // projectionTotalProfitReturn += double.Parse(row.ItemArray[6].ToString()); - // break; - // case 13: - // actualProfitReturn += double.Parse(row.ItemArray[13].ToString()); - // break; - // case 16: - // actualTotalProfitReturn += double.Parse(row.ItemArray[16].ToString()); - // break; - // } - // } - // else - // { - // writer.Write(row.ItemArray[i]); - // } - // writer.RenderEndTag(); //td - // } - // } - // else - // { - // //Padding - // writer.RenderBeginTag(HtmlTextWriterTag.Tr); - // //Generate padding rows to fit the Profit Analysis cells properly onto the sheet. - // //Check to see if the row index is equal to the number of rows in the table. - // if (rowIndex == table.Rows.Count) - // { - // //IF so, then that means the current row index represents the index of the Totals row. So build the totals row with the added values from above. - // //Begin rendering the totals row. - // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:1px solid black; border-left:none"); - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // writer.RenderEndTag(); - // writer.AddAttribute(HtmlTextWriterAttribute.Style, "background-color:#e9e9e9; text-align:right"); - // writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2"); - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // writer.Write("Total"); - // writer.RenderEndTag(); //td - // writer.AddAttribute(HtmlTextWriterAttribute.Style, "background-color:#e9e9e9; padding: 0px 0px 0px 5px"); - // writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2"); - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // writer.Write("(A) " + $"{projectionProfitReturn:C}"); - // writer.RenderEndTag(); - // writer.AddAttribute(HtmlTextWriterAttribute.Style, "background-color:#e9e9e9; padding: 0px 0px 0px 5px"); - // writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2"); - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // writer.Write("(B) " + $"{projectionTotalProfitReturn:C}"); - // writer.RenderEndTag(); - // writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right"); - // writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "5"); - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // writer.Write("Total"); - // writer.RenderEndTag(); - // writer.AddAttribute(HtmlTextWriterAttribute.Style, "padding: 0px 0px 0px 5px"); - // writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2"); - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // writer.Write("(A) " + $"{actualProfitReturn:C}"); - // writer.RenderEndTag(); - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // writer.RenderEndTag(); - // writer.AddAttribute(HtmlTextWriterAttribute.Style, "padding: 0px 0px 0px 5px"); - // writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2"); - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // writer.Write("(B) " + $"{actualTotalProfitReturn:C}"); - // writer.RenderEndTag();//td - // //END rending the totals row. - // BuildProfitAnalysisCell(ref writer, rowIndex + adSpecialOffset, out isProfitAnalysisCell, salesProducedByAdItems, remainingSales, totalProfitReturnFromAdItems, totalProfitReturnFromRemainingSales, totalProfitReturn); - // } - // else if (rowIndex == (table.Rows.Count + 1)) - // //Check to see if the current index is equal to the row after the totals row and, if so, create the comments row. - // { - // writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "17"); - // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-left:none"); - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // writer.Write( - // "Comments: " + comments); - // writer.RenderEndTag(); //td - // BuildProfitAnalysisCell(ref writer, rowIndex + adSpecialOffset, out isProfitAnalysisCell, salesProducedByAdItems, remainingSales, totalProfitReturnFromAdItems, totalProfitReturnFromRemainingSales, totalProfitReturn); - // } - // else - // { - // var cellCount = 0; - // while (cellCount < 17) - // { - // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none"); - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // writer.RenderEndTag();//td - // cellCount++; - // } - // } - // } - //Check for every 3rd row to append a Profit Analysis cell onto. - // switch (rowIndex + adSpecialOffset) - // { - // case 0: - // writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, "2"); - // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none; border-right:none"); - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // writer.Write("
Sales Produced By
Ad Items (A)

2" + $"{salesProducedByAdItems:C}" + "

"); - // writer.RenderEndTag(); - // break; - // case 3: - // writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, "2"); - // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none; border-top:1px solid black; border-right:none"); - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // writer.Write("
Remaining
Sales

3" + $"{remainingSales:C}" + "

"); - // writer.RenderEndTag(); - // break; - // case 6: - // writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, "2"); - // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none; border-top:1px solid black; border-right:none"); - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // writer.Write("
Total $ Profit Return
From Ad Items (B)

4" + $"{totalProfitReturnFromAdItems:C}" + "

"); - // writer.RenderEndTag(); - // break; - // case 9: - // writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, "2"); - // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none; border-top:1px solid black; border-right:none"); - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // writer.Write("
Total $ Profit Return
From Remaining Sales

5" + $"{totalProfitReturnFromRemainingSales:C}" + "

"); - // writer.RenderEndTag(); - // break; - // case 12: - // writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, "2"); - // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-right:none"); - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // writer.Write("
Total $ Profit
Return

6" + $"{totalProfitReturn:C}" + "

"); - // writer.RenderEndTag(); - // break; - // case 15: - // //IF either the compressed format or the generate comment row flags are set, then ignore this case. Only tables with 19 or more rows can generate a full comments cell due to the amount of text it can contain. - // if (isCompressedFormat || willGenerateCommentRow) break; - // writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, "4"); - // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-right:none"); - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // writer.Write("Comments: " + comments); - // writer.RenderEndTag(); - // break; - // } - - // writer.RenderEndTag();//tr - //}//end for loop - - //if (!willGenerateCommentRow && !isCompressedFormat) - //{ - // //Begin rendering the totals row. - // writer.RenderBeginTag(HtmlTextWriterTag.Tr); - // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:1px solid black; border-left:none"); - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // writer.RenderEndTag(); - // writer.AddAttribute(HtmlTextWriterAttribute.Style, "background-color:#e9e9e9; border:1px solid black; font-size:12px; border-left: 1px solid #000; text-align:right"); - // writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2"); - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // writer.Write("Total"); - // writer.RenderEndTag(); //td - // writer.AddAttribute(HtmlTextWriterAttribute.Style, "background-color:#e9e9e9; border:1px solid black; font-size:12px; border-left: 1px solid #000; padding: 0px 0px 0px 5px"); - // writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2"); - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // writer.Write("(A) " + $"{projectionProfitReturn:C}"); - // writer.RenderEndTag(); - // writer.AddAttribute(HtmlTextWriterAttribute.Style, "background-color:#e9e9e9; border:1px solid black; font-size:12px; border-left: 1px solid #000; padding: 0px 0px 0px 5px"); - // writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2"); - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // writer.Write("(B) " + $"{projectionTotalProfitReturn:C}"); - // writer.RenderEndTag(); - // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:1px solid black; font-size:12px; border-left: 1px solid #000; text-align:right"); - // writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "5"); - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // writer.Write("Total"); - // writer.RenderEndTag(); - // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:1px solid black; font-size:12px; border-left: 1px solid #000; padding: 0px 0px 0px 5px"); - // writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2"); - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // writer.Write("(A) " + $"{actualProfitReturn:C}"); - // writer.RenderEndTag(); - // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:1px solid black"); - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // writer.RenderEndTag(); - // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:1px solid black; font-size:12px; border-left: 1px solid #000; padding: 0px 0px 0px 5px"); - // writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2"); - // writer.RenderBeginTag(HtmlTextWriterTag.Td); - // writer.Write("(B) " + $"{actualTotalProfitReturn:C}"); - // writer.RenderEndTag();//td - // writer.RenderEndTag(); //tr - //} - //writer.RenderEndTag();//table - //writer.RenderEndTag();//body - //writer.RenderEndTag();//HTML - - //using (var streamWriter = new StreamWriter(Application.StartupPath + "\\FrontPage.html")) - //{ - // streamWriter.WriteLine(stringWriter.ToString()); - //} - //RenderHtmlToImage(); + using (var streamWriter = new StreamWriter("C:\\Users\\Crypto\\Desktop\\TestPage.html")) + { + streamWriter.WriteLine(stringWriter.ToString()); + } + RenderHtmlToImage(); } - private void BuildProfitAnalysisCell(ref HtmlTextWriter writer, int rowIndex, out bool isProfitAnalysisCell, double salesProducedByAdItems, double remainingSales, double totalProfitReturnFromAdItems, double totalProfitReturnFromRemainingSales, double totalProfitReturn) + private void RenderCostsAnalysisCell(CostAnalysisCells cell, ref HtmlTextWriter writer, decimal? value, string rowSpan) + { + var number = string.Empty; + var labelText = string.Empty; + + switch (cell) + { + case CostAnalysisCells.DepartmentSales: + number = "1"; + labelText = "Department
Sales"; + break; + case CostAnalysisCells.SalesProduced: + number = "2"; + labelText = "Sales Produced
by
Ad Items (A)"; + break; + case CostAnalysisCells.RemainingSales: + number = "3"; + labelText = "Remaining
Sales
(Line 1 minus
Line 2)"; + break; + case CostAnalysisCells.ProfitReturnFromAdItems: + number = "4"; + labelText = "Total $ Profit
Return From Ad
Items (B)"; + break; + case CostAnalysisCells.ProfitReturnFromRemainingSales: + number = "5"; + labelText = "Total $ Profit Return
From Remaining Sales

Going-in Gross % x Remaining Sales"; + break; + case CostAnalysisCells.TotalProfitReturn: + number = "6"; + labelText = "Total $ Profit
Return

Line 4 Plus Line 5"; + break; + case CostAnalysisCells.CrossProfitInfoCell: + break; + case CostAnalysisCells.Comments: + break; + default: + throw new ArgumentOutOfRangeException(nameof(cell), cell, null); + } + writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, rowSpan); + writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-right:none; border-left:double; font-size:14px; width:25px"); + writer.RenderBeginTag(HtmlTextWriterTag.Td);//begin number cell + writer.Write(number); + writer.RenderEndTag();//end number cell + writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, rowSpan); + writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-right:none; border-left:none; width:200px"); + writer.RenderBeginTag(HtmlTextWriterTag.Td);//begin department sales cell + writer.Write(labelText); + writer.RenderEndTag();//end department sales cell + writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, rowSpan); + writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-right:none; border-left:none; width:75px"); + writer.RenderBeginTag(HtmlTextWriterTag.Td);//department sales total sales column + writer.AddAttribute(HtmlTextWriterAttribute.Style, "margin:0px; border-left:1px solid black; border-top:1px dashed black; text-align:right"); + writer.RenderBeginTag(HtmlTextWriterTag.P);//begin department sales paragraph tag; used because the borders of the element are flush with that of the cell's. + writer.Write($"{value:C}"); + writer.RenderEndTag();//end department sales paragraph tag + writer.RenderEndTag();//department sales total sales column + } + + private void RenderCostsAnalysisCell(CostAnalysisCells cell, ref HtmlTextWriter writer, string value = "") + { + writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "3"); + switch (cell) + { + case CostAnalysisCells.CrossProfitInfoCell: + writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, "3"); + writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-right:none; text-align:left"); + writer.RenderBeginTag(HtmlTextWriterTag.Td); + writer.Write("To Find Gross Profit % Divide
Total Profit Return By Dept.
Weekly Retail Sales"); + break; + case CostAnalysisCells.Comments: + writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, "5"); + writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-right:none; text-align:left; vertical-align:top"); + writer.RenderBeginTag(HtmlTextWriterTag.Td); + writer.Write("Comments: " + value); + break; + } + writer.RenderEndTag(); + } + + private void SelectCostAnalysisCell(int rowIndex, ref HtmlTextWriter writer, decimal? actualA, decimal? actualB, WeeklySale departmentRecord, Note comments) { - isProfitAnalysisCell = false; switch (rowIndex) { case 0: - writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, "2"); - writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none; border-right:1px solid black; border-right:none"); - writer.RenderBeginTag(HtmlTextWriterTag.Td); - writer.Write("
Sales Produced By
Ad Items (A)

2" + $"{salesProducedByAdItems:C}" + "

"); - writer.RenderEndTag(); + RenderCostsAnalysisCell(CostAnalysisCells.SalesProduced, ref writer, actualA, "3"); break; case 3: - writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, "2"); - writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none; border-right:1px solid black; border-top:1px solid black; border-right:none"); - writer.RenderBeginTag(HtmlTextWriterTag.Td); - writer.Write("
Remaining
Sales

3" + $"{remainingSales:C}" + "

"); - writer.RenderEndTag(); + if (departmentRecord != null) + RenderCostsAnalysisCell(CostAnalysisCells.RemainingSales, ref writer, departmentRecord.TotalSales - actualA, "4"); break; - case 6: - writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, "2"); - writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none; border-right:1px solid black; border-top:1px solid black; border-right:none"); - writer.RenderBeginTag(HtmlTextWriterTag.Td); - writer.Write("
Total $ Profit Return
From Ad Items (B)

4" + $"{totalProfitReturnFromAdItems:C}" + "

"); - writer.RenderEndTag(); + case 7: + RenderCostsAnalysisCell(CostAnalysisCells.ProfitReturnFromAdItems, ref writer, actualB, "3"); break; - case 9: - writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, "2"); - writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none; border-right:1px solid black; border-top:1px solid black; border-right:none"); - writer.RenderBeginTag(HtmlTextWriterTag.Td); - writer.Write("
Total $ Profit Return
From Remaining Sales

5" + $"{totalProfitReturnFromRemainingSales:C}" + "

"); - writer.RenderEndTag(); + case 10: + //get cross profit return + var s = (decimal) 0.3; + RenderCostsAnalysisCell(CostAnalysisCells.ProfitReturnFromRemainingSales, ref writer, s * (departmentRecord.TotalSales - actualA), "5"); break; - case 12: - writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, "2"); - writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-right:none"); - writer.RenderBeginTag(HtmlTextWriterTag.Td); - writer.Write("
Total $ Profit
Return

6" + $"{totalProfitReturn:C}" + "

"); - writer.RenderEndTag(); + case 15: + var x = (decimal) 0.3 * (departmentRecord.TotalSales - actualA); + RenderCostsAnalysisCell(CostAnalysisCells.TotalProfitReturn, ref writer, x + actualB, "4"); + break; + case 19: + RenderCostsAnalysisCell(CostAnalysisCells.CrossProfitInfoCell, ref writer); + break; + case 22: + RenderCostsAnalysisCell(CostAnalysisCells.Comments, ref writer, comments.Remark); break; } } + + private void AppendPaddingRow(ref HtmlTextWriter writer) + { + var cellCount = 0; + writer.RenderBeginTag(HtmlTextWriterTag.Tr); + while (cellCount < 17) + { + switch (cellCount) + { + case 0: + writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-left:none; border-right:double"); + break; + case 6: + case 16: + writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-right:double"); + break; + } + writer.RenderBeginTag(HtmlTextWriterTag.Td); + writer.Write("
"); + writer.RenderEndTag(); + cellCount++; + } + } + + private enum CostAnalysisCells + { + DepartmentSales = 0, + SalesProduced = 1, + RemainingSales = 2, + ProfitReturnFromAdItems = 3, + ProfitReturnFromRemainingSales = 4, + TotalProfitReturn = 5, + CrossProfitInfoCell = 6, + Comments = 7 + } } } diff --git a/AdvertsingProfitControl/packages.config b/AdvertsingProfitControl/packages.config index d705809..c2bb520 100644 --- a/AdvertsingProfitControl/packages.config +++ b/AdvertsingProfitControl/packages.config @@ -1,6 +1,7 @@  + + - - + \ No newline at end of file diff --git a/SetupProject/bin/Debug/SetupProject.msi b/SetupProject/bin/Debug/SetupProject.msi deleted file mode 100644 index f22cc115b040afc39b3e9e32d16676dd65d09bcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1044480 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%0Dd(W97wU8vSS+^J# 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