Completely removed all the old database interaction code, save the database converter form. Updated the formatting in the weekly and taxable areas on the modify record form. Re-enabled holiday checking on the main form.

This commit is contained in:
2017-04-07 04:50:02 -05:00
parent e5fa0a8238
commit 2106879ee8
21 changed files with 842 additions and 18090 deletions
Binary file not shown.
@@ -122,8 +122,6 @@
<Compile Include="AdvertisingProfitControlTableHelper.cs" /> <Compile Include="AdvertisingProfitControlTableHelper.cs" />
<Compile Include="ApplicationColors.cs" /> <Compile Include="ApplicationColors.cs" />
<Compile Include="CostAnalysi.cs" /> <Compile Include="CostAnalysi.cs" />
<Compile Include="DbTableWriterStatus.cs" />
<Compile Include="DbWriterStatus.cs" />
<Compile Include="DebugDatabaseConverter.cs"> <Compile Include="DebugDatabaseConverter.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
@@ -145,34 +143,19 @@
<Compile Include="Taxable.cs" /> <Compile Include="Taxable.cs" />
<Compile Include="TextFormat.cs" /> <Compile Include="TextFormat.cs" />
<Compile Include="BackPageGenerator.cs" /> <Compile Include="BackPageGenerator.cs" />
<Compile Include="DatabaseReader.cs" />
<Compile Include="DatabaseTracker.cs" />
<Compile Include="DatabaseVersionControl.cs" /> <Compile Include="DatabaseVersionControl.cs" />
<Compile Include="DatabaseWriter.cs" />
<Compile Include="FrmAddRecord.cs"> <Compile Include="FrmAddRecord.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="FrmAddRecord.Designer.cs"> <Compile Include="FrmAddRecord.Designer.cs">
<DependentUpon>FrmAddRecord.cs</DependentUpon> <DependentUpon>FrmAddRecord.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="FrmAdSpecialRegister.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmAdSpecialRegister.Designer.cs">
<DependentUpon>FrmAdSpecialRegister.cs</DependentUpon>
</Compile>
<Compile Include="FrmMain.cs"> <Compile Include="FrmMain.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="FrmMain.Designer.cs"> <Compile Include="FrmMain.Designer.cs">
<DependentUpon>FrmMain.cs</DependentUpon> <DependentUpon>FrmMain.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="FrmManageAdItems.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmManageAdItems.Designer.cs">
<DependentUpon>FrmManageAdItems.cs</DependentUpon>
</Compile>
<Compile Include="FrontPageGenerator.cs" /> <Compile Include="FrontPageGenerator.cs" />
<Compile Include="GlobalClasses.cs" /> <Compile Include="GlobalClasses.cs" />
<Compile Include="FrmLogConsole.cs"> <Compile Include="FrmLogConsole.cs">
@@ -193,18 +176,12 @@
<EmbeddedResource Include="FrmAddRecord.resx"> <EmbeddedResource Include="FrmAddRecord.resx">
<DependentUpon>FrmAddRecord.cs</DependentUpon> <DependentUpon>FrmAddRecord.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="FrmAdSpecialRegister.resx">
<DependentUpon>FrmAdSpecialRegister.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmMain.resx"> <EmbeddedResource Include="FrmMain.resx">
<DependentUpon>FrmMain.cs</DependentUpon> <DependentUpon>FrmMain.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="FrmLogConsole.resx"> <EmbeddedResource Include="FrmLogConsole.resx">
<DependentUpon>FrmLogConsole.cs</DependentUpon> <DependentUpon>FrmLogConsole.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="FrmManageAdItems.resx">
<DependentUpon>FrmManageAdItems.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="NewModifyRecord.resx"> <EmbeddedResource Include="NewModifyRecord.resx">
<DependentUpon>NewModifyRecord.cs</DependentUpon> <DependentUpon>NewModifyRecord.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
+42 -42
View File
@@ -38,11 +38,11 @@ namespace AdvertsingProfitControl
public void GenerateWeeklyInventoryControlPage(int dateId) public void GenerateWeeklyInventoryControlPage(int dateId)
{ {
var databaseTracker = new DatabaseTracker(); //var databaseTracker = new DatabaseTracker();
var databaseReader = new DatabaseReader(); //var databaseReader = new DatabaseReader();
var invoiceTable = databaseReader.ReturnInvoiceTable(dateId, databaseTracker.DatabaseConnectionString); //var invoiceTable = databaseReader.ReturnInvoiceTable(dateId, databaseTracker.DatabaseConnectionString);
var weeklySalesTable = databaseReader.ReturnWeeklySalesFromDateId(dateId, //var weeklySalesTable = databaseReader.ReturnWeeklySalesFromDateId(dateId,
databaseTracker.DatabaseConnectionString); // databaseTracker.DatabaseConnectionString);
var stringWriter = new StringWriter(); var stringWriter = new StringWriter();
var writer = new HtmlTextWriter(stringWriter); var writer = new HtmlTextWriter(stringWriter);
writer.Write("<!DOCTYPE html>\n"); writer.Write("<!DOCTYPE html>\n");
@@ -74,7 +74,7 @@ namespace AdvertsingProfitControl
writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "3"); writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "3");
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none"); //; width:240px writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none"); //; width:240px
writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("Week Ending <u>" + CleanDate(databaseReader.RetrieveDateStringById(dateId, databaseTracker.DatabaseConnectionString)) + "</u>"); writer.Write("Week Ending <u>");// + CleanDate(databaseReader.RetrieveDateStringById(dateId, databaseTracker.DatabaseConnectionString)) + "</u>");
writer.RenderEndTag();//td writer.RenderEndTag();//td
writer.RenderEndTag();//tr writer.RenderEndTag();//tr
//Begin rendering the proper header row for the table itself. //Begin rendering the proper header row for the table itself.
@@ -123,7 +123,7 @@ namespace AdvertsingProfitControl
//Dollar amount for Sunday //Dollar amount for Sunday
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right"); writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right");
writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.RenderBeginTag(HtmlTextWriterTag.Td);
var sundaySalesAmount = FormatNumberForDisplay(weeklySalesTable.Rows[0].ItemArray[0]).Split('.'); var sundaySalesAmount = "Spam";//FormatNumberForDisplay(weeklySalesTable.Rows[0].ItemArray[0]).Split('.');
writer.Write(sundaySalesAmount[0]); writer.Write(sundaySalesAmount[0]);
writer.RenderEndTag();//td writer.RenderEndTag();//td
//cents amount td //cents amount td
@@ -134,25 +134,25 @@ namespace AdvertsingProfitControl
writer.RenderEndTag();//tr writer.RenderEndTag();//tr
//Loop 35 times to build all the rows. //Loop 35 times to build all the rows.
double totalCostsOfSales = 0; //holds the total value of all the invoices purchases. double totalCostsOfSales = 0; //holds the total value of all the invoices purchases.
foreach (DataRow row in invoiceTable.Rows) //foreach (DataRow row in invoiceTable.Rows)
{ //{
//Index four (4) contains the Net Amount of Invoices Extended Retail values. // //Index four (4) contains the Net Amount of Invoices Extended Retail values.
double parsedString = 0; // double parsedString = 0;
if (double.TryParse(row.ItemArray[4].ToString(), out parsedString)) // if (double.TryParse(row.ItemArray[4].ToString(), out parsedString))
{ // {
totalCostsOfSales += parsedString; // totalCostsOfSales += parsedString;
} // }
} //}
for (var i = 0; i < 34; i++) for (var i = 0; i < 34; i++)
{ {
var purchasesColumnsRendered = false; var purchasesColumnsRendered = false;
var salesColumnsRendered = false; var salesColumnsRendered = false;
writer.RenderBeginTag(HtmlTextWriterTag.Tr); writer.RenderBeginTag(HtmlTextWriterTag.Tr);
if (i < invoiceTable.Rows.Count) //if (i < invoiceTable.Rows.Count)
{ //{
purchasesColumnsRendered = RenderPurchasesColumns(i, writer, invoiceTable); // purchasesColumnsRendered = RenderPurchasesColumns(i, writer, invoiceTable);
} //}
if ((i + 1) < 8) if ((i + 1) < 8)
{ {
//padding //padding
@@ -172,7 +172,7 @@ namespace AdvertsingProfitControl
purchasesColumnsRendered = true; purchasesColumnsRendered = true;
} }
//Generates the SALES columns. //Generates the SALES columns.
salesColumnsRendered = RenderWeeklySalesColumns(i, writer, weeklySalesTable); //salesColumnsRendered = RenderWeeklySalesColumns(i, writer, weeklySalesTable);
} }
if (i == 7) if (i == 7)
{ {
@@ -267,27 +267,27 @@ namespace AdvertsingProfitControl
writer.RenderEndTag();//td writer.RenderEndTag();//td
double totalSales = 0; double totalSales = 0;
if (double.TryParse(weeklySalesTable.Rows[0].ItemArray[7].ToString(), out totalSales)) //if (double.TryParse(weeklySalesTable.Rows[0].ItemArray[7].ToString(), out totalSales))
{ //{
var dollarGrossProfit = totalSales - totalCostsOfSales; // var dollarGrossProfit = totalSales - totalCostsOfSales;
var dollarGrossProfitSplit = FormatNumberForDisplay(dollarGrossProfit).Split('.'); // var dollarGrossProfitSplit = FormatNumberForDisplay(dollarGrossProfit).Split('.');
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right"); // writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right");
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write(dollarGrossProfitSplit[0]); // writer.Write(dollarGrossProfitSplit[0]);
writer.RenderEndTag(); //td // writer.RenderEndTag(); //td
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write(dollarGrossProfitSplit[1]); // writer.Write(dollarGrossProfitSplit[1]);
writer.RenderEndTag(); //td // writer.RenderEndTag(); //td
} //}
else //else
{ //{
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.RenderEndTag();//td // writer.RenderEndTag();//td
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.RenderEndTag();//td // writer.RenderEndTag();//td
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.RenderEndTag();//td // writer.RenderEndTag();//td
} //}
} }
if (i == 21) if (i == 21)
{ {
File diff suppressed because it is too large Load Diff
@@ -1,22 +0,0 @@
using System.Configuration;
using System.IO;
using System.Windows.Forms;
namespace AdvertsingProfitControl
{
class DatabaseTracker
{
//private string _DatabaseProvider = "Provider=Microsoft.ACE.OLEDB.12.0;";
//private string _SecuritySettings = "Persist Security Info=False";
public DatabaseTracker()
{
}
public string DatabaseConnectionString
{
get { return "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=APCDatabase.accdb;Persist Security Info=False"; }
}
}
}
File diff suppressed because it is too large Load Diff
@@ -1,95 +0,0 @@
using System.Collections.Generic;
namespace AdvertsingProfitControl
{
internal class DbTableWriterStatus
{
//Initialize the _status to failed just to have it not be null.
private WritingOperationStatus _status = WritingOperationStatus.Failed;
private readonly Dictionary<int, int> _rowIds;
private string _errorMessage;
public DbTableWriterStatus()
{
_rowIds = new Dictionary<int, int>();
}
public void SetStatus(WritingOperationStatus status)
{
_status = status;
}
/// <summary>
/// Gets the status from the operation.
/// </summary>
/// <returns>A status indicating whether or not it was successful, default is failed.</returns>
public WritingOperationStatus GetWritingOperationStatus()
{
return _status;
}
/// <summary>
/// Adds a row to the Rows Dictionary that keeps track of what rows have been
/// added to the database including their IDs.
/// </summary>
/// <param name="rowIndex">The index of the row that was added to the database.</param>
/// <param name="rowIdNumber">The ID number of the row as represented in the database.</param>
public void AddRowId(int rowIndex, int rowIdNumber)
{
_rowIds.Add(rowIndex, rowIdNumber);
}
/// <summary>
/// Removes a row from the Rows collection.
/// </summary>
/// <param name="key">The row's index that is to be deleted.</param>
public void DeleteRow(int key)
{
_rowIds.Remove(key);
}
/// <summary>
/// Clears the collection of row IDs.
/// </summary>
public void ClearRowCollection()
{
_rowIds.Clear();
}
/// <summary>
/// Gets the Dictionary containing rows that have been added to the database.
/// The keys are the row's index and the value is the row's ID as represented
/// in the database.
/// Returns an empty Dictionary if no rows have been added.
/// </summary>
/// <returns>The rows that have been added to the database.</returns>
public Dictionary<int, int> GetRowCollection()
{
return _rowIds;
}
/// <summary>
/// Sets an error message.
/// </summary>
/// <param name="message">The error message to be set.</param>
public void SetErrorMessage(string message)
{
_errorMessage = message;
}
/// <summary>
/// Gets any error message set by the Insertion/Update operation function.
/// If none are set returns an empty string.
/// </summary>
/// <returns>The error message, string.Empty if no message is set.</returns>
public string GetErrorMessage()
{
//If the error message is null then return string.Empty.
//Otherwise return the error message.
return _errorMessage ?? string.Empty;
}
}
/// <summary>
/// Operation status emus to keep things consistent.
/// </summary>
public enum WritingOperationStatus
{
Failed = 0,
InsertionSuccessful = 1,
UpdateSuccessful = 2
}
}
-15
View File
@@ -1,15 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AdvertsingProfitControl
{
internal class DbWriterStatus
{
public string ErrorMessage;
public int Id;
public WritingOperationStatus Status;
}
}
@@ -122,10 +122,9 @@ namespace AdvertsingProfitControl
var actualSales = ReturnActualSales(oldDateId); var actualSales = ReturnActualSales(oldDateId);
var invoices = ReturnInvoiceTable(oldDateId); var invoices = ReturnInvoiceTable(oldDateId);
var weeklySales = ReturnWeeklySalesFromDateId(oldDateId); var weeklySales = ReturnWeeklySalesFromDateId(oldDateId);
var dbR = new DatabaseReader(); var taxable = ReturnTaxableFromDateId(oldDateId, _connectionString);
var taxable = dbR.ReturnTaxableFromDateId(oldDateId, _connectionString);
var comment = GetComments(oldDateId); var comment = GetComments(oldDateId);
var costs = dbR.ReturnCostAnalysis(oldDateId, _connectionString); var costs = ReturnCostAnalysis(oldDateId, _connectionString);
MassiveWriteFunction(date.ToString(), projectionsTable, inventoryTable, actualSales, invoices, weeklySales, taxable, costs, comment); MassiveWriteFunction(date.ToString(), projectionsTable, inventoryTable, actualSales, invoices, weeklySales, taxable, costs, comment);
} }
} }
@@ -710,5 +709,56 @@ namespace AdvertsingProfitControl
return dataTable; return dataTable;
} }
public DataTable ReturnTaxableFromDateId(int dateId, string connectionString)
{
var dataTable = new DataTable();
var oleDbCommand = new OleDbCommand
{
CommandText = "SELECT Taxable.ID, Taxable.Sunday, Taxable.Monday, Taxable.Tuesday, Taxable.Wednesday, Taxable.Thursday, Taxable.Friday, Taxable.Saturday, Taxable.Total FROM Taxable WHERE FK_DateID = ?"
};
oleDbCommand.Parameters.AddWithValue("DateID", dateId);
var connection = new OleDbConnection(connectionString);
oleDbCommand.Connection = connection;
using (connection)
{
using (oleDbCommand)
{
connection.Open();
using (var dataAdapter = new OleDbDataAdapter(oleDbCommand))
{
dataAdapter.Fill(dataTable);
}
}
}
return dataTable;
}
public DataTable ReturnCostAnalysis(int dateId, string connectionString)
{
var dataTable = new DataTable();
var oleDbCommand = new OleDbCommand
{
CommandText = "SELECT CostOfSalesAnalysis.ID, CostOfSalesAnalysis.SalesPerManHour, CostOfSalesAnalysis.SalaryPercentage, CostOfSalesAnalysis.SalaryDollars, CostOfSalesAnalysis.Supplies FROM CostOfSalesAnalysis WHERE FK_DateID = ?"
};
oleDbCommand.Parameters.AddWithValue("DateID", dateId);
var connection = new OleDbConnection(connectionString);
oleDbCommand.Connection = connection;
using (connection)
{
using (oleDbCommand)
{
connection.Open();
using (var dataAdapter = new OleDbDataAdapter(oleDbCommand))
{
dataAdapter.Fill(dataTable);
}
}
}
return dataTable;
}
} }
} }
-189
View File
@@ -1,189 +0,0 @@
namespace AdvertsingProfitControl
{
partial class FrmAdSpecialRegister
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmAdSpecialRegister));
this.mainLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
this.currentAdSpecialKeyWords = new System.Windows.Forms.Label();
this.adSpecialKeyWordsListBox = new System.Windows.Forms.ListBox();
this.registerAdSpecialPanel = new System.Windows.Forms.Panel();
this.notificationLabel = new System.Windows.Forms.Label();
this.enterNewKeyWordTextBox = new System.Windows.Forms.TextBox();
this.registerKeyWordButton = new System.Windows.Forms.Button();
this.enterKeyWordHeaderLabel = new System.Windows.Forms.Label();
this.DELETE = new System.Windows.Forms.Button();
this.mainLayoutPanel.SuspendLayout();
this.registerAdSpecialPanel.SuspendLayout();
this.SuspendLayout();
//
// mainLayoutPanel
//
this.mainLayoutPanel.ColumnCount = 2;
this.mainLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.mainLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.mainLayoutPanel.Controls.Add(this.currentAdSpecialKeyWords, 1, 0);
this.mainLayoutPanel.Controls.Add(this.adSpecialKeyWordsListBox, 1, 1);
this.mainLayoutPanel.Controls.Add(this.registerAdSpecialPanel, 0, 1);
this.mainLayoutPanel.Controls.Add(this.enterKeyWordHeaderLabel, 0, 0);
this.mainLayoutPanel.Controls.Add(this.DELETE, 0, 2);
this.mainLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.mainLayoutPanel.Location = new System.Drawing.Point(0, 0);
this.mainLayoutPanel.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.mainLayoutPanel.Name = "mainLayoutPanel";
this.mainLayoutPanel.RowCount = 3;
this.mainLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 42F));
this.mainLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.mainLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.mainLayoutPanel.Size = new System.Drawing.Size(915, 676);
this.mainLayoutPanel.TabIndex = 0;
//
// currentAdSpecialKeyWords
//
this.currentAdSpecialKeyWords.AutoSize = true;
this.currentAdSpecialKeyWords.Dock = System.Windows.Forms.DockStyle.Fill;
this.currentAdSpecialKeyWords.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.currentAdSpecialKeyWords.Location = new System.Drawing.Point(461, 0);
this.currentAdSpecialKeyWords.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.currentAdSpecialKeyWords.Name = "currentAdSpecialKeyWords";
this.currentAdSpecialKeyWords.Size = new System.Drawing.Size(450, 42);
this.currentAdSpecialKeyWords.TabIndex = 0;
this.currentAdSpecialKeyWords.Text = "Registered Key Words:";
//
// adSpecialKeyWordsListBox
//
this.adSpecialKeyWordsListBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.adSpecialKeyWordsListBox.FormattingEnabled = true;
this.adSpecialKeyWordsListBox.ItemHeight = 24;
this.adSpecialKeyWordsListBox.Location = new System.Drawing.Point(461, 46);
this.adSpecialKeyWordsListBox.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.adSpecialKeyWordsListBox.Name = "adSpecialKeyWordsListBox";
this.mainLayoutPanel.SetRowSpan(this.adSpecialKeyWordsListBox, 2);
this.adSpecialKeyWordsListBox.Size = new System.Drawing.Size(450, 626);
this.adSpecialKeyWordsListBox.Sorted = true;
this.adSpecialKeyWordsListBox.TabIndex = 1;
//
// registerAdSpecialPanel
//
this.registerAdSpecialPanel.Controls.Add(this.notificationLabel);
this.registerAdSpecialPanel.Controls.Add(this.enterNewKeyWordTextBox);
this.registerAdSpecialPanel.Controls.Add(this.registerKeyWordButton);
this.registerAdSpecialPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.registerAdSpecialPanel.Location = new System.Drawing.Point(4, 46);
this.registerAdSpecialPanel.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.registerAdSpecialPanel.Name = "registerAdSpecialPanel";
this.registerAdSpecialPanel.Size = new System.Drawing.Size(449, 309);
this.registerAdSpecialPanel.TabIndex = 3;
//
// notificationLabel
//
this.notificationLabel.AutoSize = true;
this.notificationLabel.Location = new System.Drawing.Point(11, 100);
this.notificationLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.notificationLabel.Name = "notificationLabel";
this.notificationLabel.Size = new System.Drawing.Size(0, 25);
this.notificationLabel.TabIndex = 3;
//
// enterNewKeyWordTextBox
//
this.enterNewKeyWordTextBox.Location = new System.Drawing.Point(4, 17);
this.enterNewKeyWordTextBox.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.enterNewKeyWordTextBox.Name = "enterNewKeyWordTextBox";
this.enterNewKeyWordTextBox.Size = new System.Drawing.Size(313, 29);
this.enterNewKeyWordTextBox.TabIndex = 0;
//
// registerKeyWordButton
//
this.registerKeyWordButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.registerKeyWordButton.Location = new System.Drawing.Point(207, 252);
this.registerKeyWordButton.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.registerKeyWordButton.Name = "registerKeyWordButton";
this.registerKeyWordButton.Size = new System.Drawing.Size(238, 53);
this.registerKeyWordButton.TabIndex = 2;
this.registerKeyWordButton.Text = "Add new Key Word";
this.registerKeyWordButton.UseVisualStyleBackColor = true;
this.registerKeyWordButton.Click += new System.EventHandler(this.registerKeyWordButton_Click);
//
// enterKeyWordHeaderLabel
//
this.enterKeyWordHeaderLabel.AutoSize = true;
this.enterKeyWordHeaderLabel.Dock = System.Windows.Forms.DockStyle.Fill;
this.enterKeyWordHeaderLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.enterKeyWordHeaderLabel.Location = new System.Drawing.Point(4, 0);
this.enterKeyWordHeaderLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.enterKeyWordHeaderLabel.Name = "enterKeyWordHeaderLabel";
this.enterKeyWordHeaderLabel.Size = new System.Drawing.Size(449, 42);
this.enterKeyWordHeaderLabel.TabIndex = 4;
this.enterKeyWordHeaderLabel.Text = "Enter New Ad Special Key Word:";
//
// DELETE
//
this.DELETE.Enabled = false;
this.DELETE.Location = new System.Drawing.Point(4, 363);
this.DELETE.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.DELETE.Name = "DELETE";
this.DELETE.Size = new System.Drawing.Size(200, 43);
this.DELETE.TabIndex = 5;
this.DELETE.Text = "Delete Ad Special";
this.DELETE.UseVisualStyleBackColor = true;
this.DELETE.Click += new System.EventHandler(this.DELETE_Click);
//
// FrmAdSpecialRegister
//
this.AcceptButton = this.registerKeyWordButton;
this.AutoScaleDimensions = new System.Drawing.SizeF(168F, 168F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.ClientSize = new System.Drawing.Size(915, 676);
this.Controls.Add(this.mainLayoutPanel);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.Name = "FrmAdSpecialRegister";
this.Text = "Register Ad Specials";
this.Load += new System.EventHandler(this.frmAdSpecialRegister_Load);
this.mainLayoutPanel.ResumeLayout(false);
this.mainLayoutPanel.PerformLayout();
this.registerAdSpecialPanel.ResumeLayout(false);
this.registerAdSpecialPanel.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.TableLayoutPanel mainLayoutPanel;
private System.Windows.Forms.Label currentAdSpecialKeyWords;
private System.Windows.Forms.ListBox adSpecialKeyWordsListBox;
private System.Windows.Forms.Panel registerAdSpecialPanel;
private System.Windows.Forms.TextBox enterNewKeyWordTextBox;
private System.Windows.Forms.Button registerKeyWordButton;
private System.Windows.Forms.Label enterKeyWordHeaderLabel;
private System.Windows.Forms.Button DELETE;
private System.Windows.Forms.Label notificationLabel;
}
}
@@ -1,93 +0,0 @@
using System;
using System.Windows.Forms;
namespace AdvertsingProfitControl
{
public partial class FrmAdSpecialRegister : Form
{
public FrmAdSpecialRegister()
{
InitializeComponent();
}
private void frmAdSpecialRegister_Load(object sender, EventArgs e)
{
var databaseTracker = new DatabaseTracker();
var databaseReader = new DatabaseReader();
var groupNameCollection = databaseReader.ReturnGroupNameList(databaseTracker.DatabaseConnectionString);
adSpecialKeyWordsListBox.SelectedIndexChanged += AdSpecialKeyWordsListBox_SelectedIndexChanged;
foreach (var groupName in groupNameCollection)
{
adSpecialKeyWordsListBox.Items.Add(groupName);
}
}
private void AdSpecialKeyWordsListBox_SelectedIndexChanged(object sender, EventArgs e)
{
var listBox = (ListBox) sender;
if (listBox.SelectedIndex == -1)
{
DELETE.Enabled = false;
return;
}
DELETE.Enabled = true;
}
private void registerKeyWordButton_Click(object sender, EventArgs e)
{
var databaseTracker = new DatabaseTracker();
var databaseReader = new DatabaseReader();
var databaseWriter = new DatabaseWriter(databaseTracker.DatabaseConnectionString);
int rowsEffected = 0;
if (enterNewKeyWordTextBox.Text == "") return;
rowsEffected = databaseWriter.RedundantlessInsertIntoGroupCategory(enterNewKeyWordTextBox.Text);
if (rowsEffected == 1)
{
RowParsing.AdSpecialGroups.Add(enterNewKeyWordTextBox.Text);
var groupNameCollection = databaseReader.ReturnGroupNameList(databaseTracker.DatabaseConnectionString);
adSpecialKeyWordsListBox.Items.Clear();
foreach (var groupName in groupNameCollection)
{
adSpecialKeyWordsListBox.Items.Add(groupName);
}
enterNewKeyWordTextBox.Text = "";
enterNewKeyWordTextBox.Focus();
}
else
{
MessageBox.Show(
"An error has occurred trying to write " + enterNewKeyWordTextBox.Text + " to the database.",
"Unknown Write Error");
}
}
private void DELETE_Click(object sender, EventArgs e)
{
var databaseTracker = new DatabaseTracker();
var databaseReader = new DatabaseReader();
var databaseWriter = new DatabaseWriter(databaseTracker.DatabaseConnectionString);
var adSpecial = adSpecialKeyWordsListBox.SelectedItem.ToString();
var rowsEffected = databaseWriter.RemoveAdSpecialMember(adSpecial);
if (rowsEffected == 0)
{
notificationLabel.Text = "Failed to delete " + adSpecial + " from the database.";
}
else if (rowsEffected > 0)
{
notificationLabel.Text = "Successfully deleted " + adSpecial + " from the database.";
}
adSpecialKeyWordsListBox.Items.Clear();
var groupNameCollection = databaseReader.ReturnGroupNameList(databaseTracker.DatabaseConnectionString);
foreach (var groupName in groupNameCollection)
{
adSpecialKeyWordsListBox.Items.Add(groupName);
}
DELETE.Enabled = false;
}
}
}
File diff suppressed because it is too large Load Diff
+44 -296
View File
@@ -1,11 +1,9 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Data;
using System.Drawing; using System.Drawing;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Globalization; using System.Globalization;
using System.Linq;
using System.Windows.Forms; using System.Windows.Forms;
namespace AdvertsingProfitControl namespace AdvertsingProfitControl
@@ -35,22 +33,19 @@ namespace AdvertsingProfitControl
public FrmAddRecord() public FrmAddRecord()
{ {
InitializeComponent(); InitializeComponent();
//Set the maximum and minimum sizes for the form.
MaximumSize = new Size(1200, 650);
MinimumSize = new Size(1000, 550);
} }
private void frmAddRecord_Load(object sender, EventArgs e) private void frmAddRecord_Load(object sender, EventArgs e)
{ {
//Start by grabbing all the AdItems and putting them into memory. //Start by grabbing all the AdItems and putting them into memory.
var databaseTracker = new DatabaseTracker(); //var databaseTracker = new DatabaseTracker();
var databaseReader = new DatabaseReader(); //var databaseReader = new DatabaseReader();
_gAdItemCollection = databaseReader.GetAdItemsSuggestionList(databaseTracker.DatabaseConnectionString); //_gAdItemCollection = databaseReader.GetAdItemsSuggestionList(databaseTracker.DatabaseConnectionString);
// //
weekEndingDateMaskedTextBox.Leave += OnWeekEndingDateMaskedTextBoxLeave; weekEndingDateMaskedTextBox.Leave += OnWeekEndingDateMaskedTextBoxLeave;
//Now pull all the suppliers into memory. //Now pull all the suppliers into memory.
_gSupplierCollection = databaseReader.GetSupplierSuggestionList(databaseTracker.DatabaseConnectionString); //_gSupplierCollection = databaseReader.GetSupplierSuggestionList(databaseTracker.DatabaseConnectionString);
_AdSpecialList = databaseReader.RetrieveAdSpecialList(databaseTracker.DatabaseConnectionString); //_AdSpecialList = databaseReader.RetrieveAdSpecialList(databaseTracker.DatabaseConnectionString);
//Event handlers for the Projections DataGridView //Event handlers for the Projections DataGridView
projectionsDataGridView.CellValidating += OnCellValidating; projectionsDataGridView.CellValidating += OnCellValidating;
//projectionsDataGridView.RowEnter += DetectAndDisplayIncompleteRows; //projectionsDataGridView.RowEnter += DetectAndDisplayIncompleteRows;
@@ -1190,22 +1185,22 @@ namespace AdvertsingProfitControl
return; return;
} }
//Initialize the database reader and writer classes. //Initialize the database reader and writer classes.
var databaseTracker = new DatabaseTracker(); //var databaseTracker = new DatabaseTracker();
var databaseReader = new DatabaseReader(); //var databaseReader = new DatabaseReader();
var databaseWriter = new DatabaseWriter(databaseTracker.DatabaseConnectionString); //var databaseWriter = new DatabaseWriter(databaseTracker.DatabaseConnectionString);
if (weekEndingDateMaskedTextBox.MaskCompleted) if (weekEndingDateMaskedTextBox.MaskCompleted)
{ {
if (databaseReader.RetrieveDateIdByDateString(weekEndingDateMaskedTextBox.Text, databaseTracker.DatabaseConnectionString) == 0) //if (databaseReader.RetrieveDateIdByDateString(weekEndingDateMaskedTextBox.Text, databaseTracker.DatabaseConnectionString) == 0)
{ //{
//Assume the date is correct and add it to the database. // //Assume the date is correct and add it to the database.
//TODO: Check the date vs the last date entered (obtained by sorting dates) and check to see if the two are seven (7) or more days apart. // //TODO: Check the date vs the last date entered (obtained by sorting dates) and check to see if the two are seven (7) or more days apart.
if (!databaseWriter.InsertIntoWeekEnding(weekEndingDateMaskedTextBox.Text)) // if (!databaseWriter.InsertIntoWeekEnding(weekEndingDateMaskedTextBox.Text))
{ // {
//IF the date failed to add for whatever reason, inform the user and break. // //IF the date failed to add for whatever reason, inform the user and break.
MessageBox.Show("An error has occurred attempting to write the new date into the database.", "Insert Error"); // MessageBox.Show("An error has occurred attempting to write the new date into the database.", "Insert Error");
return; // return;
} // }
} //}
} }
else else
{ {
@@ -1213,34 +1208,34 @@ namespace AdvertsingProfitControl
return; return;
} }
//Most recent date ID, the hell was I thinking.. //Most recent date ID, the hell was I thinking..
var dateIdString = databaseReader.RetrieveDateIdByDateString(weekEndingDateMaskedTextBox.Text, databaseTracker.DatabaseConnectionString); //var dateIdString = databaseReader.RetrieveDateIdByDateString(weekEndingDateMaskedTextBox.Text, databaseTracker.DatabaseConnectionString);
var commentsText = commentsTextBox.Text; //var commentsText = commentsTextBox.Text;
if (Regex.Replace(commentsText, @"\s+", "") != "") //if (Regex.Replace(commentsText, @"\s+", "") != "")
{ //{
databaseWriter.RedundantlessInsertIntoComments(commentsTextBox.Text, dateIdString.ToString()); // databaseWriter.RedundantlessInsertIntoComments(commentsTextBox.Text, dateIdString.ToString());
} //}
//Send the table's data to their respective functions. //Send the table's data to their respective functions.
_gLogConsole.WriteToLog(FrmLogConsole.Level.Info, "Added the following rows to the APC table:"); _gLogConsole.WriteToLog(FrmLogConsole.Level.Info, "Added the following rows to the APC table:");
var rowsEffected = BuildAPCAndSendToDatabase(dateIdString.ToString()); //var rowsEffected = BuildAPCAndSendToDatabase(dateIdString.ToString());
foreach (var i in rowsEffected) //foreach (var i in rowsEffected)
{ //{
_gLogConsole.WriteToLog(FrmLogConsole.Level.Info, (i + 1).ToString()); // _gLogConsole.WriteToLog(FrmLogConsole.Level.Info, (i + 1).ToString());
} //}
_gLogConsole.WriteToLog(FrmLogConsole.Level.Info, "Added the following rows to the Invoices table:"); //_gLogConsole.WriteToLog(FrmLogConsole.Level.Info, "Added the following rows to the Invoices table:");
rowsEffected = BuildInvoiceTableAndSendToDatabase(); //rowsEffected = BuildInvoiceTableAndSendToDatabase();
foreach (int i in rowsEffected) //foreach (int i in rowsEffected)
{ //{
_gLogConsole.WriteToLog(FrmLogConsole.Level.Info, (i + 1).ToString()); // _gLogConsole.WriteToLog(FrmLogConsole.Level.Info, (i + 1).ToString());
} //}
if (InsertWeeklySalesIntoDatabase()) //if (InsertWeeklySalesIntoDatabase())
{ //{
_gLogConsole.WriteToLog(FrmLogConsole.Level.Info, "Successfully added weekly sales to the database."); // _gLogConsole.WriteToLog(FrmLogConsole.Level.Info, "Successfully added weekly sales to the database.");
} //}
else //else
{ //{
_gLogConsole.WriteToLog(FrmLogConsole.Level.Info, "Failed to add weekly sales to the database."); // _gLogConsole.WriteToLog(FrmLogConsole.Level.Info, "Failed to add weekly sales to the database.");
} //}
} }
private void closeFileMainMenu_Click(object sender, EventArgs e) private void closeFileMainMenu_Click(object sender, EventArgs e)
@@ -1248,253 +1243,6 @@ namespace AdvertsingProfitControl
Close(); Close();
} }
/// <summary>
///
/// </summary>
/// <returns></returns>
private List<int> BuildAPCAndSendToDatabase(string dateIdString)
{
var rowsAffected = new List<int>();
//Initialize the database reader and writer classes.
var databaseTracker = new DatabaseTracker();
var databaseReader = new DatabaseReader();
var databaseWriter = new DatabaseWriter(databaseTracker.DatabaseConnectionString);
var parser = new RowParsing();
//The layout of the table to be sent shall reflect the physical layout of the database's table
//Rows 0-5 are projections, 6-9 are inventory, 10-15 are the actual sales and 16-21 are the row attributes, position, ad item (FK), group (FK) and then the date id (FK).
var parameters = new object[21];
var rowIndexNumber = 0;
var groupId = "";
//Negative one (-1) shows that the variable is not set.
var lastHeaderRowNumber = -1;
var rowPosition = 1;
var table = new DataTable();
//Build the table's columns.
for (var i = 0; i <= 20; i++)
{
var column = new DataColumn { ColumnName = "Column" + i };
table.Columns.Add(column);
}
foreach (var row in projectionsDataGridView.Rows.Cast<DataGridViewRow>().TakeWhile(row => !row.IsNewRow))
{
//Get the current row's attribute.
var currentRowAttribute = parser.GetRowAttribute(row);
//IF the current row is invalid then skip it.
if (currentRowAttribute == RowAttribute.IncompleteRow || currentRowAttribute == RowAttribute.MemberRow && rowIndexNumber == 0)
{
continue;
}
//IF the current row is the ad special row, then fill the group ID, increment the row index and move on.
if(rowIndexNumber == _gAdSpecialIndex)
{
//Get the group ID for the Ad Special Row.
groupId =
databaseReader.RetrieveGroupIdByString(
parser.CheckForGroupKeyWord(row.Cells[0].EditedFormattedValue.ToString()),
databaseTracker.DatabaseConnectionString);
rowIndexNumber++;
continue;
}
//Add the ad item into it's respective column.
parameters[18] = row.Cells[0].EditedFormattedValue.ToString();
//BEGIN row attribute check.
//Do an in-depth check to determine if the row should be marked with a "Header Row" group tag.
//Only rows that have members will be explicitly marked as such.
if (currentRowAttribute == RowAttribute.HeaderRow)
{
if ((rowIndexNumber + 1) <= projectionsDataGridView.Rows.Count)
{
//Check to see if the next row is a Member Row.
if ((parser.GetRowAttribute(projectionsDataGridView.Rows[rowIndexNumber + 1])) == RowAttribute.MemberRow)
{
//Set the current row's attribute to HeaderRow in the database.
parameters[16] = "1";
lastHeaderRowNumber = rowIndexNumber;
}
//IF the next row is not a member row, then do not apply any attribute to this row.
else
{
//Clear the row number to prevent any mix ups down the line and the row attribute.
lastHeaderRowNumber = -1;
parameters[16] = "0";
}
}
}
else if (currentRowAttribute == RowAttribute.MemberRow && lastHeaderRowNumber != -1)
{
//ELSE IF this row is a member, then mark it as such.
parameters[16] = "2";
}
//END row attribute check.
//BEGIN checking to see if the current row is an ad special row.
if (rowIndexNumber > _gAdSpecialIndex && _gAdSpecialIndex != -1)
{
//IF the ad item is already in the used ad item list, then skip it as it has already been added to the data table.
if (_gUsedAdItems.Contains(parameters[18] + ":1"))
{
//IF this item has already been used, then search for its row that's in the data table and update it.
var indexOfUsedItem = table.Rows.IndexOf(table.Select("column18 = '" + row.Cells[0].EditedFormattedValue + "'").First());
_gLogConsole.WriteToLog(FrmLogConsole.Level.Debug,
"Matched index at " + indexOfUsedItem + " with the item " +
row.Cells[0].EditedFormattedValue + ".");
if (indexOfUsedItem != -1)
{
table.Rows[indexOfUsedItem][19] = databaseReader.RetrieveGroupIdByString(groupId,
databaseTracker.DatabaseConnectionString);
}
}
else
{
//ELSE if the ad item isn't used, then simply add the group id to the current row.
parameters[19] = groupId;
}
}
else
{
//Add a zero to ensure that null is not sent to the database.
parameters[19] = "0";
}
//Now add the contents of the cells to the parameters.
parameters[20] = dateIdString;
var cellNumberTotal = 0;
var currentCellIndex = 0;
foreach (DataGridViewCell cell in projectionsDataGridView.Rows[rowIndexNumber].Cells)
{
if (currentCellIndex != 0)
{
var formattedValue = row.Cells[currentCellIndex].FormattedValue;
if (formattedValue != null && formattedValue.ToString() == "")
{
parameters[cellNumberTotal] = "0";
}
else
{
var value = row.Cells[currentCellIndex].FormattedValue;
if (value != null)
parameters[cellNumberTotal] = value.ToString();
}
cellNumberTotal++;
}
currentCellIndex++;
}
currentCellIndex = 0;
foreach (DataGridViewCell cell in actualSalesDataGridView.Rows[rowIndexNumber].Cells)
{
if (currentCellIndex != 0)
{
var formattedValue = actualSalesDataGridView.Rows[rowIndexNumber].Cells[currentCellIndex].FormattedValue;
if (formattedValue != null && formattedValue.ToString() == "")
{
parameters[cellNumberTotal] = "0";
}
else
{
var value = actualSalesDataGridView.Rows[rowIndexNumber].Cells[currentCellIndex].FormattedValue;
if (value !=
null)
parameters[cellNumberTotal] = value.ToString();
}
cellNumberTotal++;
}
currentCellIndex++;
}
//Finally add the row's position to the parameters. converting to a non zero indexed number.
parameters[17] = rowPosition;
table.Rows.Add(parameters);
rowPosition++;
rowIndexNumber++;
}
rowsAffected = databaseWriter.RedundantlessInsertIntoApc(table);
return rowsAffected;
}
private List<int> BuildInvoiceTableAndSendToDatabase()
{
var databaseTracker = new DatabaseTracker();
var databaseWriter = new DatabaseWriter(databaseTracker.DatabaseConnectionString);
var databaseReader = new DatabaseReader();
var supplierTable = new DataTable();
//Build the new DataTable so that the scheme is the same.
for (var i = 0; i <= 9; i++)
{
var column = new DataColumn {ColumnName = "Column" + i};
supplierTable.Columns.Add(column);
}
foreach (DataGridViewRow row in suppliersDataGridView.Rows)
{
var newRow = supplierTable.NewRow();
newRow[0] = row.Cells[0].EditedFormattedValue.ToString();
newRow[1] = row.Cells[1].EditedFormattedValue.ToString();
newRow[2] = row.Cells[2].EditedFormattedValue.ToString();
newRow[3] = row.Cells[3].EditedFormattedValue.ToString();
newRow[4] = row.Cells[4].EditedFormattedValue.ToString();
newRow[5] = row.Cells[5].EditedFormattedValue.ToString();
newRow[6] = databaseReader.RetrieveDateIdByDateString(weekEndingDateMaskedTextBox.Text, databaseTracker.DatabaseConnectionString);
supplierTable.Rows.Add(newRow);
}
var rowsAdded = databaseWriter.RedundantlessInsertIntoInvoice(supplierTable);
return rowsAdded;
}
private bool InsertWeeklySalesIntoDatabase()
{
var databaseTracker = new DatabaseTracker();
var databaseReader = new DatabaseReader();
var wasSuccessful = false;
var rowsEffected = 0;
var dateId = databaseReader.RetrieveDateIdByDateString(weekEndingDateMaskedTextBox.Text, databaseTracker.DatabaseConnectionString);
var tracker = new DatabaseTracker();
var writer = new DatabaseWriter(tracker.DatabaseConnectionString);
var weeklySalesTable = new DataTable();
weeklySalesTable.Columns.Add("Sunday", typeof(string));
weeklySalesTable.Columns.Add("Monday", typeof(string));
weeklySalesTable.Columns.Add("Tuesday", typeof(string));
weeklySalesTable.Columns.Add("Wednesday", typeof(string));
weeklySalesTable.Columns.Add("Thursday", typeof(string));
weeklySalesTable.Columns.Add("Friday", typeof(string));
weeklySalesTable.Columns.Add("Saturday", typeof(string));
weeklySalesTable.Columns.Add("TotalSales", typeof(string));
weeklySalesTable.Columns.Add("DateID", typeof(string));
var sunday = weeklySalesDataGridView.Rows[0].Cells[0].EditedFormattedValue.ToString();
var monday = weeklySalesDataGridView.Rows[0].Cells[1].EditedFormattedValue.ToString();
var tuesday = weeklySalesDataGridView.Rows[0].Cells[2].EditedFormattedValue.ToString();
var wednesday = weeklySalesDataGridView.Rows[0].Cells[3].EditedFormattedValue.ToString();
var thursday = weeklySalesDataGridView.Rows[0].Cells[4].EditedFormattedValue.ToString();
var friday = weeklySalesDataGridView.Rows[0].Cells[5].EditedFormattedValue.ToString();
var saturday = weeklySalesDataGridView.Rows[0].Cells[6].EditedFormattedValue.ToString();
var totalSales = weeklySalesDataGridView.Rows[0].Cells[7].EditedFormattedValue.ToString();
weeklySalesTable.Rows.Add(sunday, monday, tuesday, wednesday, thursday, friday, saturday, totalSales, dateId);
rowsEffected = writer.RedundantlessInsertIntoWeeklySales(weeklySalesTable.Rows[0]);
if (rowsEffected == 1)
{
wasSuccessful = true;
}
return wasSuccessful;
}
private List<int> InsertSalesAndInventoryIntoDatabase()
{
var rowsAdded = new List<int>();
var databaseTracker = new DatabaseTracker();
var databaseReader = new DatabaseReader();
var databaseWriter = new DatabaseWriter(databaseTracker.DatabaseConnectionString);
return rowsAdded;
}
private void clearFormFileMainMenu_Click(object sender, EventArgs e) private void clearFormFileMainMenu_Click(object sender, EventArgs e)
{ {
projectionsDataGridView.Rows.Clear(); projectionsDataGridView.Rows.Clear();
+37 -17
View File
@@ -43,8 +43,10 @@
this.helpMainMenu = new System.Windows.Forms.ToolStripMenuItem(); this.helpMainMenu = new System.Windows.Forms.ToolStripMenuItem();
this.showHideConsoleHelpMainMenu = new System.Windows.Forms.ToolStripMenuItem(); this.showHideConsoleHelpMainMenu = new System.Windows.Forms.ToolStripMenuItem();
this.dbVersionHelpMainMenu = new System.Windows.Forms.ToolStripMenuItem(); this.dbVersionHelpMainMenu = new System.Windows.Forms.ToolStripMenuItem();
this.debugToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.debugMainMenu = new System.Windows.Forms.ToolStripMenuItem();
this.debugToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.rawViewDebugMainMenu = new System.Windows.Forms.ToolStripMenuItem();
this.migrateDatabaseDebugMainMenu = new System.Windows.Forms.ToolStripMenuItem();
this.addRecordToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.mainTableLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); this.mainTableLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
this.commentMainTableLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); this.commentMainTableLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
this.profitAnalysisMainGroupBox = new System.Windows.Forms.GroupBox(); this.profitAnalysisMainGroupBox = new System.Windows.Forms.GroupBox();
@@ -146,7 +148,7 @@
this.recordsToolStripMenuItem, this.recordsToolStripMenuItem,
this.toolsMainMenu, this.toolsMainMenu,
this.helpMainMenu, this.helpMainMenu,
this.debugToolStripMenuItem}); this.debugMainMenu});
this.mainMenu.Location = new System.Drawing.Point(0, 0); this.mainMenu.Location = new System.Drawing.Point(0, 0);
this.mainMenu.Name = "mainMenu"; this.mainMenu.Name = "mainMenu";
this.mainMenu.Padding = new System.Windows.Forms.Padding(10, 3, 0, 3); this.mainMenu.Padding = new System.Windows.Forms.Padding(10, 3, 0, 3);
@@ -246,21 +248,37 @@
this.dbVersionHelpMainMenu.Text = "Get &Database Version"; this.dbVersionHelpMainMenu.Text = "Get &Database Version";
this.dbVersionHelpMainMenu.Click += new System.EventHandler(this.dbVersionHelpMainMenu_Click); this.dbVersionHelpMainMenu.Click += new System.EventHandler(this.dbVersionHelpMainMenu_Click);
// //
// debugToolStripMenuItem // debugMainMenu
// //
this.debugToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.debugMainMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.debugToolStripMenuItem1}); this.rawViewDebugMainMenu,
this.debugToolStripMenuItem.Name = "debugToolStripMenuItem"; this.migrateDatabaseDebugMainMenu,
this.debugToolStripMenuItem.Size = new System.Drawing.Size(87, 34); this.addRecordToolStripMenuItem});
this.debugToolStripMenuItem.Text = "Debug"; this.debugMainMenu.Name = "debugMainMenu";
this.debugToolStripMenuItem.Visible = false; this.debugMainMenu.Size = new System.Drawing.Size(87, 34);
this.debugMainMenu.Text = "Debug";
this.debugMainMenu.Visible = false;
// //
// debugToolStripMenuItem1 // rawViewDebugMainMenu
// //
this.debugToolStripMenuItem1.Name = "debugToolStripMenuItem1"; this.rawViewDebugMainMenu.Name = "rawViewDebugMainMenu";
this.debugToolStripMenuItem1.Size = new System.Drawing.Size(167, 34); this.rawViewDebugMainMenu.Size = new System.Drawing.Size(270, 34);
this.debugToolStripMenuItem1.Text = "Debug"; this.rawViewDebugMainMenu.Text = "Raw View";
this.debugToolStripMenuItem1.Click += new System.EventHandler(this.debugToolStripMenuItem1_Click); this.rawViewDebugMainMenu.Click += new System.EventHandler(this.rawViewDebugMainMenu_Click);
//
// migrateDatabaseDebugMainMenu
//
this.migrateDatabaseDebugMainMenu.Name = "migrateDatabaseDebugMainMenu";
this.migrateDatabaseDebugMainMenu.Size = new System.Drawing.Size(270, 34);
this.migrateDatabaseDebugMainMenu.Text = "Migrate Database";
this.migrateDatabaseDebugMainMenu.Click += new System.EventHandler(this.debugToolStripMenuItem1_Click);
//
// addRecordToolStripMenuItem
//
this.addRecordToolStripMenuItem.Name = "addRecordToolStripMenuItem";
this.addRecordToolStripMenuItem.Size = new System.Drawing.Size(270, 34);
this.addRecordToolStripMenuItem.Text = "Add Record";
this.addRecordToolStripMenuItem.Click += new System.EventHandler(this.addRecordToolStripMenuItem_Click_1);
// //
// mainTableLayoutPanel // mainTableLayoutPanel
// //
@@ -1044,9 +1062,11 @@
private System.Windows.Forms.DataGridView actualSalesDataGridView; private System.Windows.Forms.DataGridView actualSalesDataGridView;
private System.Windows.Forms.TabPage suppliersTabPage; private System.Windows.Forms.TabPage suppliersTabPage;
private System.Windows.Forms.DataGridView invoicesDataGridView; private System.Windows.Forms.DataGridView invoicesDataGridView;
private System.Windows.Forms.ToolStripMenuItem debugToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem debugMainMenu;
private System.Windows.Forms.ToolStripMenuItem debugToolStripMenuItem1; private System.Windows.Forms.ToolStripMenuItem migrateDatabaseDebugMainMenu;
private System.Windows.Forms.ToolStripMenuItem clearSelectedDateToolsMainMenu; private System.Windows.Forms.ToolStripMenuItem clearSelectedDateToolsMainMenu;
private System.Windows.Forms.ToolStripMenuItem addRecordToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem rawViewDebugMainMenu;
} }
} }
+186 -90
View File
@@ -1,13 +1,11 @@
using System; using System;
using System.Collections.Generic; using System.Data.Entity.Infrastructure;
using System.Data;
using System.Data.Entity;
using System.Diagnostics;
using System.Drawing; using System.Drawing;
using System.Drawing.Printing; using System.Drawing.Printing;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Transactions;
using System.Windows.Forms; using System.Windows.Forms;
namespace AdvertsingProfitControl namespace AdvertsingProfitControl
@@ -20,7 +18,7 @@ namespace AdvertsingProfitControl
private decimal _departmentSales; //weekly sales total private decimal _departmentSales; //weekly sales total
private DateTime _currentActiveDate; private DateTime _currentActiveDate;
private readonly FrmLogConsole _console = FrmLogConsole.GetStaticInstance; private readonly FrmLogConsole _console = FrmLogConsole.GetStaticInstance;
private int _LazyPageCounter; private int _lazyPageCounter;
private bool isDebug; private bool isDebug;
public FrmMain(bool isDebug) public FrmMain(bool isDebug)
@@ -28,9 +26,8 @@ namespace AdvertsingProfitControl
InitializeComponent(); InitializeComponent();
this.isDebug = isDebug; this.isDebug = isDebug;
isDebug = true; isDebug = true;
debugToolStripMenuItem.Visible = isDebug; debugMainMenu.Visible = isDebug;
var db = new AdvertisingProfitControlModel(); var db = new AdvertisingProfitControlModel();
db.Versions.Count();
} }
private void frmMain_Load(object sender, EventArgs e) private void frmMain_Load(object sender, EventArgs e)
@@ -137,15 +134,15 @@ namespace AdvertsingProfitControl
private void addRecordToolStripMenuItem_Click(object sender, EventArgs e) private void addRecordToolStripMenuItem_Click(object sender, EventArgs e)
{ {
var databaseTracker = new DatabaseTracker(); var db = new AdvertisingProfitControlModel();
var databaseReader = new DatabaseReader();
var form = new NewModifyRecord(); var form = new NewModifyRecord();
form.ShowDialog(); form.ShowDialog();
//One the user has closed the add record form, check to see if there is a newer date //One the user has closed the add record form, check to see if there is a newer date
//available. If so, reload the form. //available. If so, reload the form.
var date = databaseReader.RetrieveMostRecentDate(databaseTracker.DatabaseConnectionString); var date = db.WeekEndingDates.OrderByDescending(x => x.EndingDate).FirstOrDefault();
if (date == _currentActiveDate) return; if (date == null) return;
LoadDate(date); if (date.EndingDate == _currentActiveDate) return;
LoadDate(date.EndingDate);
} }
private void showHideConsoleHelpMainMenu_Click(object sender, EventArgs e) private void showHideConsoleHelpMainMenu_Click(object sender, EventArgs e)
@@ -165,31 +162,34 @@ namespace AdvertsingProfitControl
var form = new NewModifyRecord(_currentActiveDate); var form = new NewModifyRecord(_currentActiveDate);
form.ShowDialog(); form.ShowDialog();
//On return reload the date that was just modified by the modify record form. //On return reload the date that was just modified by the modify record form.
LoadDate(monthCalendar.SelectionStart); LoadDate(_currentActiveDate);
} }
private void manageItemsToolsMainMenu_Click(object sender, EventArgs e) private void manageItemsToolsMainMenu_Click(object sender, EventArgs e)
{ {
var adItemManager = new FrmManageAdItems(); //TODO: Bring back Manage Ad Items form and managing AdSpecials.
adItemManager.ShowDialog(); //var adItemManager = new FrmManageAdItems();
//adItemManager.ShowDialog();
} }
private void dbVersionHelpMainMenu_Click(object sender, EventArgs e) private void dbVersionHelpMainMenu_Click(object sender, EventArgs e)
{ {
var databaseTracker = new DatabaseTracker(); var db = new AdvertisingProfitControlModel();
var databaseReader = new DatabaseReader(); var version = db.Versions.FirstOrDefault(x => x.Id == 1);
var version = databaseReader.GetDatabaseVersion(databaseTracker.DatabaseConnectionString); if (version == null)
if (version != "0.0.0.0")
{ {
MessageBox.Show(@"The current database's version is " + version + @".", @"Database Version Number", MessageBoxButtons.OK, MessageBoxIcon.Information); MessageBox.Show(@"Failed to retrieve the version number of the SQL database", @"Database Version Number",
MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
} }
MessageBox.Show(@"The current database's version is " + version + @".", @"Database Version Number", MessageBoxButtons.OK, MessageBoxIcon.Information);
} }
private void PrintPage(object sender, PrintPageEventArgs e) private void PrintPage(object sender, PrintPageEventArgs e)
{ {
Bitmap bitMap; Bitmap bitMap;
if (_LazyPageCounter == 0) if (_lazyPageCounter == 0)
{ {
bitMap = new Bitmap(Application.StartupPath + "\\FrontPage.png"); bitMap = new Bitmap(Application.StartupPath + "\\FrontPage.png");
} }
@@ -210,16 +210,16 @@ namespace AdvertsingProfitControl
rect.Width = (int) ((double) bitMap.Width/(double) bitMap.Height*(double) rect.Height); rect.Width = (int) ((double) bitMap.Width/(double) bitMap.Height*(double) rect.Height);
} }
if (_LazyPageCounter == 0) if (_lazyPageCounter == 0)
{ {
e.Graphics.DrawImage(bitMap, new Rectangle(0, 25, 850, 1050)); e.Graphics.DrawImage(bitMap, new Rectangle(0, 25, 850, 1050));
_LazyPageCounter++; _lazyPageCounter++;
e.HasMorePages = true; e.HasMorePages = true;
} }
else else
{ {
e.Graphics.DrawImage(bitMap, new Rectangle(0, 0, 850, 1100)); e.Graphics.DrawImage(bitMap, new Rectangle(0, 0, 850, 1100));
_LazyPageCounter = 0; _lazyPageCounter = 0;
e.HasMorePages = false; e.HasMorePages = false;
} }
} }
@@ -233,20 +233,20 @@ namespace AdvertsingProfitControl
var printDialog = new PrintPreviewDialog(); var printDialog = new PrintPreviewDialog();
if (!usePreRenderedFilesCheckbox.Checked) if (!usePreRenderedFilesCheckbox.Checked)
{ {
var databaseTracker = new DatabaseTracker(); //var databaseTracker = new DatabaseTracker();
var databaseReader = new DatabaseReader(); //var databaseReader = new DatabaseReader();
var dateId = //var dateId =
databaseReader.RetrieveDateIdByDateString(monthCalendar.SelectionStart.ToShortDateString(), // databaseReader.RetrieveDateIdByDateString(monthCalendar.SelectionStart.ToShortDateString(),
databaseTracker.DatabaseConnectionString); // databaseTracker.DatabaseConnectionString);
var remaingingSales = _departmentSales - _salesProducedByAdItems; //var remaingingSales = _departmentSales - _salesProducedByAdItems;
var totalProfitReturnFromReminaingSales = remaingingSales * .3m; //var totalProfitReturnFromReminaingSales = remaingingSales * .3m;
var totalProfitReturn = _totalProfitReturnFromAdItems + totalProfitReturnFromReminaingSales; //var totalProfitReturn = _totalProfitReturnFromAdItems + totalProfitReturnFromReminaingSales;
//test.BuildFormFrontCompressedLayout(dateId, _departmentSales, _salesProducedByAdItems, remaingingSales, ////test.BuildFormFrontCompressedLayout(dateId, _departmentSales, _salesProducedByAdItems, remaingingSales,
//_totalProfitReturnFromAdItems, totalProfitReturnFromReminaingSales, totalProfitReturn, // //_totalProfitReturnFromAdItems, totalProfitReturnFromReminaingSales, totalProfitReturn,
//commentsTextBox.Text); // //commentsTextBox.Text);
test.RenderHtmlToImage(); //test.RenderHtmlToImage();
backPageTest.GenerateWeeklyInventoryControlPage(dateId); //backPageTest.GenerateWeeklyInventoryControlPage(dateId);
backPageTest.RenderHtmlToImage(); //backPageTest.RenderHtmlToImage();
} }
else else
{ {
@@ -361,7 +361,12 @@ namespace AdvertsingProfitControl
} }
modifyRecordMainMenu.Enabled = true; modifyRecordMainMenu.Enabled = true;
modifyRecordMainMenu.ToolTipText = @""; modifyRecordMainMenu.ToolTipText = @"";
var dateRecord = db.WeekEndingDates.Single(x => x.EndingDate == date); var dateRecord = db.WeekEndingDates.SingleOrDefault(x => x.EndingDate == date);
if (dateRecord == null)
{
dateTimeGroupBox.Text = @"Failed to retrieve " + date.ToString("d") + @".";
return;
}
ClearForm(); ClearForm();
LoadProjectionsTable(dateRecord); LoadProjectionsTable(dateRecord);
LoadInventoryTable(dateRecord); LoadInventoryTable(dateRecord);
@@ -575,45 +580,88 @@ namespace AdvertsingProfitControl
var weeklySales = db.WeeklySales.Where(x => x.WeekEndingDate.Id == dateRecord.Id).Select(x => x); var weeklySales = db.WeeklySales.Where(x => x.WeekEndingDate.Id == dateRecord.Id).Select(x => x);
foreach (var sale in weeklySales) foreach (var sale in weeklySales)
{ {
if (sale.Sunday != null) _departmentSales += (decimal) sale.Sunday; if (sale.Sunday != null)
sundayWeeklySalesLabel.Text = @"Sunday: " + $@"{sale.Sunday:c}"; {
if (sale.Monday != null) _departmentSales += (decimal) sale.Monday; sundayWeeklySalesLabel.Text = sale.Sunday != 0
mondayWeeklySalesLabel.Text = @"Monday: " + $@"{sale.Monday:c}"; ? @"Sunday: " + $@"{sale.Sunday:c}"
if (sale.Tuesday != null) _departmentSales += (decimal) sale.Tuesday; : @"Sunday: " + CheckForHoliday(DayOfWeek.Sunday);
tuesadayWeeklySalesLabel.Text = @"Tuesday: " + $@"{sale.Tuesday:c}"; _departmentSales += (decimal) sale.Sunday;
if (sale.Wednesday != null) _departmentSales += (decimal) sale.Wednesday; }
wednesdayWeeklySalesLabel.Text = @"Wednesday: " + $@"{sale.Wednesday:c}"; if (sale.Monday != null)
if (sale.Thursday != null) _departmentSales += (decimal)sale.Thursday; {
thursdayWeeklySalesLabel.Text = @"Thursday: " + $@"{sale.Thursday:c}"; mondayWeeklySalesLabel.Text = sale.Monday != 0
if (sale.Friday != null) _departmentSales += (decimal) sale.Friday; ? @"Monday: " + $@"{sale.Monday:c}"
fridayWeeklySalesLabel.Text = @"Friday: " + $@"{sale.Friday:c}"; : @"Monday: " + CheckForHoliday(DayOfWeek.Monday);
if (sale.Saturday != null) _departmentSales += (decimal) sale.Saturday; _departmentSales += (decimal) sale.Monday;
saturdayWeeklySalesLabel.Text = @"Saturday: " + $@"{sale.Saturday:c}"; }
if (sale.Tuesday != null)
{
tuesadayWeeklySalesLabel.Text = sale.Tuesday != 0
? @"Tuesday: " + $@"{sale.Tuesday:c}"
: @"Tuesday: " + CheckForHoliday(DayOfWeek.Tuesday);
_departmentSales += (decimal) sale.Tuesday;
}
if (sale.Wednesday != null)
{
wednesdayWeeklySalesLabel.Text = sale.Wednesday != 0
? @"Wednesday: " + $@"{sale.Wednesday:c}"
: @"Wednesday: " + CheckForHoliday(DayOfWeek.Wednesday);
_departmentSales += (decimal) sale.Wednesday;
}
if (sale.Thursday != null)
{
thursdayWeeklySalesLabel.Text = sale.Thursday != 0
? @"Thursday: " + $@"{sale.Thursday:c}"
: @"Thursday: " + CheckForHoliday(DayOfWeek.Thursday);
_departmentSales += (decimal)sale.Thursday;
}
if (sale.Friday != null)
{
fridayWeeklySalesLabel.Text = sale.Friday != 0
? @"Friday: " + $@"{sale.Friday:c}"
: @"Friday: " + CheckForHoliday(DayOfWeek.Friday);
_departmentSales += (decimal) sale.Friday;
}
if (sale.Saturday != null)
{
saturdayWeeklySalesLabel.Text = sale.Saturday != 0
? @"Saturday: " + $@"{sale.Saturday:c}"
: @"Saturday: " + CheckForHoliday(DayOfWeek.Saturday);
_departmentSales += (decimal) sale.Saturday;
}
totalWeeklySalesLabel.Text = @"Total Sales: " + $@"{sale.TotalSales:c}"; totalWeeklySalesLabel.Text = @"Total Sales: " + $@"{sale.TotalSales:c}";
} }
} }
private void LoadTaxable(WeekEndingDate dateRecord) private void LoadTaxable(WeekEndingDate dateRecord)
{ {
//TODO: Check for holidays
var db = new AdvertisingProfitControlModel(); var db = new AdvertisingProfitControlModel();
var taxables = db.Taxables.Where(x => x.WeekEndingDate.Id == dateRecord.Id).Select(x => x); var taxables = db.Taxables.Where(x => x.WeekEndingDate.Id == dateRecord.Id).Select(x => x);
foreach (var taxable in taxables) foreach (var taxable in taxables)
{ {
sundayTaxableLabel.Text = @"Sunday: " + $@"{taxable.Sunday:c}"; sundayTaxableLabel.Text = taxable.Sunday != 0
mondayTaxableLabel.Text = @"Monday: " + $@"{taxable.Monday:c}"; ? @"Sunday: " + $@"{taxable.Sunday:c}"
tuesdayTaxableLabel.Text = @"Tuesday: " + $@"{taxable.Tuesday:c}"; : @"Sunday: " + CheckForHoliday(DayOfWeek.Sunday);
wednesdayTaxableLabel.Text = @"Wednesday: " + $@"{taxable.Wednesday:c}"; mondayTaxableLabel.Text = taxable.Monday != 0
thursdayTaxableLabel.Text = @"Thursday: " + $@"{taxable.Thursday:c}"; ? @"Monday: " + $@"{taxable.Monday:c}"
fridayTaxableLabel.Text = @"Friday: " + $@"{taxable.Friday:c}"; : @"Monday: " + CheckForHoliday(DayOfWeek.Monday);
saturdayTaxableLabel.Text = @"Saturday: " + $@"{taxable.Saturday:c}"; tuesdayTaxableLabel.Text = taxable.Tuesday != 0
? @"Tuesday: " + $@"{taxable.Tuesday:c}"
: @"Tuesday: " + CheckForHoliday(DayOfWeek.Tuesday);
wednesdayTaxableLabel.Text = taxable.Wednesday != 0
? @"Wednesday: " + $@"{taxable.Wednesday:c}"
: @"Wednesday: " + CheckForHoliday(DayOfWeek.Wednesday);
thursdayTaxableLabel.Text = taxable.Thursday != 0
? @"Thursday: " + $@"{taxable.Thursday:c}"
: @"Thursday: " + CheckForHoliday(DayOfWeek.Thursday);
fridayTaxableLabel.Text = taxable.Friday != 0
? @"Friday: " + $@"{taxable.Friday:c}"
: @"Friday: " + CheckForHoliday(DayOfWeek.Friday);
saturdayTaxableLabel.Text = taxable.Saturday != 0
? @"Saturday: " + $@"{taxable.Saturday:c}"
: @"Saturday: " + CheckForHoliday(DayOfWeek.Saturday);
totalTaxableLabel.Text = @"Total: " + $@"{taxable.Total:c}"; totalTaxableLabel.Text = @"Total: " + $@"{taxable.Total:c}";
} }
////See if there are any items and see if any of them are holidays (have a value of zero).
//if (taxables.ToList().Count == 1)
//{
// var Spam = taxables.Select(x => x.)
//}
} }
private void LoadCostAnalysis(WeekEndingDate dateRecord) private void LoadCostAnalysis(WeekEndingDate dateRecord)
@@ -735,15 +783,8 @@ namespace AdvertsingProfitControl
private void RefreshDateListing() private void RefreshDateListing()
{ {
var databaseTracker = new DatabaseTracker(); var db = new AdvertisingProfitControlModel();
var databaseReader = new DatabaseReader(); monthCalendar.BoldedDates = db.WeekEndingDates.Select(zdate => zdate.EndingDate).ToArray();
monthCalendar.BoldedDates = databaseReader.RetrieveDates(databaseTracker.DatabaseConnectionString).ToArray();
}
public enum FormDefaultRoll
{
AddNewRecord = 0,
ModifyExistingRecord = 1
} }
private void clearSelectedDateToolsMainMenu_Click(object sender, EventArgs e) private void clearSelectedDateToolsMainMenu_Click(object sender, EventArgs e)
@@ -753,27 +794,82 @@ namespace AdvertsingProfitControl
{ {
return; return;
} }
var dbT = new DatabaseTracker();
var dbW = new DatabaseWriter(dbT.DatabaseConnectionString); var db = new AdvertisingProfitControlModel();
var dbR = new DatabaseReader(); var dateRecord = db.WeekEndingDates.Single(x => x.EndingDate == _currentActiveDate);
var dateId = dbR.RetrieveDateIdByDateString(_currentActiveDate.ToShortDateString(), dbT.DatabaseConnectionString); var projections = db.Projections.Where(x => x.WeekEndingDate.EndingDate == dateRecord.EndingDate);
if (dateId != 0) var inventories = db.Inventories.Where(x => x.WeekEndingDate.EndingDate == dateRecord.EndingDate);
var actualSales = db.ActualSales.Where(x => x.WeekEndingDate.EndingDate == dateRecord.EndingDate);
var invoices = db.Invoices.Where(x => x.WeekEndingDate.EndingDate == dateRecord.EndingDate);
var weeklySale = db.WeeklySales.SingleOrDefault(x => x.WeekEndingDate.EndingDate == dateRecord.EndingDate);
var taxable = db.Taxables.SingleOrDefault(x => x.WeekEndingDate.EndingDate == dateRecord.EndingDate);
var costAnalysis = db.CostAnalysis.SingleOrDefault(x => x.WeekEndingDate.EndingDate == dateRecord.EndingDate);
var comment = db.Notes.SingleOrDefault(x => x.WeekEndingDate.EndingDate == dateRecord.EndingDate);
using (var scope = new TransactionScope())
{ {
if (dbW.ClearDateById(dateId)) try
{ {
//Clear projections
foreach (var projection in projections)
{
db.Projections.Remove(projection);
}
//Clear inventory
foreach (var inventory in inventories)
{
db.Inventories.Remove(inventory);
}
//Clear actual sales
foreach (var sale in actualSales)
{
db.ActualSales.Remove(sale);
}
//Clear invoices
foreach (var invoice in invoices)
{
db.Invoices.Remove(invoice);
}
if (weeklySale != null)
{
db.WeeklySales.Remove(weeklySale);
}
if (taxable != null)
{
db.Taxables.Remove(taxable);
}
if (costAnalysis != null)
{
db.CostAnalysis.Remove(costAnalysis);
}
if (comment != null)
{
db.Notes.Remove(comment);
}
db.WeekEndingDates.Remove(dateRecord);
db.SaveChanges();
scope.Complete();
}
catch (DbUpdateException ex)
{
MessageBox.Show(@"Failed to clear selected date.", @"Error");
_console.WriteToLog(FrmLogConsole.Level.Error, ex.Message);
}
}
RefreshDateListing(); RefreshDateListing();
var date = dbR.RetrieveMostRecentDate(dbT.DatabaseConnectionString); LoadDate(db.WeekEndingDates.OrderByDescending(x => x.EndingDate).FirstOrDefault().EndingDate);
LoadDate(date);
} }
else
private void addRecordToolStripMenuItem_Click_1(object sender, EventArgs e)
{ {
errorLabel.Text = @"Failed to clear the selected date."; var form = new FrmAddRecord();
form.ShowDialog();
} }
}
else private void rawViewDebugMainMenu_Click(object sender, EventArgs e)
{ {
errorLabel.Text = @"Failed to get the date ID number.";
}
} }
} }
} }
-152
View File
@@ -1,152 +0,0 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Globalization;
using System.Windows.Forms;
namespace AdvertsingProfitControl
{
public partial class FrmManageAdItems : Form
{
public FrmManageAdItems()
{
InitializeComponent();
}
private void frmManageAdItems_Load(object sender, EventArgs e)
{
FillAdItemComboBoxFilter();
adItemFilterComboBox.SelectedIndexChanged += UpdateFiltering;
adItemListView.SelectedIndexChanged += OnListItemSelectionChanged;
adItemTextBox.TextChanged += NewAdItemTextChanged;
}
private void NewAdItemTextChanged(object sender, EventArgs e)
{
if(adItemTextBox.TextLength == 0)
{
addItemButton.Enabled = false;
return;
}
else
{
addItemButton.Enabled = true;
}
}
private void OnListItemSelectionChanged(object sender, EventArgs e)
{
if(adItemListView.SelectedItems.Count > 0)
{
deleteSelectedItem.Enabled = true;
}
else
{
deleteSelectedItem.Enabled = false;
}
}
private void UpdateFiltering(object sender, EventArgs e)
{
var databaseTracker = new DatabaseTracker();
var databaseReader = new DatabaseReader();
var itemList = new List<string>();
adItemListView.Items.Clear();
if(adItemFilterComboBox.Text == "All Items")
{
itemList = databaseReader.RetrieveAdItemListByLetter(databaseTracker.DatabaseConnectionString);
}
else
{
itemList = databaseReader.RetrieveAdItemListByLetter(databaseTracker.DatabaseConnectionString, adItemFilterComboBox.Text);
}
foreach (var item in itemList)
{
var listViewItem = new ListViewItem(item);
adItemListView.Items.Add(listViewItem);
}
}
private void deleteSelectedItem_Click(object sender, EventArgs e)
{
if(adItemListView.SelectedItems.Count == 0)
{
return;
}
var databaseTracker = new DatabaseTracker();
var databaseWriter = new DatabaseWriter(databaseTracker.DatabaseConnectionString);
if (databaseWriter.RemoveAdItem(adItemListView.SelectedItems[0].Text))
{
notificationLabel.Text = "Successfully removed " + adItemListView.SelectedItems[0].Text + "\n from the database.";
adItemListView.Items.Remove(adItemListView.SelectedItems[0]);
}
deleteSelectedItem.Enabled = false;
}
private void addItemButton_Click(object sender, EventArgs e)
{
var databaseTracker = new DatabaseTracker();
var databaseWriter = new DatabaseWriter(databaseTracker.DatabaseConnectionString);
if (adItemTextBox.Text == "") return;
TextInfo textInfo = new CultureInfo("en-US", false).TextInfo;
//Clean up the input string.
//Pretty up the ad item's name by uppercasing the name.
var adItemText = adItemTextBox.Text;
adItemText = textInfo.ToTitleCase(adItemText);
//Eliminate the upper cased pound abbreviation ("Lb") with a standard "lb".
adItemText = adItemText.Replace("Lb", "lb");
adItemText = adItemText.Replace("LB", "lb");
adItemText = adItemText.Replace("lB", "lb");
adItemText = adItemText.Replace(":", "");
adItemText = adItemText.Replace(";", "");
adItemText = adItemText.Replace("/", "");
adItemText = adItemText.Replace("\\", "");
if (databaseWriter.AddNewItem(adItemText))
{
notificationLabel.Text = "Successfully inserted " + adItemText + "\n into the database.";
if (adItemFilterComboBox.SelectedIndex == 0 || adItemFilterComboBox.SelectedItem.ToString()[0] == adItemText[0])
{
adItemListView.Items.Add(adItemText);
}
if (!adItemFilterComboBox.Items.Contains(adItemText[0]))
{
adItemFilterComboBox.Items.Add(adItemText[0]);
}
}
addItemLabel.Select();
adItemTextBox.Text = "";
addItemButton.Enabled = false;
}
private void FillAdItemComboBoxFilter()
{
var databaseTracker = new DatabaseTracker();
var databaseReader = new DatabaseReader();
var columnHeader = new ColumnHeader();
columnHeader.Text = "Ad Items";
columnHeader.Width = 300;
adItemListView.Columns.Add(columnHeader);
var itemList = databaseReader.RetrieveAdItemListByLetter(databaseTracker.DatabaseConnectionString);
foreach (var item in itemList)
{
var listViewItem = new ListViewItem(item);
if (!adItemFilterComboBox.Items.Contains(item[0]))
{
adItemFilterComboBox.Items.Add(item[0]);
}
adItemListView.Items.Add(listViewItem);
}
adItemFilterComboBox.Items.Insert(0, "All Items");
columnHeader.Width = -1;
adItemFilterComboBox.SelectedIndex = 0;
}
private void closeFormFileMainMenu_Click(object sender, EventArgs e)
{
Close();
}
}
}
File diff suppressed because it is too large Load Diff
+285 -285
View File
@@ -40,25 +40,25 @@ namespace AdvertsingProfitControl
public void BuildFormFrontCompressedLayout(int dateId, double departmentSales, double salesProducedByAdItems, double remainingSales, double totalProfitReturnFromAdItems, double totalProfitReturnFromRemainingSales, double totalProfitReturn, string comments) public void BuildFormFrontCompressedLayout(int dateId, double departmentSales, double salesProducedByAdItems, double remainingSales, double totalProfitReturnFromAdItems, double totalProfitReturnFromRemainingSales, double totalProfitReturn, string comments)
{ {
var databaseTracker = new DatabaseTracker(); //var databaseTracker = new DatabaseTracker();
var databaseReader = new DatabaseReader(); //var databaseReader = new DatabaseReader();
var stringWriter = new StringWriter(); var stringWriter = new StringWriter();
var writer = new HtmlTextWriter(stringWriter); var writer = new HtmlTextWriter(stringWriter);
var table = databaseReader.ReturnApcTableForReport(dateId, databaseTracker.DatabaseConnectionString); //var table = databaseReader.ReturnApcTableForReport(dateId, databaseTracker.DatabaseConnectionString);
var dateString = databaseReader.RetrieveDateStringById(dateId, databaseTracker.DatabaseConnectionString); //var dateString = databaseReader.RetrieveDateStringById(dateId, databaseTracker.DatabaseConnectionString);
var spam = dateString.Split(' '); //var spam = dateString.Split(' ');
dateString = spam[0]; //dateString = spam[0];
//Begin evaluating the size of the table. //Begin evaluating the size of the table.
var isCompressedFormat = false; var isCompressedFormat = false;
var willGenerateCommentRow = false; var willGenerateCommentRow = false;
if ((table.Rows.Count + 1) == 15) //if ((table.Rows.Count + 1) == 15)
{ //{
willGenerateCommentRow = true; // willGenerateCommentRow = true;
} //}
else if ((table.Rows.Count + 1) < 15) //else if ((table.Rows.Count + 1) < 15)
{ //{
isCompressedFormat = true; // isCompressedFormat = true;
} //}
writer.Write("<!DOCTYPE html>\n"); writer.Write("<!DOCTYPE html>\n");
writer.RenderBeginTag(HtmlTextWriterTag.Html); writer.RenderBeginTag(HtmlTextWriterTag.Html);
writer.RenderBeginTag(HtmlTextWriterTag.Head); writer.RenderBeginTag(HtmlTextWriterTag.Head);
@@ -85,7 +85,7 @@ namespace AdvertsingProfitControl
writer.RenderEndTag();//td writer.RenderEndTag();//td
writer.AddAttribute(HtmlTextWriterAttribute.Style, "width:33%; padding: 0px 0px 0px 0px; margin:0px; border:none; vertical-align:bottom"); writer.AddAttribute(HtmlTextWriterAttribute.Style, "width:33%; padding: 0px 0px 0px 0px; margin:0px; border:none; vertical-align:bottom");
writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("<p><span style=\"margin-left:102px\">Week Ending: <u>" + dateString + "</u></span><br><span style=\"margin-left:86px\">Department: <u>Produce</u></span></p>"); writer.Write("<p><span style=\"margin-left:102px\">Week Ending: <u> + dateString + </u></span><br><span style=\"margin-left:86px\">Department: <u>Produce</u></span></p>");
writer.RenderEndTag();//td writer.RenderEndTag();//td
writer.RenderEndTag();//tr writer.RenderEndTag();//tr
writer.AddAttribute(HtmlTextWriterAttribute.Style, "margin:0px; padding:0px"); writer.AddAttribute(HtmlTextWriterAttribute.Style, "margin:0px; padding:0px");
@@ -183,281 +183,281 @@ namespace AdvertsingProfitControl
double actualTotalProfitReturn = 0; double actualTotalProfitReturn = 0;
var adSpecialOffset = 0; var adSpecialOffset = 0;
//Profit Analysis values. //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. //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; // 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 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) // if (rowIndex < table.Rows.Count)
{ // {
var row = table.Rows[rowIndex]; // var row = table.Rows[rowIndex];
var rowAttribute = 0; // var rowAttribute = 0;
var groupId = 0; // var groupId = 0;
if (int.TryParse(row.ItemArray[17].ToString(), out rowAttribute)) // if (int.TryParse(row.ItemArray[17].ToString(), out rowAttribute))
{ // {
if (rowAttribute != 0) // if (rowAttribute != 0)
{ // {
if (rowAttribute == 1) // if (rowAttribute == 1)
{ // {
isRowMember = false; // isRowMember = false;
} // }
else // else
{ // {
isRowMember = true; // isRowMember = true;
} // }
isRenderingGroup = true; // isRenderingGroup = true;
} // }
else // else
{ // {
isRenderingGroup = false; // isRenderingGroup = false;
isRowMember = false; // isRowMember = false;
} // }
} // }
if (adSpecialRowIndex == -1 && int.TryParse(row.ItemArray[18].ToString(), out groupId)) // if (adSpecialRowIndex == -1 && int.TryParse(row.ItemArray[18].ToString(), out groupId))
{ // {
if (groupId != 0) // if (groupId != 0)
{ // {
adSpecialRowIndex = rowIndex; // adSpecialRowIndex = rowIndex;
writer.RenderBeginTag(HtmlTextWriterTag.Tr); // writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "17"); // writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "17");
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-left:none"); // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-left:none");
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("<center>" + // writer.Write("<center>" +
databaseReader.ReturnGroupNameFromGroupId(groupId.ToString(), // databaseReader.ReturnGroupNameFromGroupId(groupId.ToString(),
databaseTracker.DatabaseConnectionString) + "</center>"); // databaseTracker.DatabaseConnectionString) + "</center>");
writer.RenderEndTag(); //td // writer.RenderEndTag(); //td
writer.RenderEndTag(); //tr // writer.RenderEndTag(); //tr
BuildProfitAnalysisCell(ref writer, rowIndex, out isProfitAnalysisCell, salesProducedByAdItems, remainingSales, totalProfitReturnFromAdItems, totalProfitReturnFromRemainingSales, totalProfitReturn); // BuildProfitAnalysisCell(ref writer, rowIndex, out isProfitAnalysisCell, salesProducedByAdItems, remainingSales, totalProfitReturnFromAdItems, totalProfitReturnFromRemainingSales, totalProfitReturn);
adSpecialOffset++; // adSpecialOffset++;
} // }
} // }
writer.RenderBeginTag(HtmlTextWriterTag.Tr); // writer.RenderBeginTag(HtmlTextWriterTag.Tr);
for (var i = 0; i < row.ItemArray.Length; i++) // for (var i = 0; i < row.ItemArray.Length; i++)
{ // {
if (i >= 17) continue; // if (i >= 17) continue;
if (i == 0) // if (i == 0)
{ // {
writer.AddStyleAttribute(HtmlTextWriterStyle.TextAlign, "left"); // writer.AddStyleAttribute(HtmlTextWriterStyle.TextAlign, "left");
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-left:none"); // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-left:none");
} // }
else if (i > 0 && i < 7) // else if (i > 0 && i < 7)
{ // {
//background-color:#e9e9e9 // //background-color:#e9e9e9
writer.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, "#e9e9e9"); // writer.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, "#e9e9e9");
} // }
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
decimal number; // decimal number;
if (decimal.TryParse(row.ItemArray[i].ToString(), out number)) // if (decimal.TryParse(row.ItemArray[i].ToString(), out number))
{ // {
//Check for the inventory columns and the sold columns. // //Check for the inventory columns and the sold columns.
if (!isRowMember) // if (!isRowMember)
{ // {
if (i == 1 || i > 6 && i < 12) // if (i == 1 || i > 6 && i < 12)
{ // {
writer.Write(number == 0 ? "0" : row.ItemArray[i].ToString()); // writer.Write(number == 0 ? "0" : row.ItemArray[i].ToString());
} // }
if (i > 1 && i < 7 || i > 11) // if (i > 1 && i < 7 || i > 11)
{ // {
writer.Write(number == 0 ? "0.00" : $"{number:N}"); // writer.Write(number == 0 ? "0.00" : $"{number:N}");
} // }
} // }
switch (i) // switch (i)
{ // {
case 3: // case 3:
projectionProfitReturn += double.Parse(row.ItemArray[3].ToString()); // projectionProfitReturn += double.Parse(row.ItemArray[3].ToString());
break; // break;
case 6: // case 6:
projectionTotalProfitReturn += double.Parse(row.ItemArray[6].ToString()); // projectionTotalProfitReturn += double.Parse(row.ItemArray[6].ToString());
break; // break;
case 13: // case 13:
actualProfitReturn += double.Parse(row.ItemArray[13].ToString()); // actualProfitReturn += double.Parse(row.ItemArray[13].ToString());
break; // break;
case 16: // case 16:
actualTotalProfitReturn += double.Parse(row.ItemArray[16].ToString()); // actualTotalProfitReturn += double.Parse(row.ItemArray[16].ToString());
break; // break;
} // }
} // }
else // else
{ // {
writer.Write(row.ItemArray[i]); // writer.Write(row.ItemArray[i]);
} // }
writer.RenderEndTag(); //td // writer.RenderEndTag(); //td
} // }
} // }
else // else
{ // {
//Padding // //Padding
writer.RenderBeginTag(HtmlTextWriterTag.Tr); // writer.RenderBeginTag(HtmlTextWriterTag.Tr);
//Generate padding rows to fit the Profit Analysis cells properly onto the sheet. // //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. // //Check to see if the row index is equal to the number of rows in the table.
if (rowIndex == table.Rows.Count) // 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. // //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. // //Begin rendering the totals row.
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:1px solid black; border-left:none"); // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:1px solid black; border-left:none");
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.RenderEndTag(); // writer.RenderEndTag();
writer.AddAttribute(HtmlTextWriterAttribute.Style, "background-color:#e9e9e9; text-align:right"); // writer.AddAttribute(HtmlTextWriterAttribute.Style, "background-color:#e9e9e9; text-align:right");
writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2"); // writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("Total"); // writer.Write("Total");
writer.RenderEndTag(); //td // writer.RenderEndTag(); //td
writer.AddAttribute(HtmlTextWriterAttribute.Style, "background-color:#e9e9e9; padding: 0px 0px 0px 5px"); // writer.AddAttribute(HtmlTextWriterAttribute.Style, "background-color:#e9e9e9; padding: 0px 0px 0px 5px");
writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2"); // writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("(A) " + $"{projectionProfitReturn:C}"); // writer.Write("(A) " + $"{projectionProfitReturn:C}");
writer.RenderEndTag(); // writer.RenderEndTag();
writer.AddAttribute(HtmlTextWriterAttribute.Style, "background-color:#e9e9e9; padding: 0px 0px 0px 5px"); // writer.AddAttribute(HtmlTextWriterAttribute.Style, "background-color:#e9e9e9; padding: 0px 0px 0px 5px");
writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2"); // writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("(B) " + $"{projectionTotalProfitReturn:C}"); // writer.Write("(B) " + $"{projectionTotalProfitReturn:C}");
writer.RenderEndTag(); // writer.RenderEndTag();
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right"); // writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right");
writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "5"); // writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "5");
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("Total"); // writer.Write("Total");
writer.RenderEndTag(); // writer.RenderEndTag();
writer.AddAttribute(HtmlTextWriterAttribute.Style, "padding: 0px 0px 0px 5px"); // writer.AddAttribute(HtmlTextWriterAttribute.Style, "padding: 0px 0px 0px 5px");
writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2"); // writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("(A) " + $"{actualProfitReturn:C}"); // writer.Write("(A) " + $"{actualProfitReturn:C}");
writer.RenderEndTag(); // writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.RenderEndTag(); // writer.RenderEndTag();
writer.AddAttribute(HtmlTextWriterAttribute.Style, "padding: 0px 0px 0px 5px"); // writer.AddAttribute(HtmlTextWriterAttribute.Style, "padding: 0px 0px 0px 5px");
writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2"); // writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("(B) " + $"{actualTotalProfitReturn:C}"); // writer.Write("(B) " + $"{actualTotalProfitReturn:C}");
writer.RenderEndTag();//td // writer.RenderEndTag();//td
//END rending the totals row. // //END rending the totals row.
BuildProfitAnalysisCell(ref writer, rowIndex + adSpecialOffset, out isProfitAnalysisCell, salesProducedByAdItems, remainingSales, totalProfitReturnFromAdItems, totalProfitReturnFromRemainingSales, totalProfitReturn); // BuildProfitAnalysisCell(ref writer, rowIndex + adSpecialOffset, out isProfitAnalysisCell, salesProducedByAdItems, remainingSales, totalProfitReturnFromAdItems, totalProfitReturnFromRemainingSales, totalProfitReturn);
} // }
else if (rowIndex == (table.Rows.Count + 1)) // 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. // //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.Colspan, "17");
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-left:none"); // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-left:none");
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write( // writer.Write(
"<b>Comments:</b> " + comments); // "<b>Comments:</b> " + comments);
writer.RenderEndTag(); //td // writer.RenderEndTag(); //td
BuildProfitAnalysisCell(ref writer, rowIndex + adSpecialOffset, out isProfitAnalysisCell, salesProducedByAdItems, remainingSales, totalProfitReturnFromAdItems, totalProfitReturnFromRemainingSales, totalProfitReturn); // BuildProfitAnalysisCell(ref writer, rowIndex + adSpecialOffset, out isProfitAnalysisCell, salesProducedByAdItems, remainingSales, totalProfitReturnFromAdItems, totalProfitReturnFromRemainingSales, totalProfitReturn);
} // }
else // else
{ // {
var cellCount = 0; // var cellCount = 0;
while (cellCount < 17) // while (cellCount < 17)
{ // {
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none"); // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none");
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.RenderEndTag();//td // writer.RenderEndTag();//td
cellCount++; // cellCount++;
} // }
} // }
} // }
//Check for every 3rd row to append a Profit Analysis cell onto. //Check for every 3rd row to append a Profit Analysis cell onto.
switch (rowIndex + adSpecialOffset) // switch (rowIndex + adSpecialOffset)
{ // {
case 0: // case 0:
writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, "2"); // writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, "2");
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none; border-right:none"); // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none; border-right:none");
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("<center style=\"margin-top:1px\">Sales Produced By<br>Ad Items (A)</center><p><span style=\"font-size:9px; vertical-align:bottom\">2</span><span style=\"margin-left:60px\">" + $"{salesProducedByAdItems:C}" + "</span></p>"); // writer.Write("<center style=\"margin-top:1px\">Sales Produced By<br>Ad Items (A)</center><p><span style=\"font-size:9px; vertical-align:bottom\">2</span><span style=\"margin-left:60px\">" + $"{salesProducedByAdItems:C}" + "</span></p>");
writer.RenderEndTag(); // writer.RenderEndTag();
break; // break;
case 3: // case 3:
writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, "2"); // writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, "2");
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none; border-top:1px solid black; border-right:none"); // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none; border-top:1px solid black; border-right:none");
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("<center style=\"margin-top:1px\">Remaining<br>Sales</center><p><span style=\"font-size:9px; vertical-align:bottom\">3</span><span style=\"margin-left:60px\">" + $"{remainingSales:C}" + " </span></p>"); // writer.Write("<center style=\"margin-top:1px\">Remaining<br>Sales</center><p><span style=\"font-size:9px; vertical-align:bottom\">3</span><span style=\"margin-left:60px\">" + $"{remainingSales:C}" + " </span></p>");
writer.RenderEndTag(); // writer.RenderEndTag();
break; // break;
case 6: // case 6:
writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, "2"); // writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, "2");
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none; border-top:1px solid black; border-right:none"); // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none; border-top:1px solid black; border-right:none");
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("<center style=\"margin-top:1px;\">Total $ Profit Return<br>From Ad Items (B)</center><p><span style=\"font-size:9px; vertical-align:bottom\">4</span><span style=\"margin-left:60px\">" + $"{totalProfitReturnFromAdItems:C}" + " </span></p>"); // writer.Write("<center style=\"margin-top:1px;\">Total $ Profit Return<br>From Ad Items (B)</center><p><span style=\"font-size:9px; vertical-align:bottom\">4</span><span style=\"margin-left:60px\">" + $"{totalProfitReturnFromAdItems:C}" + " </span></p>");
writer.RenderEndTag(); // writer.RenderEndTag();
break; // break;
case 9: // case 9:
writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, "2"); // writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, "2");
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none; border-top:1px solid black; border-right:none"); // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none; border-top:1px solid black; border-right:none");
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("<center style=\"margin-top:2px\">Total $ Profit Return<br>From Remaining Sales</center><p><span style=\"font-size:9px; vertical-align:bottom\">5</span><span style=\"margin-left:60px\">" + $"{totalProfitReturnFromRemainingSales:C}" + "</span></p>"); // writer.Write("<center style=\"margin-top:2px\">Total $ Profit Return<br>From Remaining Sales</center><p><span style=\"font-size:9px; vertical-align:bottom\">5</span><span style=\"margin-left:60px\">" + $"{totalProfitReturnFromRemainingSales:C}" + "</span></p>");
writer.RenderEndTag(); // writer.RenderEndTag();
break; // break;
case 12: // case 12:
writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, "2"); // writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, "2");
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-right:none"); // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-right:none");
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("<center style=\"margin-top:1px\">Total $ Profit<br>Return</center><p><span style=\"font-size:9px; vertical-align:bottom\">6</span><span style=\"margin-left:60px\">" + $"{totalProfitReturn:C}" + "</span></p>"); // writer.Write("<center style=\"margin-top:1px\">Total $ Profit<br>Return</center><p><span style=\"font-size:9px; vertical-align:bottom\">6</span><span style=\"margin-left:60px\">" + $"{totalProfitReturn:C}" + "</span></p>");
writer.RenderEndTag(); // writer.RenderEndTag();
break; // break;
case 15: // 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 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; // if (isCompressedFormat || willGenerateCommentRow) break;
writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, "4"); // writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, "4");
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-right:none"); // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-right:none");
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("Comments: " + comments); // writer.Write("Comments: " + comments);
writer.RenderEndTag(); // writer.RenderEndTag();
break; // break;
} // }
writer.RenderEndTag();//tr // writer.RenderEndTag();//tr
}//end for loop //}//end for loop
if (!willGenerateCommentRow && !isCompressedFormat) //if (!willGenerateCommentRow && !isCompressedFormat)
{ //{
//Begin rendering the totals row. // //Begin rendering the totals row.
writer.RenderBeginTag(HtmlTextWriterTag.Tr); // writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:1px solid black; border-left:none"); // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:1px solid black; border-left:none");
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.RenderEndTag(); // 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.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.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("Total"); // writer.Write("Total");
writer.RenderEndTag(); //td // 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.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.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("(A) " + $"{projectionProfitReturn:C}"); // writer.Write("(A) " + $"{projectionProfitReturn:C}");
writer.RenderEndTag(); // 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.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.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("(B) " + $"{projectionTotalProfitReturn:C}"); // writer.Write("(B) " + $"{projectionTotalProfitReturn:C}");
writer.RenderEndTag(); // writer.RenderEndTag();
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:1px solid black; font-size:12px; border-left: 1px solid #000; text-align:right"); // 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.AddAttribute(HtmlTextWriterAttribute.Colspan, "5");
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("Total"); // writer.Write("Total");
writer.RenderEndTag(); // 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.Style, "border:1px solid black; font-size:12px; border-left: 1px solid #000; padding: 0px 0px 0px 5px");
writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2"); // writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("(A) " + $"{actualProfitReturn:C}"); // writer.Write("(A) " + $"{actualProfitReturn:C}");
writer.RenderEndTag(); // writer.RenderEndTag();
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:1px solid black"); // writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:1px solid black");
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.RenderEndTag(); // 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.Style, "border:1px solid black; font-size:12px; border-left: 1px solid #000; padding: 0px 0px 0px 5px");
writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2"); // writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td); // writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("(B) " + $"{actualTotalProfitReturn:C}"); // writer.Write("(B) " + $"{actualTotalProfitReturn:C}");
writer.RenderEndTag();//td // writer.RenderEndTag();//td
writer.RenderEndTag(); //tr // writer.RenderEndTag(); //tr
} //}
writer.RenderEndTag();//table //writer.RenderEndTag();//table
writer.RenderEndTag();//body //writer.RenderEndTag();//body
writer.RenderEndTag();//HTML //writer.RenderEndTag();//HTML
using (var streamWriter = new StreamWriter(Application.StartupPath + "\\FrontPage.html")) //using (var streamWriter = new StreamWriter(Application.StartupPath + "\\FrontPage.html"))
{ //{
streamWriter.WriteLine(stringWriter.ToString()); // streamWriter.WriteLine(stringWriter.ToString());
} //}
RenderHtmlToImage(); //RenderHtmlToImage();
} }
private void BuildProfitAnalysisCell(ref HtmlTextWriter writer, int rowIndex, out bool isProfitAnalysisCell, double salesProducedByAdItems, double remainingSales, double totalProfitReturnFromAdItems, double totalProfitReturnFromRemainingSales, double totalProfitReturn) private void BuildProfitAnalysisCell(ref HtmlTextWriter writer, int rowIndex, out bool isProfitAnalysisCell, double salesProducedByAdItems, double remainingSales, double totalProfitReturnFromAdItems, double totalProfitReturnFromRemainingSales, double totalProfitReturn)
+168 -302
View File
@@ -1,7 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Data;
using System.Data.Entity.Infrastructure; using System.Data.Entity.Infrastructure;
using System.Drawing; using System.Drawing;
using System.Globalization; using System.Globalization;
@@ -14,6 +13,7 @@ namespace AdvertsingProfitControl
{ {
public partial class NewModifyRecord : Form public partial class NewModifyRecord : Form
{ {
//TODO: Re-enable drag and drop on the modify record form.
//http://stackoverflow.com/questions/6219454/efficient-way-to-remove-all-whitespace-from-string //http://stackoverflow.com/questions/6219454/efficient-way-to-remove-all-whitespace-from-string
private static readonly FrmLogConsole LogConsole = FrmLogConsole.GetStaticInstance; private static readonly FrmLogConsole LogConsole = FrmLogConsole.GetStaticInstance;
//Create an array that contains all the ad items from the database. //Create an array that contains all the ad items from the database.
@@ -422,13 +422,11 @@ namespace AdvertsingProfitControl
if (result == DialogResult.Yes) if (result == DialogResult.Yes)
{ {
//If so create the database interaction objects. //If so create the database interaction objects.
var dbTracker = new DatabaseTracker();
var dbWriter = new DatabaseWriter(dbTracker.DatabaseConnectionString);
var id = var id =
int.Parse( int.Parse(
invoicesDataGridView.Rows[rowIndex].Cells[(int)InvoiceTableColumns.Id].EditedFormattedValue invoicesDataGridView.Rows[rowIndex].Cells[(int)InvoiceTableColumns.Id].EditedFormattedValue
.ToString()); .ToString());
if (dbWriter.DeleteInvoiceRow(id)) if (DeleteInvoiceRow(id))
{ {
informationLabel.Text = @"Successfully removed row " + (rowIndex + 1) + @" from the database."; informationLabel.Text = @"Successfully removed row " + (rowIndex + 1) + @" from the database.";
} }
@@ -583,8 +581,6 @@ namespace AdvertsingProfitControl
var dataGridView = (DataGridView)sender; var dataGridView = (DataGridView)sender;
if (dataGridView.CurrentRow == null) return; if (dataGridView.CurrentRow == null) return;
//Create the database writer object so rows that are in the database can be deleted. //Create the database writer object so rows that are in the database can be deleted.
var dbTracker = new DatabaseTracker();
var dbWriter = new DatabaseWriter(dbTracker.DatabaseConnectionString);
var currentRowIndex = dataGridView.CurrentRow.Index; var currentRowIndex = dataGridView.CurrentRow.Index;
//Remove the ad item from the gUsedAdItem collection, if it exists. //Remove the ad item from the gUsedAdItem collection, if it exists.
if (_adSpecialIndex == -1) if (_adSpecialIndex == -1)
@@ -596,20 +592,17 @@ namespace AdvertsingProfitControl
if (result == DialogResult.Yes) if (result == DialogResult.Yes)
{ {
//Attempt to delete the row from the database by its ID number. //Attempt to delete the row from the database by its ID number.
int projectionsRowId;
int inventoryRowId;
int actualSalesRowId;
//Attempt to delete the row from the database by its ID number. //Attempt to delete the row from the database by its ID number.
int.TryParse( int.TryParse(
projectionsDataGridView.Rows[currentRowIndex].Cells[(int)SalesTableColumns.Id] projectionsDataGridView.Rows[currentRowIndex].Cells[(int)SalesTableColumns.Id]
.EditedFormattedValue.ToString(), out projectionsRowId); .EditedFormattedValue.ToString(), out int projectionsRowId);
int.TryParse( int.TryParse(
inventoryDataGridView.Rows[currentRowIndex].Cells[(int) SalesTableColumns.Id] inventoryDataGridView.Rows[currentRowIndex].Cells[(int) SalesTableColumns.Id]
.EditedFormattedValue.ToString(), out inventoryRowId); .EditedFormattedValue.ToString(), out int inventoryRowId);
int.TryParse( int.TryParse(
actualSalesDataGridView.Rows[currentRowIndex].Cells[(int) SalesTableColumns.Id] actualSalesDataGridView.Rows[currentRowIndex].Cells[(int) SalesTableColumns.Id]
.EditedFormattedValue.ToString(), out actualSalesRowId); .EditedFormattedValue.ToString(), out int actualSalesRowId);
if (dbWriter.DeleteApcRow(projectionsRowId, inventoryRowId, actualSalesRowId)) if (DeleteApcRow(projectionsRowId, inventoryRowId, actualSalesRowId))
{ {
informationLabel.Text = @"Successfully removed row " + (currentRowIndex + 1) + informationLabel.Text = @"Successfully removed row " + (currentRowIndex + 1) +
@" from the database."; @" from the database.";
@@ -643,14 +636,11 @@ namespace AdvertsingProfitControl
if (result == DialogResult.Yes) if (result == DialogResult.Yes)
{ {
//Attempt to delete the row from the database by its ID number. //Attempt to delete the row from the database by its ID number.
int projectionsRowId;
int inventoryRowId;
int actualSalesRowId;
//Attempt to delete the row from the database by its ID number. //Attempt to delete the row from the database by its ID number.
int.TryParse(projectionsDataGridView.Rows[currentRowIndex].Cells[(int)SalesTableColumns.Id].EditedFormattedValue.ToString(), out projectionsRowId); int.TryParse(projectionsDataGridView.Rows[currentRowIndex].Cells[(int)SalesTableColumns.Id].EditedFormattedValue.ToString(), out int projectionsRowId);
int.TryParse(inventoryDataGridView.Rows[currentRowIndex].Cells[(int)SalesTableColumns.Id].EditedFormattedValue.ToString(), out inventoryRowId); int.TryParse(inventoryDataGridView.Rows[currentRowIndex].Cells[(int)SalesTableColumns.Id].EditedFormattedValue.ToString(), out int inventoryRowId);
int.TryParse(actualSalesDataGridView.Rows[currentRowIndex].Cells[(int)SalesTableColumns.Id].EditedFormattedValue.ToString(), out actualSalesRowId); int.TryParse(actualSalesDataGridView.Rows[currentRowIndex].Cells[(int)SalesTableColumns.Id].EditedFormattedValue.ToString(), out int actualSalesRowId);
if (dbWriter.DeleteApcRow(projectionsRowId, inventoryRowId, actualSalesRowId)) if (DeleteApcRow(projectionsRowId, inventoryRowId, actualSalesRowId))
{ {
informationLabel.Text = @"Successfully removed row " + (currentRowIndex + 1) + @" from the database."; informationLabel.Text = @"Successfully removed row " + (currentRowIndex + 1) + @" from the database.";
} }
@@ -688,7 +678,7 @@ namespace AdvertsingProfitControl
var projectionsRowId = int.Parse(projectionsDataGridView.Rows[currentRowIndex].Cells[(int)SalesTableColumns.Id].EditedFormattedValue.ToString()); var projectionsRowId = int.Parse(projectionsDataGridView.Rows[currentRowIndex].Cells[(int)SalesTableColumns.Id].EditedFormattedValue.ToString());
var inventoryRowId = int.Parse(inventoryDataGridView.Rows[currentRowIndex].Cells[(int)SalesTableColumns.Id].EditedFormattedValue.ToString()); var inventoryRowId = int.Parse(inventoryDataGridView.Rows[currentRowIndex].Cells[(int)SalesTableColumns.Id].EditedFormattedValue.ToString());
var actualSalesRowId = int.Parse(actualSalesDataGridView.Rows[currentRowIndex].Cells[(int)SalesTableColumns.Id].EditedFormattedValue.ToString()); var actualSalesRowId = int.Parse(actualSalesDataGridView.Rows[currentRowIndex].Cells[(int)SalesTableColumns.Id].EditedFormattedValue.ToString());
if (dbWriter.DeleteApcRow(projectionsRowId, inventoryRowId, actualSalesRowId)) if (DeleteApcRow(projectionsRowId, inventoryRowId, actualSalesRowId))
{ {
informationLabel.Text = @"Successfully removed row " + (currentRowIndex + 1) + @" from the database."; informationLabel.Text = @"Successfully removed row " + (currentRowIndex + 1) + @" from the database.";
} }
@@ -743,7 +733,7 @@ namespace AdvertsingProfitControl
int.TryParse(projectionsDataGridView.Rows[currentRowIndex].Cells[(int)SalesTableColumns.Id].EditedFormattedValue.ToString(), out projectionsRowId); int.TryParse(projectionsDataGridView.Rows[currentRowIndex].Cells[(int)SalesTableColumns.Id].EditedFormattedValue.ToString(), out projectionsRowId);
int.TryParse(inventoryDataGridView.Rows[currentRowIndex].Cells[(int)SalesTableColumns.Id].EditedFormattedValue.ToString(), out inventoryRowId); int.TryParse(inventoryDataGridView.Rows[currentRowIndex].Cells[(int)SalesTableColumns.Id].EditedFormattedValue.ToString(), out inventoryRowId);
int.TryParse(actualSalesDataGridView.Rows[currentRowIndex].Cells[(int)SalesTableColumns.Id].EditedFormattedValue.ToString(), out actualSalesRowId); int.TryParse(actualSalesDataGridView.Rows[currentRowIndex].Cells[(int)SalesTableColumns.Id].EditedFormattedValue.ToString(), out actualSalesRowId);
if (dbWriter.DeleteApcRow(projectionsRowId, inventoryRowId, actualSalesRowId)) if (DeleteApcRow(projectionsRowId, inventoryRowId, actualSalesRowId))
{ {
informationLabel.Text = @"Successfully removed row " + (currentRowIndex + 1) + @" from the database."; informationLabel.Text = @"Successfully removed row " + (currentRowIndex + 1) + @" from the database.";
} }
@@ -983,9 +973,7 @@ namespace AdvertsingProfitControl
if (result == DialogResult.Yes) if (result == DialogResult.Yes)
{ {
var dbT = new DatabaseTracker(); if (!DeleteApcRow(
var dbW = new DatabaseWriter(dbT.DatabaseConnectionString);
if (!dbW.DeleteApcRow(
int.Parse( int.Parse(
projectionsDataGridView.Rows[e.RowIndex].Cells[ projectionsDataGridView.Rows[e.RowIndex].Cells[
(int) SalesTableColumns.Id].EditedFormattedValue.ToString()), (int) SalesTableColumns.Id].EditedFormattedValue.ToString()),
@@ -1509,9 +1497,7 @@ namespace AdvertsingProfitControl
if (result == DialogResult.Yes) if (result == DialogResult.Yes)
{ {
var dbT = new DatabaseTracker(); if (DeleteApcRow(
var dbW = new DatabaseWriter(dbT.DatabaseConnectionString);
if (!dbW.DeleteApcRow(
int.Parse( int.Parse(
projectionsDataGridView.Rows[e.RowIndex].Cells[ projectionsDataGridView.Rows[e.RowIndex].Cells[
(int)SalesTableColumns.Id].EditedFormattedValue.ToString()), (int)SalesTableColumns.Id].EditedFormattedValue.ToString()),
@@ -2732,12 +2718,9 @@ namespace AdvertsingProfitControl
private void LoadDate(DateTime date) private void LoadDate(DateTime date)
{ {
var databaseTracker = new DatabaseTracker();
var databaseReader = new DatabaseReader();
var db = new AdvertisingProfitControlModel(); var db = new AdvertisingProfitControlModel();
var dateRecord = db.WeekEndingDates.Single(x => x.EndingDate == date); var dateRecord = db.WeekEndingDates.SingleOrDefault(x => x.EndingDate == date);
var dateId = databaseReader.RetrieveDateIdByDateString(date.ToString("d"), databaseTracker.DatabaseConnectionString); if (dateRecord == null)
if (dateId == 0)
{ {
errorLabel.Text = @"Failed to get the date ID number, aborting load operation." + Environment.NewLine; errorLabel.Text = @"Failed to get the date ID number, aborting load operation." + Environment.NewLine;
return; return;
@@ -2746,45 +2729,11 @@ namespace AdvertsingProfitControl
LoadProjectionsTable(dateRecord); LoadProjectionsTable(dateRecord);
LoadInventory(dateRecord); LoadInventory(dateRecord);
LoadActualSales(dateRecord); LoadActualSales(dateRecord);
var invoices = databaseReader.ReturnInvoiceTable(dateId, databaseTracker.DatabaseConnectionString); LoadInvoices(dateRecord);
var comments = databaseReader.RetrieveComments(int.Parse(dateId.ToString()), databaseTracker.DatabaseConnectionString); LoadComments(dateRecord);
if (comments.Count == 2) LoadWeeklySales(dateRecord);
{ LoadTaxable(dateRecord);
LoadComments(int.Parse(comments[0]), comments[1]); LoadCostAnalysis(dateRecord);
}
else
{
informationLabel.Text += @"No comments to display." + Environment.NewLine;
}
var weeklySales = databaseReader.ReturnWeeklySalesFromDateId(dateId, databaseTracker.DatabaseConnectionString);
if (weeklySales.Rows.Count == 1)
{
LoadWeeklySales(weeklySales);
}
else
{
informationLabel.Text += @"No sales to display." + Environment.NewLine;
}
var taxable = databaseReader.ReturnTaxableFromDateId(dateId, databaseTracker.DatabaseConnectionString);
if (taxable.Rows.Count == 1)
{
LoadTaxable(taxable);
}
else
{
informationLabel.Text += @"No taxable data to display." + Environment.NewLine;
}
LoadInvoices(invoices);
var costAnalysis = databaseReader.ReturnCostAnalysis(dateId, databaseTracker.DatabaseConnectionString);
if (costAnalysis.Rows.Count == 1)
{
LoadCostAnalysis(costAnalysis);
}
else
{
informationLabel.Text += @"No cost analysis data to display." + Environment.NewLine;
}
_formRoll = FormRoll.ModifyRecord; _formRoll = FormRoll.ModifyRecord;
} }
@@ -2978,59 +2927,44 @@ namespace AdvertsingProfitControl
actualSalesDataGridView.RowValidating += ValidateActualSalesRow; actualSalesDataGridView.RowValidating += ValidateActualSalesRow;
} }
private void LoadInvoices(DataTable invoices) private void LoadInvoices(WeekEndingDate dateRecord)
{ {
for (var rowIndex = 0; rowIndex < invoices.Rows.Count; rowIndex++) var db = new AdvertisingProfitControlModel();
var invoices = db.Invoices.Where(x => x.WeekEndingDate.Id == dateRecord.Id).Select(x => x);
var index = 0;
foreach (var invoice in invoices)
{ {
var row = new DataGridViewRow(); invoicesDataGridView.Rows.Add();
for (var cellIndex = 0; cellIndex < invoices.Rows[rowIndex].ItemArray.Length; cellIndex++) invoicesDataGridView.Rows[index].Cells[0].Value = invoice.Id;
{ invoicesDataGridView.Rows[index].Cells[2].Value = invoice.Supplier.Name;
var cell = new DataGridViewTextBoxCell(); invoicesDataGridView.Rows[index].Cells[1].Value = invoice.InvoiceDate.ToString("d");
//Format the invoice date. invoicesDataGridView.Rows[index].Cells[3].Value = invoice.InvoiceNumber;
if (cellIndex == 1) invoicesDataGridView.Rows[index].Cells[4].Value = invoice.InvoiceNetAmountAtCost == 0 ? "" : invoice.InvoiceNetAmountAtCost.ToString();
{ invoicesDataGridView.Rows[index].Cells[5].Value = invoice.InvoiceNetAmount == 0 ? "" : invoice.InvoiceNetAmount.ToString();
var date = DateTime.Parse(invoices.Rows[rowIndex].ItemArray[cellIndex].ToString()); invoicesDataGridView.Rows[index].Cells[6].Value = invoice.InvoiceNote;
cell.Value = date.ToString("d"); invoicesDataGridView.Rows[index].Cells[(int)InvoiceTableColumns.IsDirty].Value = false;
row.Cells.Add(cell); index++;
continue;
}
//Apply formatting to the only cells that will have currency values in them.
if (cellIndex == 4 || cellIndex == 5)
{
var formattedNumber = Math.Round(double.Parse(invoices.Rows[rowIndex].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US"));
if (formattedNumber != "0.00")
{
cell.Value = formattedNumber;
}
row.Cells.Add(cell);
continue;
}
//No special formatting rules here so just put the value in and move on.
cell.Value = invoices.Rows[rowIndex].ItemArray[cellIndex].ToString();
row.Cells.Add(cell);
}
//Set the is dirty cell to false.
var isDirtyCell = new DataGridViewCheckBoxCell
{
Value = false
};
row.Cells.Add(isDirtyCell);
invoicesDataGridView.Rows.Add(row);
} }
} }
private void LoadComments(int id, string comments) private void LoadComments(WeekEndingDate dateRecord)
{ {
//commentsTextBox.TextChanged -= DisplayRemainingCommentCharacterCount; //commentsTextBox.TextChanged -= DisplayRemainingCommentCharacterCount;
commentsTextBox.Enter -= StoreBeginningTextBoxValue; commentsTextBox.Enter -= StoreBeginningTextBoxValue;
commentsTextBox.KeyDown -= CheckForKeyCommand; commentsTextBox.KeyDown -= CheckForKeyCommand;
commentsTextBox.Leave -= CheckForTextChangeOnLeave; commentsTextBox.Leave -= CheckForTextChangeOnLeave;
var db = new AdvertisingProfitControlModel();
isCommentDirtyCheckBox.Text = @"isCommentsDirty (" + id + @")"; var comments = db.Notes.SingleOrDefault(x => x.FkDateId == dateRecord.Id);
isCommentDirtyCheckBox.Tag = id; if (comments != null)
{
commentsTextBox.Text = comments; isCommentDirtyCheckBox.Tag = comments.Id;
isCommentDirtyCheckBox.Text = @"IsCommentsDirty (" + comments.Id + @")";
commentsTextBox.Text = comments.Remark;
}
else
{
informationLabel.Text += @"No comments to display." + Environment.NewLine;
}
//commentsGroupBox.Text = @"Comments (Characters Remaining: " + commentsTextBox.MaxLength + @")"; //commentsGroupBox.Text = @"Comments (Characters Remaining: " + commentsTextBox.MaxLength + @")";
//commentsTextBox.TextChanged += DisplayRemainingCommentCharacterCount; //commentsTextBox.TextChanged += DisplayRemainingCommentCharacterCount;
commentsTextBox.Enter += StoreBeginningTextBoxValue; commentsTextBox.Enter += StoreBeginningTextBoxValue;
@@ -3038,7 +2972,7 @@ namespace AdvertsingProfitControl
commentsTextBox.Leave += CheckForTextChangeOnLeave; commentsTextBox.Leave += CheckForTextChangeOnLeave;
} }
private void LoadWeeklySales(DataTable weeklySales) private void LoadWeeklySales(WeekEndingDate dateRecord)
{ {
sundayWeeklySalesTextBox.Enter -= StoreBeginningTextBoxValue; sundayWeeklySalesTextBox.Enter -= StoreBeginningTextBoxValue;
sundayWeeklySalesTextBox.Validating -= ValidateWeeklySales; sundayWeeklySalesTextBox.Validating -= ValidateWeeklySales;
@@ -3057,80 +2991,27 @@ namespace AdvertsingProfitControl
totalWeeklySalesTextBox.Enter -= StoreBeginningTextBoxValue; totalWeeklySalesTextBox.Enter -= StoreBeginningTextBoxValue;
totalWeeklySalesTextBox.Validating -= ValidateWeeklySales; totalWeeklySalesTextBox.Validating -= ValidateWeeklySales;
//Spin through the only row in the weekly sales table. Item in item var db = new AdvertisingProfitControlModel();
//array index zero (0) is the ID number of the weekly sales. var weeklySale = db.WeeklySales.SingleOrDefault(x => x.FkDateId == dateRecord.Id);
for (var cellIndex = 0; cellIndex < weeklySales.Rows[0].ItemArray.Length; cellIndex++) if (weeklySale == null)
{ {
if (cellIndex == 0) informationLabel.Text += @"No weekly sales to display." + Environment.NewLine;
}
else
{ {
//ID number sundayWeeklySalesTextBox.Text = weeklySale.Sunday == 0 ? string.Empty : $"{weeklySale.Sunday:N2}";
var id = int.Parse(weeklySales.Rows[0].ItemArray[cellIndex].ToString()); mondayWeeklySalesTextBox.Text = weeklySale.Monday == 0 ? string.Empty : $"{weeklySale.Monday:N2}";
isWeeklySalesDirtyCheckBox.Tag = id; tuesdayWeeklySalesTextBox.Text = weeklySale.Tuesday == 0 ? string.Empty : $"{weeklySale.Tuesday:N2}";
isWeeklySalesDirtyCheckBox.Text = @"IsWeeklySalesDirty (" + id + @")"; wednesdayWeeklySalesTextBox.Text = weeklySale.Wednesday == 0 ? string.Empty : $"{weeklySale.Wednesday:N2}";
continue; thursdayWeeklySalesTextBox.Text = weeklySale.Thursday == 0 ? string.Empty : $"{weeklySale.Thursday:N2}";
fridayWeeklySalesTextBox.Text = weeklySale.Friday == 0 ? string.Empty : $"{weeklySale.Friday:N2}";
saturdayWeeklySalesTextBox.Text = weeklySale.Saturday == 0 ? string.Empty : $"{weeklySale.Saturday:N2}";
totalWeeklySalesTextBox.Text = weeklySale.TotalSales == 0 ? string.Empty : $"{weeklySale.TotalSales:N2}";
//Set the internal state
isWeeklySalesDirtyCheckBox.Text = @"IsWeeklySalesDirty (" + weeklySale.Id + @")";
isWeeklySalesDirtyCheckBox.Tag = weeklySale.Id;
} }
string formattedNumber; //Re-enable the events
switch (cellIndex)
{
case 1: //Sunday
formattedNumber = Math.Round(double.Parse(weeklySales.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US"));
if (formattedNumber != "0.00")
{
sundayWeeklySalesTextBox.Text = formattedNumber;
}
break;
case 2: //Monday
formattedNumber = Math.Round(double.Parse(weeklySales.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US"));
if (formattedNumber != "0.00")
{
mondayWeeklySalesTextBox.Text = formattedNumber;
}
break;
case 3: //Tuesday
formattedNumber = Math.Round(double.Parse(weeklySales.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US"));
if (formattedNumber != "0.00")
{
tuesdayWeeklySalesTextBox.Text = formattedNumber;
}
break;
case 4: //Wednesday
formattedNumber = Math.Round(double.Parse(weeklySales.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US"));
if (formattedNumber != "0.00")
{
wednesdayWeeklySalesTextBox.Text = formattedNumber;
}
break;
case 5: //Thursday
formattedNumber = Math.Round(double.Parse(weeklySales.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US"));
if (formattedNumber != "0.00")
{
thursdayWeeklySalesTextBox.Text = formattedNumber;
}
break;
case 6: //Friday
formattedNumber = Math.Round(double.Parse(weeklySales.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US"));
if (formattedNumber != "0.00")
{
fridayWeeklySalesTextBox.Text = formattedNumber;
}
break;
case 7: //Saturday
formattedNumber = Math.Round(double.Parse(weeklySales.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US"));
if (formattedNumber != "0.00")
{
saturdayWeeklySalesTextBox.Text = formattedNumber;
}
break;
case 8: //Total Sales
formattedNumber = Math.Round(double.Parse(weeklySales.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US"));
if (formattedNumber != "0.00")
{
totalWeeklySalesTextBox.Text = formattedNumber;
}
break;
}
}
sundayWeeklySalesTextBox.Enter += StoreBeginningTextBoxValue; sundayWeeklySalesTextBox.Enter += StoreBeginningTextBoxValue;
sundayWeeklySalesTextBox.Validating += ValidateWeeklySales; sundayWeeklySalesTextBox.Validating += ValidateWeeklySales;
mondayWeeklySalesTextBox.Enter += StoreBeginningTextBoxValue; mondayWeeklySalesTextBox.Enter += StoreBeginningTextBoxValue;
@@ -3149,7 +3030,7 @@ namespace AdvertsingProfitControl
totalWeeklySalesTextBox.Validating += ValidateWeeklySales; totalWeeklySalesTextBox.Validating += ValidateWeeklySales;
} }
private void LoadTaxable(DataTable taxable) private void LoadTaxable(WeekEndingDate dateRecord)
{ {
sundayTaxableTextBox.Enter -= StoreBeginningTextBoxValue; sundayTaxableTextBox.Enter -= StoreBeginningTextBoxValue;
sundayTaxableTextBox.Validating -= ValidateTaxableFields; sundayTaxableTextBox.Validating -= ValidateTaxableFields;
@@ -3167,78 +3048,25 @@ namespace AdvertsingProfitControl
saturdayTaxableTextBox.Validating -= ValidateTaxableFields; saturdayTaxableTextBox.Validating -= ValidateTaxableFields;
totalTaxableTextBox.Enter -= StoreBeginningTextBoxValue; totalTaxableTextBox.Enter -= StoreBeginningTextBoxValue;
totalTaxableTextBox.Validating -= ValidateTaxableFields; totalTaxableTextBox.Validating -= ValidateTaxableFields;
//Spin through the only row in the taxable table. Item in item var db = new AdvertisingProfitControlModel();
//array index zero (0) is the ID number of the weekly sales. var taxable = db.Taxables.SingleOrDefault(x => x.FkDateId == dateRecord.Id);
for (var cellIndex = 0; cellIndex < taxable.Rows[0].ItemArray.Length; cellIndex++) if (taxable == null)
{ {
if (cellIndex == 0) informationLabel.Text += @"No taxables to display." + Environment.NewLine;
{
//ID number
var id = int.Parse(taxable.Rows[0].ItemArray[cellIndex].ToString());
isTaxableDirtyCheckBox.Tag = id;
isTaxableDirtyCheckBox.Text = @"IsTaxableDirty (" + id + @")";
continue;
} }
string formattedNumber; else
switch (cellIndex)
{ {
case 1: //Sunday sundayTaxableTextBox.Text = taxable.Sunday == 0 ? string.Empty : $"{taxable.Sunday:N2}";
formattedNumber = Math.Round(double.Parse(taxable.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US")); mondayTaxableTextBox.Text = taxable.Monday == 0 ? string.Empty : $"{taxable.Monday:N2}";
if (formattedNumber != "0.00") tuesdayTaxableTextBox.Text = taxable.Tuesday == 0 ? string.Empty : $"{taxable.Tuesday:N2}";
{ wednesdayTaxableTextBox.Text = taxable.Wednesday == 0 ? string.Empty : $"{taxable.Wednesday:N2}";
sundayTaxableTextBox.Text = formattedNumber; thursdayTaxableTextBox.Text = taxable.Thursday == 0 ? string.Empty : $"{taxable.Thursday:N2}";
} fridayTaxableTextBox.Text = taxable.Friday == 0 ? string.Empty : $"{taxable.Friday:N2}";
break; saturdayTaxableTextBox.Text = taxable.Saturday == 0 ? string.Empty : $"{taxable.Saturday:N2}";
case 2: //Monday totalTaxableTextBox.Text = taxable.Total == 0 ? string.Empty : $"{taxable.Total:N2}";
formattedNumber = Math.Round(double.Parse(taxable.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US")); //Set the internal state
if (formattedNumber != "0.00") isTaxableDirtyCheckBox.Text = @"IsTaxableDirty (" + taxable.Id + @")";
{ isTaxableDirtyCheckBox.Tag = taxable.Id;
mondayTaxableTextBox.Text = formattedNumber;
}
break;
case 3: //Tuesday
formattedNumber = Math.Round(double.Parse(taxable.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US"));
if (formattedNumber != "0.00")
{
tuesdayTaxableTextBox.Text = formattedNumber;
}
break;
case 4: //Wednesday
formattedNumber = Math.Round(double.Parse(taxable.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US"));
if (formattedNumber != "0.00")
{
wednesdayTaxableTextBox.Text = formattedNumber;
}
break;
case 5: //Thursday
formattedNumber = Math.Round(double.Parse(taxable.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US"));
if (formattedNumber != "0.00")
{
thursdayTaxableTextBox.Text = formattedNumber;
}
break;
case 6: //Friday
formattedNumber = Math.Round(double.Parse(taxable.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US"));
if (formattedNumber != "0.00")
{
fridayTaxableTextBox.Text = formattedNumber;
}
break;
case 7: //Saturday
formattedNumber = Math.Round(double.Parse(taxable.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US"));
if (formattedNumber != "0.00")
{
saturdayTaxableTextBox.Text = formattedNumber;
}
break;
case 8: //Total Taxable
formattedNumber = Math.Round(double.Parse(taxable.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US"));
if (formattedNumber != "0.00")
{
totalTaxableTextBox.Text = formattedNumber;
}
break;
}
} }
sundayTaxableTextBox.Enter += StoreBeginningTextBoxValue; sundayTaxableTextBox.Enter += StoreBeginningTextBoxValue;
sundayTaxableTextBox.Validating += ValidateTaxableFields; sundayTaxableTextBox.Validating += ValidateTaxableFields;
@@ -3258,7 +3086,7 @@ namespace AdvertsingProfitControl
totalTaxableTextBox.Validating += ValidateTaxableFields; totalTaxableTextBox.Validating += ValidateTaxableFields;
} }
private void LoadCostAnalysis(DataTable costAnalysis) private void LoadCostAnalysis(WeekEndingDate dateRecord)
{ {
salesPerManHourTextBox.Enter -= StoreBeginningTextBoxValue; salesPerManHourTextBox.Enter -= StoreBeginningTextBoxValue;
salesPerManHourTextBox.Validating -= ValidateCostAnalysisValues; salesPerManHourTextBox.Validating -= ValidateCostAnalysisValues;
@@ -3268,50 +3096,22 @@ namespace AdvertsingProfitControl
salaryDollarsTextBox.Validating -= ValidateCostAnalysisValues; salaryDollarsTextBox.Validating -= ValidateCostAnalysisValues;
suppliesTextBox.Enter -= StoreBeginningTextBoxValue; suppliesTextBox.Enter -= StoreBeginningTextBoxValue;
suppliesTextBox.Validating -= ValidateCostAnalysisValues; suppliesTextBox.Validating -= ValidateCostAnalysisValues;
//Spin through the only row in the taxable table. Item in item
//array index zero (0) is the ID number of the weekly sales. var db = new AdvertisingProfitControlModel();
for (var cellIndex = 0; cellIndex < costAnalysis.Rows[0].ItemArray.Length; cellIndex++) var costAnalysis = db.CostAnalysis.SingleOrDefault(x => x.FkDateId == dateRecord.Id);
if (costAnalysis == null)
{ {
if (cellIndex == 0) informationLabel.Text += @"No cost analysis to display." + Environment.NewLine;
{
//ID number
var id = int.Parse(costAnalysis.Rows[0].ItemArray[cellIndex].ToString());
isCostAnalysisDirtyCheckBox.Tag = id;
isCostAnalysisDirtyCheckBox.Text = @"IsCostAnalysisDirty (" + id + @")";
continue;
} }
string formattedNumber; else
switch (cellIndex)
{ {
case 1: //Sales per man hour salaryDollarsTextBox.Text = costAnalysis.SalaryDollar == 0 ? string.Empty : costAnalysis.SalaryDollar.ToString();
formattedNumber = Math.Round(double.Parse(costAnalysis.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US")); salesPerManHourTextBox.Text = costAnalysis.SalesPerManHour == 0 ? string.Empty : costAnalysis.SalesPerManHour.ToString();
if (formattedNumber != "0.00") salaryPercentageTextBox.Text = costAnalysis.SalaryPercentage == 0 ? string.Empty : costAnalysis.SalaryPercentage.ToString();
{ suppliesTextBox.Text = costAnalysis.Supplies == 0 ? string.Empty : costAnalysis.Supplies.ToString();
salesPerManHourTextBox.Text = formattedNumber; //Set the internal state
} isCostAnalysisDirtyCheckBox.Text = @"IsCostAnalysisDirty (" + costAnalysis.Id + @")";
break; isCostAnalysisDirtyCheckBox.Tag = costAnalysis.Id;
case 2: //Salary Percentage
formattedNumber = Math.Round(double.Parse(costAnalysis.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US"));
if (formattedNumber != "0.00")
{
salaryPercentageTextBox.Text = formattedNumber;
}
break;
case 3: //Salary Dollars
formattedNumber = Math.Round(double.Parse(costAnalysis.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US"));
if (formattedNumber != "0.00")
{
salaryDollarsTextBox.Text = formattedNumber;
}
break;
case 4: //Supplies
formattedNumber = Math.Round(double.Parse(costAnalysis.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US"));
if (formattedNumber != "0.00")
{
suppliesTextBox.Text = formattedNumber;
}
break;
}
} }
salesPerManHourTextBox.Enter += StoreBeginningTextBoxValue; salesPerManHourTextBox.Enter += StoreBeginningTextBoxValue;
salesPerManHourTextBox.Validating += ValidateCostAnalysisValues; salesPerManHourTextBox.Validating += ValidateCostAnalysisValues;
@@ -4337,6 +4137,67 @@ namespace AdvertsingProfitControl
return adSpecial; return adSpecial;
} }
private static bool DeleteApcRow(int projectionId, int inventoryId, int actualSalesId)
{
var result = true;
var db = new AdvertisingProfitControlModel();
using (var scope = new TransactionScope())
{
try
{
var projection = db.Projections.SingleOrDefault(x => x.Id == projectionId);
if (projection != null)
{
db.Projections.Remove(projection);
}
var inventory = db.Inventories.SingleOrDefault(x => x.Id == inventoryId);
if (inventory != null)
{
db.Inventories.Remove(inventory);
}
var actualSale = db.ActualSales.SingleOrDefault(x => x.Id == actualSalesId);
if (actualSale != null)
{
db.ActualSales.Remove(actualSale);
}
db.SaveChanges();
scope.Complete();
}
catch (DbUpdateException e)
{
LogConsole.WriteToLog(FrmLogConsole.Level.Error, e.Message);
result = false;
}
}
return result;
}
private static bool DeleteInvoiceRow(int invoiceId)
{
var result = true;
var db = new AdvertisingProfitControlModel();
using (var scope = new TransactionScope())
{
try
{
var invoice = db.Invoices.SingleOrDefault(x => x.Id == invoiceId);
if (invoice != null)
{
db.Invoices.Remove(invoice);
}
db.SaveChanges();
scope.Complete();
}
catch (DbUpdateException e)
{
LogConsole.WriteToLog(FrmLogConsole.Level.Error, e.Message);
result = false;
}
}
return result;
}
#endregion #endregion
private void addRecordButton_Click(object sender, EventArgs e) private void addRecordButton_Click(object sender, EventArgs e)
@@ -4377,9 +4238,14 @@ namespace AdvertsingProfitControl
ClearFormState(); ClearFormState();
addRecordButton.Text = @"Add Record"; addRecordButton.Text = @"Add Record";
var databaseTracker = new DatabaseTracker(); var db = new AdvertisingProfitControlModel();
var databaseReader = new DatabaseReader(); var recentDate = db.WeekEndingDates.OrderByDescending(x => x.EndingDate).FirstOrDefault(x => x.EndingDate.Year == _currentActiveDate.Year);
_currentActiveDate = databaseReader.RetrieveMostRecentDate(databaseTracker.DatabaseConnectionString, _currentActiveDate.Year).AddDays(7); if (recentDate == null)
{
errorLabel.Text = @"Bad things...";
return;
}
_currentActiveDate = recentDate.EndingDate.AddDays(7);
weekEndingCalendar.SelectionStart = _currentActiveDate; weekEndingCalendar.SelectionStart = _currentActiveDate;
Text = @"Add New Record (Current Date: " + _currentActiveDate.ToShortDateString() + @")"; Text = @"Add New Record (Current Date: " + _currentActiveDate.ToShortDateString() + @")";
informationLabel.Text = string.Empty; informationLabel.Text = string.Empty;
+18 -18
View File
@@ -214,24 +214,24 @@ namespace AdvertsingProfitControl
//removedCharacterOffset++; //removedCharacterOffset++;
} }
#if DEBUG //#if DEBUG
if (abbreviations.Count > 0) // if (abbreviations.Count > 0)
{ // {
LogConsole.WriteToLog(FrmLogConsole.Level.Debug, "Detected abbreviation(s) in input string \"" + adItemText + "\":"); // LogConsole.WriteToLog(FrmLogConsole.Level.Debug, "Detected abbreviation(s) in input string \"" + adItemText + "\":");
foreach (var abbreviation in abbreviations) // foreach (var abbreviation in abbreviations)
{ // {
LogConsole.WriteToLog(FrmLogConsole.Level.Debug, abbreviation); // LogConsole.WriteToLog(FrmLogConsole.Level.Debug, abbreviation);
} // }
} // }
else if (words.Count > 0) // else if (words.Count > 0)
{ // {
LogConsole.WriteToLog(FrmLogConsole.Level.Debug, "Detected words(s) in input string \"" + adItemText + "\":"); // LogConsole.WriteToLog(FrmLogConsole.Level.Debug, "Detected words(s) in input string \"" + adItemText + "\":");
foreach (var word in words) // foreach (var word in words)
{ // {
LogConsole.WriteToLog(FrmLogConsole.Level.Debug, word); // LogConsole.WriteToLog(FrmLogConsole.Level.Debug, word);
} // }
} // }
#endif //#endif
return cleanedInputString; return cleanedInputString;
} }
-238
View File
@@ -1,238 +0,0 @@
namespace AdvertsingProfitControl
{
partial class FrmManageAdItems
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmManageAdItems));
this.mainLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
this.adItemListView = new System.Windows.Forms.ListView();
this.columnOnePanel = new System.Windows.Forms.Panel();
this.addItemLabel = new System.Windows.Forms.Label();
this.adItemTextBox = new System.Windows.Forms.TextBox();
this.addItemButton = new System.Windows.Forms.Button();
this.notificationLabel = new System.Windows.Forms.Label();
this.deleteSelectedItem = new System.Windows.Forms.Button();
this.adItemFilterComboBox = new System.Windows.Forms.ComboBox();
this.letterSelectionLabel = new System.Windows.Forms.Label();
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.fileMainMenu = new System.Windows.Forms.ToolStripMenuItem();
this.closeFormFileMainMenu = new System.Windows.Forms.ToolStripMenuItem();
this.mainLayoutPanel.SuspendLayout();
this.columnOnePanel.SuspendLayout();
this.menuStrip1.SuspendLayout();
this.SuspendLayout();
//
// mainLayoutPanel
//
this.mainLayoutPanel.ColumnCount = 2;
this.mainLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 45F));
this.mainLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 55F));
this.mainLayoutPanel.Controls.Add(this.adItemListView, 1, 1);
this.mainLayoutPanel.Controls.Add(this.columnOnePanel, 0, 1);
this.mainLayoutPanel.Controls.Add(this.menuStrip1, 0, 0);
this.mainLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.mainLayoutPanel.Location = new System.Drawing.Point(0, 0);
this.mainLayoutPanel.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.mainLayoutPanel.Name = "mainLayoutPanel";
this.mainLayoutPanel.RowCount = 3;
this.mainLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
this.mainLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.mainLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.mainLayoutPanel.Size = new System.Drawing.Size(909, 822);
this.mainLayoutPanel.TabIndex = 0;
//
// adItemListView
//
this.adItemListView.Dock = System.Windows.Forms.DockStyle.Fill;
this.adItemListView.Location = new System.Drawing.Point(413, 39);
this.adItemListView.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.adItemListView.Name = "adItemListView";
this.mainLayoutPanel.SetRowSpan(this.adItemListView, 2);
this.adItemListView.Size = new System.Drawing.Size(492, 779);
this.adItemListView.Sorting = System.Windows.Forms.SortOrder.Ascending;
this.adItemListView.TabIndex = 5;
this.adItemListView.UseCompatibleStateImageBehavior = false;
this.adItemListView.View = System.Windows.Forms.View.Details;
//
// columnOnePanel
//
this.columnOnePanel.Controls.Add(this.addItemLabel);
this.columnOnePanel.Controls.Add(this.adItemTextBox);
this.columnOnePanel.Controls.Add(this.addItemButton);
this.columnOnePanel.Controls.Add(this.notificationLabel);
this.columnOnePanel.Controls.Add(this.deleteSelectedItem);
this.columnOnePanel.Controls.Add(this.adItemFilterComboBox);
this.columnOnePanel.Controls.Add(this.letterSelectionLabel);
this.columnOnePanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.columnOnePanel.Location = new System.Drawing.Point(4, 39);
this.columnOnePanel.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.columnOnePanel.Name = "columnOnePanel";
this.mainLayoutPanel.SetRowSpan(this.columnOnePanel, 2);
this.columnOnePanel.Size = new System.Drawing.Size(401, 779);
this.columnOnePanel.TabIndex = 1;
//
// addItemLabel
//
this.addItemLabel.AutoSize = true;
this.addItemLabel.Location = new System.Drawing.Point(35, 378);
this.addItemLabel.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0);
this.addItemLabel.Name = "addItemLabel";
this.addItemLabel.Size = new System.Drawing.Size(140, 25);
this.addItemLabel.TabIndex = 6;
this.addItemLabel.Text = "Add New Item:";
//
// adItemTextBox
//
this.adItemTextBox.Location = new System.Drawing.Point(213, 373);
this.adItemTextBox.Margin = new System.Windows.Forms.Padding(6, 6, 6, 6);
this.adItemTextBox.Name = "adItemTextBox";
this.adItemTextBox.Size = new System.Drawing.Size(180, 29);
this.adItemTextBox.TabIndex = 2;
//
// addItemButton
//
this.addItemButton.Enabled = false;
this.addItemButton.Location = new System.Drawing.Point(213, 421);
this.addItemButton.Margin = new System.Windows.Forms.Padding(6, 6, 6, 6);
this.addItemButton.Name = "addItemButton";
this.addItemButton.Size = new System.Drawing.Size(183, 59);
this.addItemButton.TabIndex = 3;
this.addItemButton.Text = "Add Item";
this.addItemButton.UseVisualStyleBackColor = true;
this.addItemButton.Click += new System.EventHandler(this.addItemButton_Click);
//
// notificationLabel
//
this.notificationLabel.AutoSize = true;
this.notificationLabel.Location = new System.Drawing.Point(17, 78);
this.notificationLabel.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0);
this.notificationLabel.Name = "notificationLabel";
this.notificationLabel.Size = new System.Drawing.Size(0, 25);
this.notificationLabel.TabIndex = 3;
//
// deleteSelectedItem
//
this.deleteSelectedItem.Enabled = false;
this.deleteSelectedItem.Location = new System.Drawing.Point(17, 702);
this.deleteSelectedItem.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.deleteSelectedItem.Name = "deleteSelectedItem";
this.deleteSelectedItem.Size = new System.Drawing.Size(220, 61);
this.deleteSelectedItem.TabIndex = 4;
this.deleteSelectedItem.Text = "Delete Selected Item";
this.deleteSelectedItem.UseVisualStyleBackColor = true;
this.deleteSelectedItem.Click += new System.EventHandler(this.deleteSelectedItem_Click);
//
// adItemFilterComboBox
//
this.adItemFilterComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.adItemFilterComboBox.FormattingEnabled = true;
this.adItemFilterComboBox.Location = new System.Drawing.Point(149, 4);
this.adItemFilterComboBox.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.adItemFilterComboBox.Name = "adItemFilterComboBox";
this.adItemFilterComboBox.Size = new System.Drawing.Size(246, 32);
this.adItemFilterComboBox.TabIndex = 1;
//
// letterSelectionLabel
//
this.letterSelectionLabel.AutoSize = true;
this.letterSelectionLabel.Location = new System.Drawing.Point(11, 4);
this.letterSelectionLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.letterSelectionLabel.Name = "letterSelectionLabel";
this.letterSelectionLabel.Size = new System.Drawing.Size(129, 25);
this.letterSelectionLabel.TabIndex = 0;
this.letterSelectionLabel.Text = "Select a filter:";
//
// menuStrip1
//
this.mainLayoutPanel.SetColumnSpan(this.menuStrip1, 2);
this.menuStrip1.ImageScalingSize = new System.Drawing.Size(24, 24);
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.fileMainMenu});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Padding = new System.Windows.Forms.Padding(7, 2, 0, 2);
this.menuStrip1.Size = new System.Drawing.Size(909, 35);
this.menuStrip1.TabIndex = 2;
this.menuStrip1.Text = "menuStrip1";
//
// fileMainMenu
//
this.fileMainMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.closeFormFileMainMenu});
this.fileMainMenu.Name = "fileMainMenu";
this.fileMainMenu.Size = new System.Drawing.Size(56, 31);
this.fileMainMenu.Text = "&File";
//
// closeFormFileMainMenu
//
this.closeFormFileMainMenu.Name = "closeFormFileMainMenu";
this.closeFormFileMainMenu.Size = new System.Drawing.Size(208, 34);
this.closeFormFileMainMenu.Text = "&Close Form";
this.closeFormFileMainMenu.Click += new System.EventHandler(this.closeFormFileMainMenu_Click);
//
// FrmManageAdItems
//
this.AutoScaleDimensions = new System.Drawing.SizeF(168F, 168F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.ClientSize = new System.Drawing.Size(909, 822);
this.Controls.Add(this.mainLayoutPanel);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MainMenuStrip = this.menuStrip1;
this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "FrmManageAdItems";
this.Text = "Manage Ad Items";
this.Load += new System.EventHandler(this.frmManageAdItems_Load);
this.mainLayoutPanel.ResumeLayout(false);
this.mainLayoutPanel.PerformLayout();
this.columnOnePanel.ResumeLayout(false);
this.columnOnePanel.PerformLayout();
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.TableLayoutPanel mainLayoutPanel;
private System.Windows.Forms.ListView adItemListView;
private System.Windows.Forms.Panel columnOnePanel;
private System.Windows.Forms.ComboBox adItemFilterComboBox;
private System.Windows.Forms.Label letterSelectionLabel;
private System.Windows.Forms.Button deleteSelectedItem;
private System.Windows.Forms.MenuStrip menuStrip1;
private System.Windows.Forms.ToolStripMenuItem fileMainMenu;
private System.Windows.Forms.ToolStripMenuItem closeFormFileMainMenu;
private System.Windows.Forms.Label notificationLabel;
private System.Windows.Forms.Label addItemLabel;
private System.Windows.Forms.TextBox adItemTextBox;
private System.Windows.Forms.Button addItemButton;
}
}