Created forms to allow the management of ad items, suppliers and ad special keywords. Updated the database migration tool to include the ad special table. Cleaned up the main form's code and did a slight touch up of the interface.

This commit is contained in:
2017-04-11 02:26:04 -05:00
parent 09508aa16c
commit 62a2c0f80e
15 changed files with 1443 additions and 303 deletions
Binary file not shown.
@@ -128,6 +128,18 @@
<Compile Include="DebugDatabaseConverter.Designer.cs"> <Compile Include="DebugDatabaseConverter.Designer.cs">
<DependentUpon>DebugDatabaseConverter.cs</DependentUpon> <DependentUpon>DebugDatabaseConverter.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="FrmManageAdItems.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmManageAdItems.Designer.cs">
<DependentUpon>FrmManageAdItems.cs</DependentUpon>
</Compile>
<Compile Include="FrmManageSuppliers.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmManageSuppliers.Designer.cs">
<DependentUpon>FrmManageSuppliers.cs</DependentUpon>
</Compile>
<Compile Include="FrmRegisterAdSpecial.cs"> <Compile Include="FrmRegisterAdSpecial.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
@@ -188,6 +200,12 @@
<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="FrmManageSuppliers.resx">
<DependentUpon>FrmManageSuppliers.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmRegisterAdSpecial.resx"> <EmbeddedResource Include="FrmRegisterAdSpecial.resx">
<DependentUpon>FrmRegisterAdSpecial.cs</DependentUpon> <DependentUpon>FrmRegisterAdSpecial.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
+1 -1
View File
@@ -83,7 +83,7 @@
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F); this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(849, 827); this.ClientSize = new System.Drawing.Size(701, 592);
this.Controls.Add(this.convertButton); this.Controls.Add(this.convertButton);
this.Controls.Add(this.moveOverButton); this.Controls.Add(this.moveOverButton);
this.Controls.Add(this.datesToConvertListBox); this.Controls.Add(this.datesToConvertListBox);
@@ -1,15 +1,9 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.Data; using System.Data;
using System.Data.OleDb; using System.Data.OleDb;
using System.Drawing;
using System.Globalization;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Transactions; using System.Transactions;
using System.Windows.Forms; using System.Windows.Forms;
@@ -113,6 +107,18 @@ namespace AdvertsingProfitControl
db.Suppliers.Add(temp); db.Suppliers.Add(temp);
db.SaveChanges(); db.SaveChanges();
} }
var adSpecials = GetAdSpecials();
foreach (var adSpecial in adSpecials)
{
var db = new AdvertisingProfitControlModel();
if(db.AdSpecials.Any(x => x.Name == adSpecial)) continue;
var tempAd = new AdSpecial
{
Name = adSpecial
};
db.AdSpecials.Add(tempAd);
db.SaveChanges();
}
foreach (var date in datesToConvertListBox.Items) foreach (var date in datesToConvertListBox.Items)
{ {
var oldDateId = GetDateIdByDateString(date.ToString()); var oldDateId = GetDateIdByDateString(date.ToString());
@@ -145,30 +151,7 @@ namespace AdvertsingProfitControl
{ {
db.WeekEndingDates.Add(date); db.WeekEndingDates.Add(date);
} }
//oleDbConnection.Open(); var adSpecialId = -1;
//oleDbTransaction = oleDbConnection.BeginTransaction();
//oleDbCommand.Transaction = oleDbTransaction;
////Get the date ID for the date string
//oleDbCommand.CommandText = "INSERT INTO WeekEnding (EndOfWeekDate) VALUES (?)";
//oleDbCommand.Parameters.AddWithValue("DateString", dateString);
//var rowsEffected = oleDbCommand.ExecuteNonQuery();
//oleDbCommand.Parameters.Clear();
//if (rowsEffected == 0)
//{
// oleDbTransaction.Rollback();
// MessageBox.Show(@"Failed on date");
// return;
//}
//oleDbCommand.CommandText = "SELECT WeekEnding.ID FROM WeekEnding WHERE EndOfWeekDate = ?";
//oleDbCommand.Parameters.AddWithValue("Date", dateString);
//var reader = oleDbCommand.ExecuteReader();
//oleDbCommand.Parameters.Clear();
//var dateId = 0;
//while (reader != null && reader.Read())
//{
// dateId = int.Parse(reader[0].ToString());
//}
//reader?.Close();
for (var rowIndex = 0; rowIndex < projections.Rows.Count; rowIndex++) for (var rowIndex = 0; rowIndex < projections.Rows.Count; rowIndex++)
{ {
var projectionedSale = new Projection(); var projectionedSale = new Projection();
@@ -197,34 +180,29 @@ namespace AdvertsingProfitControl
projectionedSale.TotalProfitReturn = decimal.Parse(projections.Rows[rowIndex][6].ToString()); projectionedSale.TotalProfitReturn = decimal.Parse(projections.Rows[rowIndex][6].ToString());
projectionedSale.FkAdItemId = db.AdItems.First(x => x.Id == adItemId).Id; projectionedSale.FkAdItemId = db.AdItems.First(x => x.Id == adItemId).Id;
projectionedSale.RowAttribute = int.Parse(projections.Rows[rowIndex][7].ToString()); projectionedSale.RowAttribute = int.Parse(projections.Rows[rowIndex][7].ToString());
projectionedSale.FkAdSpecialId = (int) projections.Rows[rowIndex][8];
if ((int) projections.Rows[rowIndex][8] == 0 && adSpecialId == -1)
{
projectionedSale.FkAdSpecialId = null;
}
else
{
if ((int) (projections.Rows[rowIndex][8]) == 0)
{
projectionedSale.FkAdSpecialId = adSpecialId;
}
else
{
adSpecialId = (int) projections.Rows[rowIndex][8];
projectionedSale.FkAdSpecialId = (int) projections.Rows[rowIndex][8];
}
}
projectionedSale.RowPosition = rowIndex + 1; projectionedSale.RowPosition = rowIndex + 1;
projectionedSale.FkDateId = date.Id; projectionedSale.FkDateId = date.Id;
db.Projections.Add(projectionedSale); db.Projections.Add(projectionedSale);
//Get the ID number of the ad item.
// //Get the ID number of the ad item.
// var adItemId = int.Parse(RetrieveAdItemId(projections.Rows[rowIndex][0].ToString()));
// //Get the group name of the ad special its in.
// adspecialId = GetAdSpecialId(int.Parse(projections.Rows[rowIndex][8].ToString()));
// oleDbCommand.CommandText =
// "INSERT INTO Projections (Sold, SalePrice, TotalSales, Cost, ProfitReturn, TotalProfitReturn, FK_AdItemID, RowAttribute, FK_AdSpecialGroupName, RowPosition, FK_DateID) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
// //SELECT AdItem.AdItem, APC.ProjectionSold, APC.ProjectionSalePrice, APC.ProjectionTotalSales, APC.ProjectionCost, APC.ProjectionProfitReturn, APC.ProjectionTotalProfitReturn, APC.RowAttribute, APC.FK_GroupID FROM (AdItem INNER JOIN APC ON AdItem.ID = APC.FK_AdItemID) WHERE FK_DateID = ? ORDER BY RowPosition ASC
// oleDbCommand.Parameters.AddWithValue("Sold", projections.Rows[rowIndex][1]);
// oleDbCommand.Parameters.AddWithValue("SalesPrice", projections.Rows[rowIndex][2]);
// oleDbCommand.Parameters.AddWithValue("TotalSales", projections.Rows[rowIndex][3]);
// oleDbCommand.Parameters.AddWithValue("Cost", projections.Rows[rowIndex][4]);
// oleDbCommand.Parameters.AddWithValue("ProfitReturn", projections.Rows[rowIndex][5]);
// oleDbCommand.Parameters.AddWithValue("TotalProfitReturn", projections.Rows[rowIndex][6]);
// oleDbCommand.Parameters.AddWithValue("adItemID", adItemId);
// oleDbCommand.Parameters.AddWithValue("RowAttribute",
// int.Parse(projections.Rows[rowIndex][7].ToString()));
// oleDbCommand.Parameters.AddWithValue("adSpecialID", adspecialId);
// oleDbCommand.Parameters.AddWithValue("RowPosition", (rowIndex + 1));
// oleDbCommand.Parameters.AddWithValue("dateID", dateId);
// oleDbCommand.ExecuteNonQuery();
// oleDbCommand.Parameters.Clear();
} }
//inventory //inventory
adSpecialId = -1;
for (var i = 0; i < inventory.Rows.Count; i++) for (var i = 0; i < inventory.Rows.Count; i++)
{ {
var inventoryObject = new Inventory(); var inventoryObject = new Inventory();
@@ -243,40 +221,39 @@ namespace AdvertsingProfitControl
inventoryObject.EndingInventory = inventory.Rows[i][4].ToString(); inventoryObject.EndingInventory = inventory.Rows[i][4].ToString();
inventoryObject.FkAdItemId = adItemId; inventoryObject.FkAdItemId = adItemId;
inventoryObject.RowAttribute = int.Parse(inventory.Rows[i][5].ToString()); inventoryObject.RowAttribute = int.Parse(inventory.Rows[i][5].ToString());
inventoryObject.FkAdSpecialId = int.Parse(inventory.Rows[i][6].ToString()); if ((int)inventory.Rows[i][6] == 0 && adSpecialId == -1)
{
inventoryObject.FkAdSpecialId = null;
}
else
{
if ((int)(inventory.Rows[i][6]) == 0)
{
inventoryObject.FkAdSpecialId = adSpecialId;
}
else
{
adSpecialId = (int)inventory.Rows[i][6];
inventoryObject.FkAdSpecialId = (int)inventory.Rows[i][6];
}
}
inventoryObject.RowPosition = i + 1; inventoryObject.RowPosition = i + 1;
inventoryObject.FkDateId = date.Id; inventoryObject.FkDateId = date.Id;
db.Inventories.Add(inventoryObject); db.Inventories.Add(inventoryObject);
// var adItemId = int.Parse(RetrieveAdItemId(inventory.Rows[i][0].ToString()));
// adspecialId = GetAdSpecialId(int.Parse(inventory.Rows[i][6].ToString()));
// oleDbCommand.CommandText =
// "INSERT INTO Inventory (BeginningInventory, Received, TotalInventory, EndingInventory, FK_AdItemID, RowAttribute, FK_AdSpecialGroupName, RowPosition, FK_DateID) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
// //"SELECT AdItem.AdItem, APC.BeginingInventory, APC.Received, APC.TotalInventory, APC.EndingInventory, APC.RowAttribute, APC.FK_GroupID FROM (AdItem INNER JOIN APC ON AdItem.ID = APC.FK_AdItemID) WHERE FK_DateID = ? ORDER BY RowPosition ASC"
// oleDbCommand.Parameters.AddWithValue("BeginningInventory", inventory.Rows[i][1].ToString());
// oleDbCommand.Parameters.AddWithValue("Received", inventory.Rows[i][2].ToString());
// oleDbCommand.Parameters.AddWithValue("TotalInventory", inventory.Rows[i][3].ToString());
// oleDbCommand.Parameters.AddWithValue("EndingInventory", inventory.Rows[i][4].ToString());
// oleDbCommand.Parameters.AddWithValue("AdItemID", adItemId);
// oleDbCommand.Parameters.AddWithValue("RowAttribute", int.Parse(inventory.Rows[i][5].ToString()));
// oleDbCommand.Parameters.AddWithValue("FK_AdSpecialGroup", adspecialId);
// oleDbCommand.Parameters.AddWithValue("RowPosition", (i + 1));
// oleDbCommand.Parameters.AddWithValue("DateID", dateId);
// oleDbCommand.ExecuteNonQuery();
// oleDbCommand.Parameters.Clear();
} }
//actual sales //actual sales
adSpecialId = -1;
for (var rowIndex = 0; rowIndex < actualSales.Rows.Count; rowIndex++) for (var rowIndex = 0; rowIndex < actualSales.Rows.Count; rowIndex++)
{ {
var actualSale = new ActualSale(); var actualSale = new ActualSale();
//Get the ID number of the ad item. //Get the ID number of the ad item.
AdItem adItem;
var adItemId = 0; var adItemId = 0;
var spam = TextFormat.FormatAdItemText(actualSales.Rows[rowIndex][0].ToString()); var spam = TextFormat.FormatAdItemText(actualSales.Rows[rowIndex][0].ToString());
if (db.AdItems.Any(x => x.Name == spam)) if (db.AdItems.Any(x => x.Name == spam))
{ {
//Exists //Exists
adItem = db.AdItems.First(x => x.Name == spam); var adItem = db.AdItems.First(x => x.Name == spam);
adItemId = adItem.Id; adItemId = adItem.Id;
} }
//adspecialId = GetAdSpecialId(int.Parse(actualSales.Rows[rowIndex][8].ToString())); //adspecialId = GetAdSpecialId(int.Parse(actualSales.Rows[rowIndex][8].ToString()));
@@ -293,7 +270,22 @@ namespace AdvertsingProfitControl
actualSale.TotalProfitReturn = decimal.Parse(actualSales.Rows[rowIndex][6].ToString()); actualSale.TotalProfitReturn = decimal.Parse(actualSales.Rows[rowIndex][6].ToString());
actualSale.FkAdItemId = adItemId; actualSale.FkAdItemId = adItemId;
actualSale.RowAttribute = int.Parse(actualSales.Rows[rowIndex][7].ToString()); actualSale.RowAttribute = int.Parse(actualSales.Rows[rowIndex][7].ToString());
actualSale.FkAdSpecialId = (int) actualSales.Rows[rowIndex][8]; if ((int)actualSales.Rows[rowIndex][8] == 0 && adSpecialId == -1)
{
actualSale.FkAdSpecialId = null;
}
else
{
if ((int)(projections.Rows[rowIndex][8]) == 0)
{
actualSale.FkAdSpecialId = adSpecialId;
}
else
{
adSpecialId = (int)actualSales.Rows[rowIndex][8];
actualSale.FkAdSpecialId = (int)actualSales.Rows[rowIndex][8];
}
}
actualSale.RowPosition = rowIndex + 1; actualSale.RowPosition = rowIndex + 1;
actualSale.FkDateId = date.Id; //db.WeekEndingDates.First(x => x.Id == dateId); actualSale.FkDateId = date.Id; //db.WeekEndingDates.First(x => x.Id == dateId);
//oleDbCommand.Parameters.AddWithValue("Sold", actualSales.Rows[rowIndex][1]); //oleDbCommand.Parameters.AddWithValue("Sold", actualSales.Rows[rowIndex][1]);
@@ -472,6 +464,30 @@ namespace AdvertsingProfitControl
return adItems; return adItems;
} }
public List<string> GetAdSpecials()
{
var adItems = new List<string>();
var oleDbCommand = new OleDbCommand
{
CommandText = "SELECT AdSpecialName.AdSpecialName FROM AdSpecialName"
};
var connection = new OleDbConnection(_connectionString);
oleDbCommand.Connection = connection;
using (connection)
{
using (oleDbCommand)
{
connection.Open();
var reader = oleDbCommand.ExecuteReader();
while (reader != null && reader.Read())
{
adItems.Add(reader[0].ToString());
}
}
}
return adItems;
}
public int GetSupplierId(string supplierName) public int GetSupplierId(string supplierName)
{ {
var supplier = new Supplier(); var supplier = new Supplier();
+63 -34
View File
@@ -36,10 +36,14 @@
this.recordsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.recordsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.addRecordsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.addRecordsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.modifyRecordMainMenu = new System.Windows.Forms.ToolStripMenuItem(); this.modifyRecordMainMenu = new System.Windows.Forms.ToolStripMenuItem();
this.reportsMainMenu = new System.Windows.Forms.ToolStripMenuItem();
this.toolsMainMenu = new System.Windows.Forms.ToolStripMenuItem(); this.toolsMainMenu = new System.Windows.Forms.ToolStripMenuItem();
this.adSpecialKeyWordsToolsMainMenu = new System.Windows.Forms.ToolStripMenuItem(); this.clearRecordToolsMainMenu = new System.Windows.Forms.ToolStripMenuItem();
this.clearCurrentRecordSelectedDateToolsMainMenu = new System.Windows.Forms.ToolStripMenuItem();
this.selectRangeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.manageItemsToolsMainMenu = new System.Windows.Forms.ToolStripMenuItem(); this.manageItemsToolsMainMenu = new System.Windows.Forms.ToolStripMenuItem();
this.clearSelectedDateToolsMainMenu = new System.Windows.Forms.ToolStripMenuItem(); this.manageSuppliersToolsMainMenu = new System.Windows.Forms.ToolStripMenuItem();
this.adSpecialKeyWordsToolsMainMenu = new System.Windows.Forms.ToolStripMenuItem();
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();
@@ -104,7 +108,6 @@
this.grossProfitEstimatedWeeklyDeptmartmentExpenseLabel = new System.Windows.Forms.Label(); this.grossProfitEstimatedWeeklyDeptmartmentExpenseLabel = new System.Windows.Forms.Label();
this.perfectGrossProfitLabel = new System.Windows.Forms.Label(); this.perfectGrossProfitLabel = new System.Windows.Forms.Label();
this.grossProfitDollarGrossProfitLabel = new System.Windows.Forms.Label(); this.grossProfitDollarGrossProfitLabel = new System.Windows.Forms.Label();
this.reportsMainMenu = new System.Windows.Forms.ToolStripMenuItem();
this.mainMenu.SuspendLayout(); this.mainMenu.SuspendLayout();
this.mainTableLayoutPanel.SuspendLayout(); this.mainTableLayoutPanel.SuspendLayout();
this.commentMainTableLayoutPanel.SuspendLayout(); this.commentMainTableLayoutPanel.SuspendLayout();
@@ -186,46 +189,76 @@
this.addRecordsToolStripMenuItem.Name = "addRecordsToolStripMenuItem"; this.addRecordsToolStripMenuItem.Name = "addRecordsToolStripMenuItem";
this.addRecordsToolStripMenuItem.Size = new System.Drawing.Size(323, 34); this.addRecordsToolStripMenuItem.Size = new System.Drawing.Size(323, 34);
this.addRecordsToolStripMenuItem.Text = "&Add New Record"; this.addRecordsToolStripMenuItem.Text = "&Add New Record";
this.addRecordsToolStripMenuItem.Click += new System.EventHandler(this.addRecordToolStripMenuItem_Click); this.addRecordsToolStripMenuItem.Click += new System.EventHandler(this.DisplayNewRecordForm);
// //
// modifyRecordMainMenu // modifyRecordMainMenu
// //
this.modifyRecordMainMenu.Name = "modifyRecordMainMenu"; this.modifyRecordMainMenu.Name = "modifyRecordMainMenu";
this.modifyRecordMainMenu.Size = new System.Drawing.Size(323, 34); this.modifyRecordMainMenu.Size = new System.Drawing.Size(323, 34);
this.modifyRecordMainMenu.Text = "&Modify Existing Record "; this.modifyRecordMainMenu.Text = "&Modify Existing Record ";
this.modifyRecordMainMenu.Click += new System.EventHandler(this.modifyRecordMainMenu_Click); this.modifyRecordMainMenu.Click += new System.EventHandler(this.DisplayModifyRecordForm);
//
// reportsMainMenu
//
this.reportsMainMenu.Name = "reportsMainMenu";
this.reportsMainMenu.Size = new System.Drawing.Size(95, 34);
this.reportsMainMenu.Text = "R&eports";
this.reportsMainMenu.Visible = false;
// //
// toolsMainMenu // toolsMainMenu
// //
this.toolsMainMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.toolsMainMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.clearSelectedDateToolsMainMenu, this.clearRecordToolsMainMenu,
this.manageItemsToolsMainMenu, this.manageItemsToolsMainMenu,
this.manageSuppliersToolsMainMenu,
this.adSpecialKeyWordsToolsMainMenu}); this.adSpecialKeyWordsToolsMainMenu});
this.toolsMainMenu.Name = "toolsMainMenu"; this.toolsMainMenu.Name = "toolsMainMenu";
this.toolsMainMenu.Size = new System.Drawing.Size(72, 34); this.toolsMainMenu.Size = new System.Drawing.Size(72, 34);
this.toolsMainMenu.Text = "&Tools"; this.toolsMainMenu.Text = "&Tools";
// //
// adSpecialKeyWordsToolsMainMenu // clearRecordToolsMainMenu
// //
this.adSpecialKeyWordsToolsMainMenu.Name = "adSpecialKeyWordsToolsMainMenu"; this.clearRecordToolsMainMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.adSpecialKeyWordsToolsMainMenu.Size = new System.Drawing.Size(286, 34); this.clearCurrentRecordSelectedDateToolsMainMenu,
this.adSpecialKeyWordsToolsMainMenu.Text = "&Register Ad Special"; this.selectRangeToolStripMenuItem});
this.adSpecialKeyWordsToolsMainMenu.Click += new System.EventHandler(this.adSpecialKeyWordsToolsMainMenu_Click); this.clearRecordToolsMainMenu.Name = "clearRecordToolsMainMenu";
this.clearRecordToolsMainMenu.Size = new System.Drawing.Size(282, 34);
this.clearRecordToolsMainMenu.Text = "&Clear Record(s)";
//
// clearCurrentRecordSelectedDateToolsMainMenu
//
this.clearCurrentRecordSelectedDateToolsMainMenu.Name = "clearCurrentRecordSelectedDateToolsMainMenu";
this.clearCurrentRecordSelectedDateToolsMainMenu.Size = new System.Drawing.Size(244, 34);
this.clearCurrentRecordSelectedDateToolsMainMenu.Text = "C&urrent Record";
this.clearCurrentRecordSelectedDateToolsMainMenu.Click += new System.EventHandler(this.ClearCurrentRecord);
//
// selectRangeToolStripMenuItem
//
this.selectRangeToolStripMenuItem.Name = "selectRangeToolStripMenuItem";
this.selectRangeToolStripMenuItem.Size = new System.Drawing.Size(244, 34);
this.selectRangeToolStripMenuItem.Text = "Select Ran&ge...";
this.selectRangeToolStripMenuItem.Click += new System.EventHandler(this.DisplayRecordDeletionRangeForm);
// //
// manageItemsToolsMainMenu // manageItemsToolsMainMenu
// //
this.manageItemsToolsMainMenu.Name = "manageItemsToolsMainMenu"; this.manageItemsToolsMainMenu.Name = "manageItemsToolsMainMenu";
this.manageItemsToolsMainMenu.Size = new System.Drawing.Size(286, 34); this.manageItemsToolsMainMenu.Size = new System.Drawing.Size(282, 34);
this.manageItemsToolsMainMenu.Text = "&Manage Ad Items"; this.manageItemsToolsMainMenu.Text = "Manage Ad &Items";
this.manageItemsToolsMainMenu.Visible = false; this.manageItemsToolsMainMenu.Click += new System.EventHandler(this.DisplayAdItemManager);
this.manageItemsToolsMainMenu.Click += new System.EventHandler(this.manageItemsToolsMainMenu_Click);
// //
// clearSelectedDateToolsMainMenu // manageSuppliersToolsMainMenu
// //
this.clearSelectedDateToolsMainMenu.Name = "clearSelectedDateToolsMainMenu"; this.manageSuppliersToolsMainMenu.Name = "manageSuppliersToolsMainMenu";
this.clearSelectedDateToolsMainMenu.Size = new System.Drawing.Size(286, 34); this.manageSuppliersToolsMainMenu.Size = new System.Drawing.Size(286, 34);
this.clearSelectedDateToolsMainMenu.Text = "&Clear Selected Date"; this.manageSuppliersToolsMainMenu.Text = "Manage &Suppliers";
this.clearSelectedDateToolsMainMenu.Click += new System.EventHandler(this.clearSelectedDateToolsMainMenu_Click); this.manageSuppliersToolsMainMenu.Click += new System.EventHandler(this.manageSuppliersToolsMainMenu_Click);
//
// adSpecialKeyWordsToolsMainMenu
//
this.adSpecialKeyWordsToolsMainMenu.Name = "adSpecialKeyWordsToolsMainMenu";
this.adSpecialKeyWordsToolsMainMenu.Size = new System.Drawing.Size(282, 34);
this.adSpecialKeyWordsToolsMainMenu.Text = "R&egister Ad Special";
this.adSpecialKeyWordsToolsMainMenu.Click += new System.EventHandler(this.DisplayRegisterAdSpecial);
// //
// helpMainMenu // helpMainMenu
// //
@@ -240,15 +273,15 @@
// //
this.showHideConsoleHelpMainMenu.Name = "showHideConsoleHelpMainMenu"; this.showHideConsoleHelpMainMenu.Name = "showHideConsoleHelpMainMenu";
this.showHideConsoleHelpMainMenu.Size = new System.Drawing.Size(304, 34); this.showHideConsoleHelpMainMenu.Size = new System.Drawing.Size(304, 34);
this.showHideConsoleHelpMainMenu.Text = "&Show/Hide Console"; this.showHideConsoleHelpMainMenu.Text = "Sh&ow/Hide Console";
this.showHideConsoleHelpMainMenu.Click += new System.EventHandler(this.showHideConsoleHelpMainMenu_Click); this.showHideConsoleHelpMainMenu.Click += new System.EventHandler(this.ShowHideLogConsole);
// //
// dbVersionHelpMainMenu // dbVersionHelpMainMenu
// //
this.dbVersionHelpMainMenu.Name = "dbVersionHelpMainMenu"; this.dbVersionHelpMainMenu.Name = "dbVersionHelpMainMenu";
this.dbVersionHelpMainMenu.Size = new System.Drawing.Size(304, 34); this.dbVersionHelpMainMenu.Size = new System.Drawing.Size(304, 34);
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.DisplayDatabaseVersionNumber);
// //
// debugMainMenu // debugMainMenu
// //
@@ -266,21 +299,21 @@
this.rawViewDebugMainMenu.Name = "rawViewDebugMainMenu"; this.rawViewDebugMainMenu.Name = "rawViewDebugMainMenu";
this.rawViewDebugMainMenu.Size = new System.Drawing.Size(270, 34); this.rawViewDebugMainMenu.Size = new System.Drawing.Size(270, 34);
this.rawViewDebugMainMenu.Text = "Raw View"; this.rawViewDebugMainMenu.Text = "Raw View";
this.rawViewDebugMainMenu.Click += new System.EventHandler(this.rawViewDebugMainMenu_Click); this.rawViewDebugMainMenu.Click += new System.EventHandler(this.DisplayRawDatabaseView);
// //
// migrateDatabaseDebugMainMenu // migrateDatabaseDebugMainMenu
// //
this.migrateDatabaseDebugMainMenu.Name = "migrateDatabaseDebugMainMenu"; this.migrateDatabaseDebugMainMenu.Name = "migrateDatabaseDebugMainMenu";
this.migrateDatabaseDebugMainMenu.Size = new System.Drawing.Size(270, 34); this.migrateDatabaseDebugMainMenu.Size = new System.Drawing.Size(270, 34);
this.migrateDatabaseDebugMainMenu.Text = "Migrate Database"; this.migrateDatabaseDebugMainMenu.Text = "Migrate Database";
this.migrateDatabaseDebugMainMenu.Click += new System.EventHandler(this.debugToolStripMenuItem1_Click); this.migrateDatabaseDebugMainMenu.Click += new System.EventHandler(this.DisplayDebugTool);
// //
// addRecordToolStripMenuItem // addRecordToolStripMenuItem
// //
this.addRecordToolStripMenuItem.Name = "addRecordToolStripMenuItem"; this.addRecordToolStripMenuItem.Name = "addRecordToolStripMenuItem";
this.addRecordToolStripMenuItem.Size = new System.Drawing.Size(270, 34); this.addRecordToolStripMenuItem.Size = new System.Drawing.Size(270, 34);
this.addRecordToolStripMenuItem.Text = "Add Record"; this.addRecordToolStripMenuItem.Text = "Add Record";
this.addRecordToolStripMenuItem.Click += new System.EventHandler(this.addRecordToolStripMenuItem_Click_1); this.addRecordToolStripMenuItem.Click += new System.EventHandler(this.DisplayLegacyAddRecord);
// //
// mainTableLayoutPanel // mainTableLayoutPanel
// //
@@ -946,13 +979,6 @@
this.grossProfitDollarGrossProfitLabel.TabIndex = 2; this.grossProfitDollarGrossProfitLabel.TabIndex = 2;
this.grossProfitDollarGrossProfitLabel.Text = "Dollar Gross Profit: "; this.grossProfitDollarGrossProfitLabel.Text = "Dollar Gross Profit: ";
// //
// reportsMainMenu
//
this.reportsMainMenu.Name = "reportsMainMenu";
this.reportsMainMenu.Size = new System.Drawing.Size(95, 34);
this.reportsMainMenu.Text = "R&eports";
this.reportsMainMenu.Visible = false;
//
// FrmMain // FrmMain
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(168F, 168F); this.AutoScaleDimensions = new System.Drawing.SizeF(168F, 168F);
@@ -1073,10 +1099,13 @@
private System.Windows.Forms.DataGridView invoicesDataGridView; private System.Windows.Forms.DataGridView invoicesDataGridView;
private System.Windows.Forms.ToolStripMenuItem debugMainMenu; private System.Windows.Forms.ToolStripMenuItem debugMainMenu;
private System.Windows.Forms.ToolStripMenuItem migrateDatabaseDebugMainMenu; private System.Windows.Forms.ToolStripMenuItem migrateDatabaseDebugMainMenu;
private System.Windows.Forms.ToolStripMenuItem clearSelectedDateToolsMainMenu; private System.Windows.Forms.ToolStripMenuItem clearRecordToolsMainMenu;
private System.Windows.Forms.ToolStripMenuItem addRecordToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem addRecordToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem rawViewDebugMainMenu; private System.Windows.Forms.ToolStripMenuItem rawViewDebugMainMenu;
private System.Windows.Forms.ToolStripMenuItem reportsMainMenu; private System.Windows.Forms.ToolStripMenuItem reportsMainMenu;
private System.Windows.Forms.ToolStripMenuItem manageSuppliersToolsMainMenu;
private System.Windows.Forms.ToolStripMenuItem clearCurrentRecordSelectedDateToolsMainMenu;
private System.Windows.Forms.ToolStripMenuItem selectRangeToolStripMenuItem;
} }
} }
+185 -157
View File
@@ -4,7 +4,6 @@ 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.Transactions; using System.Transactions;
using System.Windows.Forms; using System.Windows.Forms;
@@ -41,12 +40,10 @@ namespace AdvertsingProfitControl
LoadDate(recentDate.EndingDate); LoadDate(recentDate.EndingDate);
} }
monthCalendar.DateChanged += ValidateDateChanged; monthCalendar.DateChanged += ValidateDateChanged;
//projectionsDataGridView.KeyDown += FrmMain_KeyDown;
//var margin = new Margins(50, 50, 0, 0);
//_printDoc.DefaultPageSettings.Margins = margin;
} }
#region Calculate Analysis Methods
private void CalculateProfitAnalysis(decimal shrink = 0.30m) private void CalculateProfitAnalysis(decimal shrink = 0.30m)
{ {
if (actualSalesDataGridView.Rows.Count == 0) if (actualSalesDataGridView.Rows.Count == 0)
@@ -128,7 +125,11 @@ namespace AdvertsingProfitControl
perfectGrossProfitLabel.Text = @"Percent Gross Profit: " + grossProfitPercent.ToString("P"); perfectGrossProfitLabel.Text = @"Percent Gross Profit: " + grossProfitPercent.ToString("P");
} }
private void addRecordToolStripMenuItem_Click(object sender, EventArgs e) #endregion
#region Main Menu Click Handlers
private void DisplayNewRecordForm(object sender, EventArgs e)
{ {
var db = new AdvertisingProfitControlModel(); var db = new AdvertisingProfitControlModel();
var form = new NewModifyRecord(); var form = new NewModifyRecord();
@@ -142,7 +143,119 @@ namespace AdvertsingProfitControl
LoadDate(date.EndingDate); LoadDate(date.EndingDate);
} }
private void showHideConsoleHelpMainMenu_Click(object sender, EventArgs e) private void DisplayModifyRecordForm(object sender, EventArgs e)
{
var form = new NewModifyRecord(_currentActiveDate);
form.ShowDialog();
RefreshDateListing();
//On return reload the date that was just modified by the modify record form.
LoadDate(_currentActiveDate);
}
private void ClearCurrentRecord(object sender, EventArgs e)
{
var result = MessageBox.Show(@"Are you sure you want to delete all records for the date " + _currentActiveDate.ToShortDateString() + @"?", @"Clear Date", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.No)
{
return;
}
var db = new AdvertisingProfitControlModel();
var dateRecord = db.WeekEndingDates.Single(x => x.EndingDate == _currentActiveDate);
var projections = db.Projections.Where(x => x.WeekEndingDate.EndingDate == dateRecord.EndingDate);
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())
{
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();
ClearForm();
}
catch (DbUpdateException ex)
{
MessageBox.Show(@"Failed to clear selected date.", @"Error");
_console.WriteToLog(FrmLogConsole.Level.Error, ex.Message);
}
}
RefreshDateListing();
var mostRecentDate = db.WeekEndingDates.OrderByDescending(x => x.EndingDate).FirstOrDefault();
if (mostRecentDate != null)
{
LoadDate(mostRecentDate.EndingDate);
}
}
private void DisplayRecordDeletionRangeForm(object sender, EventArgs e)
{
//TODO: Create a form to allow the user to delete a range of dates.
}
private void DisplayAdItemManager(object sender, EventArgs e)
{
var adItemManager = new FrmManageAdItems();
adItemManager.ShowDialog();
}
private void manageSuppliersToolsMainMenu_Click(object sender, EventArgs e)
{
var form = new FrmManageSuppliers();
form.ShowDialog();
}
private void DisplayRegisterAdSpecial(object sender, EventArgs e)
{
var form = new FrmRegisterAdSpecial();
form.ShowDialog();
}
private void ShowHideLogConsole(object sender, EventArgs e)
{ {
if (_console.IsVisable) if (_console.IsVisable)
{ {
@@ -154,23 +267,7 @@ namespace AdvertsingProfitControl
} }
} }
private void modifyRecordMainMenu_Click(object sender, EventArgs e) private void DisplayDatabaseVersionNumber(object sender, EventArgs e)
{
var form = new NewModifyRecord(_currentActiveDate);
form.ShowDialog();
RefreshDateListing();
//On return reload the date that was just modified by the modify record form.
LoadDate(_currentActiveDate);
}
private void manageItemsToolsMainMenu_Click(object sender, EventArgs e)
{
//TODO: Bring back Manage Ad Items form and managing AdSpecials.
//var adItemManager = new FrmManageAdItems();
//adItemManager.ShowDialog();
}
private void dbVersionHelpMainMenu_Click(object sender, EventArgs e)
{ {
var db = new AdvertisingProfitControlModel(); var db = new AdvertisingProfitControlModel();
var version = db.Versions.FirstOrDefault(x => x.Id == 1); var version = db.Versions.FirstOrDefault(x => x.Id == 1);
@@ -183,6 +280,9 @@ namespace AdvertsingProfitControl
MessageBox.Show(@"The current database's version is " + version.VersionNumber + @".", @"Database Version Number", MessageBoxButtons.OK, MessageBoxIcon.Information); MessageBox.Show(@"The current database's version is " + version.VersionNumber + @".", @"Database Version Number", MessageBoxButtons.OK, MessageBoxIcon.Information);
} }
#endregion
#region Print Handler Methods
private void PrintPage(object sender, PrintPageEventArgs e) private void PrintPage(object sender, PrintPageEventArgs e)
{ {
@@ -264,9 +364,12 @@ namespace AdvertsingProfitControl
printDialog.Document = new PrintDocument(); printDialog.Document = new PrintDocument();
} }
#endregion
#region DataGridView Constructor Methods
/// <summary> /// <summary>
/// Fills the APC DataGridViews with the appropriate columns and starting row for the user to start /// Builds the appropriate columns in the APC DataGridViews so they can be filled.
/// entering data.
/// </summary> /// </summary>
private void ConstructApcDataGridViews() private void ConstructApcDataGridViews()
{ {
@@ -346,9 +449,14 @@ namespace AdvertsingProfitControl
} }
} }
#endregion
#region Date Loading Methods
private void LoadDate(DateTime date) private void LoadDate(DateTime date)
{ {
var db = new AdvertisingProfitControlModel(); var db = new AdvertisingProfitControlModel();
//Check to see if that date record can be found before clearing the form.
var dateRecord = db.WeekEndingDates.SingleOrDefault(x => x.EndingDate == date); var dateRecord = db.WeekEndingDates.SingleOrDefault(x => x.EndingDate == date);
if (dateRecord == null) if (dateRecord == null)
{ {
@@ -356,6 +464,7 @@ namespace AdvertsingProfitControl
return; return;
} }
ClearForm(); ClearForm();
//Load all the data attached to the date record.
LoadProjectionsTable(dateRecord); LoadProjectionsTable(dateRecord);
LoadInventoryTable(dateRecord); LoadInventoryTable(dateRecord);
LoadActualSalesTable(dateRecord); LoadActualSalesTable(dateRecord);
@@ -405,14 +514,12 @@ namespace AdvertsingProfitControl
projectionsDataGridView.Rows[index].DefaultCellStyle.BackColor = ApplicationColors.MemberRow; projectionsDataGridView.Rows[index].DefaultCellStyle.BackColor = ApplicationColors.MemberRow;
} }
if (p.FkAdSpecialId != null && adSpecialIndex == -1) if (p.FkAdSpecialId == null || adSpecialIndex != -1) continue;
{ //TODO: Fix null reference when no object is found.
//TODO: Fix null reference when no object is found. adSpecialIndex = index;
adSpecialIndex = index; projectionsDataGridView.Rows.Insert(index, 1);
projectionsDataGridView.Rows.Insert(index, 1); projectionsDataGridView.Rows[index].DefaultCellStyle.BackColor = ApplicationColors.AdSpecial;
projectionsDataGridView.Rows[index].DefaultCellStyle.BackColor = ApplicationColors.AdSpecial; projectionsDataGridView.Rows[index].Cells[3].Value = db.AdSpecials.Single(x => x.Id == p.FkAdSpecialId).Name;
projectionsDataGridView.Rows[index].Cells[3].Value = db.AdSpecials.Single(x => x.Id == p.FkAdSpecialId).Name;
}
} }
//Now add the totals row. //Now add the totals row.
if (projectionsDataGridView.RowCount == 0) return; if (projectionsDataGridView.RowCount == 0) return;
@@ -461,13 +568,11 @@ namespace AdvertsingProfitControl
inventoryDataGridView.Rows[index].DefaultCellStyle.BackColor = ApplicationColors.MemberRow; inventoryDataGridView.Rows[index].DefaultCellStyle.BackColor = ApplicationColors.MemberRow;
} }
if (i.FkAdSpecialId != null && adSpecialIndex == -1) if (i.FkAdSpecialId == null || adSpecialIndex != -1) continue;
{ adSpecialIndex = index;
adSpecialIndex = index; inventoryDataGridView.Rows.Insert(index, 1);
inventoryDataGridView.Rows.Insert(index, 1); inventoryDataGridView.Rows[index].DefaultCellStyle.BackColor = ApplicationColors.AdSpecial;
inventoryDataGridView.Rows[index].DefaultCellStyle.BackColor = ApplicationColors.AdSpecial; inventoryDataGridView.Rows[index].Cells[2].Value = db.AdSpecials.Single(x => x.Id == i.FkAdSpecialId).Name;
inventoryDataGridView.Rows[index].Cells[2].Value = db.AdSpecials.Single(x => x.Id == i.FkAdSpecialId).Name;
}
} }
} }
@@ -501,13 +606,11 @@ namespace AdvertsingProfitControl
actualSalesDataGridView.Rows[index].DefaultCellStyle.BackColor = ApplicationColors.MemberRow; actualSalesDataGridView.Rows[index].DefaultCellStyle.BackColor = ApplicationColors.MemberRow;
} }
if (a.FkAdSpecialId != null && adSpecialIndex == -1) if (a.FkAdSpecialId == null || adSpecialIndex != -1) continue;
{ adSpecialIndex = index;
adSpecialIndex = index; actualSalesDataGridView.Rows.Insert(index, 1);
actualSalesDataGridView.Rows.Insert(index, 1); actualSalesDataGridView.Rows[index].DefaultCellStyle.BackColor = ApplicationColors.AdSpecial;
actualSalesDataGridView.Rows[index].DefaultCellStyle.BackColor = ApplicationColors.AdSpecial; actualSalesDataGridView.Rows[index].Cells[3].Value = db.AdSpecials.Single(x => x.Id == a.FkAdSpecialId).Name;
actualSalesDataGridView.Rows[index].Cells[3].Value = db.AdSpecials.Single(x => x.Id == a.FkAdSpecialId).Name;
}
} }
//Now add the totals row. //Now add the totals row.
if (actualSalesDataGridView.RowCount == 0) return; if (actualSalesDataGridView.RowCount == 0) return;
@@ -665,6 +768,8 @@ namespace AdvertsingProfitControl
} }
} }
#endregion
private string CheckForHoliday(DayOfWeek day) private string CheckForHoliday(DayOfWeek day)
{ {
var holidayText = string.Empty; var holidayText = string.Empty;
@@ -709,6 +814,13 @@ namespace AdvertsingProfitControl
return holidayText; return holidayText;
} }
#region Form Reset And Data Loading Methods
/// <summary>
/// Checks to see if the newly selected date is one that should be loaded.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ValidateDateChanged(object sender, DateRangeEventArgs e) private void ValidateDateChanged(object sender, DateRangeEventArgs e)
{ {
if (e.Start == _currentActiveDate || !monthCalendar.BoldedDates.Contains(e.Start)) return; if (e.Start == _currentActiveDate || !monthCalendar.BoldedDates.Contains(e.Start)) return;
@@ -762,13 +874,6 @@ namespace AdvertsingProfitControl
grossProfitEstimatedWeeklyDeptmartmentExpenseLabel.Text = @"Estimated Weekly" + Environment.NewLine + @"Department Expense: "; grossProfitEstimatedWeeklyDeptmartmentExpenseLabel.Text = @"Estimated Weekly" + Environment.NewLine + @"Department Expense: ";
} }
private void debugToolStripMenuItem1_Click(object sender, EventArgs e)
{
var form = new DebugDatabaseConverter();
form.ShowDialog();
RefreshDateListing();
}
private void RefreshDateListing() private void RefreshDateListing()
{ {
var db = new AdvertisingProfitControlModel(); var db = new AdvertisingProfitControlModel();
@@ -776,129 +881,52 @@ namespace AdvertsingProfitControl
if (monthCalendar.BoldedDates.Length > 0) if (monthCalendar.BoldedDates.Length > 0)
{ {
modifyRecordMainMenu.Enabled = true; modifyRecordMainMenu.Enabled = true;
modifyRecordMainMenu.ToolTipText = @""; modifyRecordMainMenu.ToolTipText = string.Empty;
clearCurrentRecordSelectedDateToolsMainMenu.Enabled = true;
clearCurrentRecordSelectedDateToolsMainMenu.ToolTipText = string.Empty;
} }
else else
{ {
dateTimeGroupBox.Text = @"No records found in the database."; dateTimeGroupBox.Text = @"No records found in the database.";
modifyRecordMainMenu.Enabled = false; modifyRecordMainMenu.Enabled = false;
modifyRecordMainMenu.ToolTipText = @"There are no records to modify."; modifyRecordMainMenu.ToolTipText = @"There are no records to modify.";
clearCurrentRecordSelectedDateToolsMainMenu.Enabled = false;
clearCurrentRecordSelectedDateToolsMainMenu.ToolTipText = @"There is no date to clear.";
} }
} }
private void clearSelectedDateToolsMainMenu_Click(object sender, EventArgs e) #endregion
#region Debug Tool Menu Items
private void DisplayDebugTool(object sender, EventArgs e)
{ {
var result = MessageBox.Show(@"Are you sure you want to delete all records for the date " + _currentActiveDate.ToShortDateString() + @"?", @"Clear Date", MessageBoxButtons.YesNo, MessageBoxIcon.Question); var form = new DebugDatabaseConverter();
if (result == DialogResult.No) form.ShowDialog();
{
return;
}
var db = new AdvertisingProfitControlModel();
var dateRecord = db.WeekEndingDates.Single(x => x.EndingDate == _currentActiveDate);
var projections = db.Projections.Where(x => x.WeekEndingDate.EndingDate == dateRecord.EndingDate);
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())
{
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();
ClearForm();
}
catch (DbUpdateException ex)
{
MessageBox.Show(@"Failed to clear selected date.", @"Error");
_console.WriteToLog(FrmLogConsole.Level.Error, ex.Message);
}
}
RefreshDateListing(); RefreshDateListing();
var mostRecentDate = db.WeekEndingDates.OrderByDescending(x => x.EndingDate).FirstOrDefault();
if (mostRecentDate != null)
{
LoadDate(mostRecentDate.EndingDate);
}
} }
private void addRecordToolStripMenuItem_Click_1(object sender, EventArgs e) /// <summary>
/// Displays the legacy Add Record form. Completely for looks.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void DisplayLegacyAddRecord(object sender, EventArgs e)
{ {
var form = new FrmAddRecord(); var form = new FrmAddRecord();
form.ShowDialog(); form.ShowDialog();
} }
private void rawViewDebugMainMenu_Click(object sender, EventArgs e) /// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void DisplayRawDatabaseView(object sender, EventArgs e)
{ {
} }
private void adSpecialKeyWordsToolsMainMenu_Click(object sender, EventArgs e) #endregion
{
var form = new FrmRegisterAdSpecial();
form.ShowDialog();
}
} }
} }
//http://stackoverflow.com/questions/487661/how-do-i-suspend-painting-for-a-control-and-its-children
internal class DrawingControl
{
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, Int32 wMsg, bool wParam, Int32 lParam);
private const int WmSetredraw = 11;
public static void SuspendDrawing(Control parent)
{
SendMessage(parent.Handle, WmSetredraw, false, 0);
}
public static void ResumeDrawing(Control parent)
{
SendMessage(parent.Handle, WmSetredraw, true, 0);
parent.Refresh();
}
}
+173
View File
@@ -0,0 +1,173 @@
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()
{
this.adItemsListView = new System.Windows.Forms.ListView();
this.addUpdateItemButton = new System.Windows.Forms.Button();
this.removeAdItemButton = new System.Windows.Forms.Button();
this.newItemTextBox = new System.Windows.Forms.TextBox();
this.descriptionTextBox = new System.Windows.Forms.TextBox();
this.newItemLabel = new System.Windows.Forms.Label();
this.descriptionLabel = new System.Windows.Forms.Label();
this.informationLabel = new System.Windows.Forms.Label();
this.filterLabel = new System.Windows.Forms.Label();
this.filterComboBox = new System.Windows.Forms.ComboBox();
this.SuspendLayout();
//
// adItemsListView
//
this.adItemsListView.Location = new System.Drawing.Point(258, 12);
this.adItemsListView.Name = "adItemsListView";
this.adItemsListView.Size = new System.Drawing.Size(452, 431);
this.adItemsListView.TabIndex = 3;
this.adItemsListView.TabStop = false;
this.adItemsListView.UseCompatibleStateImageBehavior = false;
this.adItemsListView.View = System.Windows.Forms.View.Details;
//
// addUpdateItemButton
//
this.addUpdateItemButton.Enabled = false;
this.addUpdateItemButton.Location = new System.Drawing.Point(506, 449);
this.addUpdateItemButton.Name = "addUpdateItemButton";
this.addUpdateItemButton.Size = new System.Drawing.Size(200, 70);
this.addUpdateItemButton.TabIndex = 3;
this.addUpdateItemButton.Text = "Add New Item";
this.addUpdateItemButton.UseVisualStyleBackColor = true;
this.addUpdateItemButton.Click += new System.EventHandler(this.AddUpdateItem);
//
// removeAdItemButton
//
this.removeAdItemButton.Enabled = false;
this.removeAdItemButton.Location = new System.Drawing.Point(13, 449);
this.removeAdItemButton.Name = "removeAdItemButton";
this.removeAdItemButton.Size = new System.Drawing.Size(200, 70);
this.removeAdItemButton.TabIndex = 4;
this.removeAdItemButton.Text = "Remove Selected Item";
this.removeAdItemButton.UseVisualStyleBackColor = true;
this.removeAdItemButton.Click += new System.EventHandler(this.RemoveSelectedAdItem);
//
// newItemTextBox
//
this.newItemTextBox.Location = new System.Drawing.Point(13, 55);
this.newItemTextBox.MaxLength = 32;
this.newItemTextBox.Name = "newItemTextBox";
this.newItemTextBox.Size = new System.Drawing.Size(200, 29);
this.newItemTextBox.TabIndex = 1;
//
// descriptionTextBox
//
this.descriptionTextBox.Location = new System.Drawing.Point(13, 115);
this.descriptionTextBox.MaxLength = 128;
this.descriptionTextBox.Name = "descriptionTextBox";
this.descriptionTextBox.Size = new System.Drawing.Size(200, 29);
this.descriptionTextBox.TabIndex = 2;
//
// newItemLabel
//
this.newItemLabel.AutoSize = true;
this.newItemLabel.Location = new System.Drawing.Point(12, 27);
this.newItemLabel.Name = "newItemLabel";
this.newItemLabel.Size = new System.Drawing.Size(205, 25);
this.newItemLabel.TabIndex = 5;
this.newItemLabel.Text = "Register New Ad Item:";
//
// descriptionLabel
//
this.descriptionLabel.AutoSize = true;
this.descriptionLabel.Location = new System.Drawing.Point(12, 87);
this.descriptionLabel.Name = "descriptionLabel";
this.descriptionLabel.Size = new System.Drawing.Size(207, 25);
this.descriptionLabel.TabIndex = 6;
this.descriptionLabel.Text = "Description (Optional):";
//
// informationLabel
//
this.informationLabel.AutoSize = true;
this.informationLabel.Location = new System.Drawing.Point(8, 219);
this.informationLabel.Name = "informationLabel";
this.informationLabel.Size = new System.Drawing.Size(0, 25);
this.informationLabel.TabIndex = 7;
//
// filterLabel
//
this.filterLabel.AutoSize = true;
this.filterLabel.Location = new System.Drawing.Point(12, 147);
this.filterLabel.Name = "filterLabel";
this.filterLabel.Size = new System.Drawing.Size(115, 25);
this.filterLabel.TabIndex = 8;
this.filterLabel.Text = "Apply Filter:";
//
// filterComboBox
//
this.filterComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.filterComboBox.FormattingEnabled = true;
this.filterComboBox.Location = new System.Drawing.Point(13, 175);
this.filterComboBox.Name = "filterComboBox";
this.filterComboBox.Size = new System.Drawing.Size(200, 32);
this.filterComboBox.TabIndex = 9;
this.filterComboBox.TabStop = false;
//
// FrmManageAdItems
//
this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(722, 532);
this.Controls.Add(this.filterComboBox);
this.Controls.Add(this.filterLabel);
this.Controls.Add(this.informationLabel);
this.Controls.Add(this.descriptionLabel);
this.Controls.Add(this.newItemLabel);
this.Controls.Add(this.descriptionTextBox);
this.Controls.Add(this.newItemTextBox);
this.Controls.Add(this.removeAdItemButton);
this.Controls.Add(this.addUpdateItemButton);
this.Controls.Add(this.adItemsListView);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
this.Name = "FrmManageAdItems";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Manage Ad Items";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.ListView adItemsListView;
private System.Windows.Forms.Button addUpdateItemButton;
private System.Windows.Forms.Button removeAdItemButton;
private System.Windows.Forms.TextBox newItemTextBox;
private System.Windows.Forms.TextBox descriptionTextBox;
private System.Windows.Forms.Label newItemLabel;
private System.Windows.Forms.Label descriptionLabel;
private System.Windows.Forms.Label informationLabel;
private System.Windows.Forms.Label filterLabel;
private System.Windows.Forms.ComboBox filterComboBox;
}
}
+256
View File
@@ -0,0 +1,256 @@
using System;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Transactions;
using System.Windows.Forms;
namespace AdvertsingProfitControl
{
public partial class FrmManageAdItems : Form
{
private bool _isUpdating;
public FrmManageAdItems()
{
InitializeComponent();
newItemTextBox.TextChanged += NewItemTextChanged;
adItemsListView.ItemSelectionChanged += UpdateAdItemTextFields;
var columnHeader = new ColumnHeader
{
Name = "AdItemHeaderColumn",
Width = Width / 2
};
adItemsListView.Columns.Add(columnHeader);
RefreshAdItemListing();
}
private void FilterValueChanged(object sender, EventArgs e)
{
if(filterComboBox.Enabled == false) return;
adItemsListView.Columns[0].Text = @"Current Ad Items (" + (filterComboBox.SelectedItem.ToString() == "All" ? "No Filter" : @"Filter " + filterComboBox.SelectedItem) + @"):";
adItemsListView.Items.Clear();
var db = new AdvertisingProfitControlModel();
var adItems = db.AdItems.Select(x => x);
foreach (var adItem in adItems)
{
var item = new ListViewItem
{
Text = adItem.Name,
Tag = adItem
};
if (string.Equals(filterComboBox.SelectedItem.ToString(), "All", StringComparison.Ordinal))
{
adItemsListView.Items.Add(item);
continue;
}
if (string.Equals(filterComboBox.SelectedItem.ToString(), "0-9", StringComparison.Ordinal) && char.IsNumber(adItem.Name[0]))
{
adItemsListView.Items.Add(item);
}
else if (!string.Equals(filterComboBox.SelectedItem.ToString(), "0-9", StringComparison.Ordinal) && char.IsLetter(adItem.Name[0]))
{
if(filterComboBox.SelectedItem.ToString()[0] == adItem.Name[0])
{ adItemsListView.Items.Add(item);}
}
}
newItemTextBox.Text = string.Empty;
descriptionTextBox.Text = string.Empty;
removeAdItemButton.Enabled = false;
}
private void UpdateAdItemTextFields(object sender, ListViewItemSelectionChangedEventArgs e)
{
newItemTextBox.Text = ((AdItem)e.Item.Tag).Name;
descriptionTextBox.Text = ((AdItem)e.Item.Tag).Description;
_isUpdating = true;
removeAdItemButton.Enabled = true;
addUpdateItemButton.Text = @"Update Ad Item";
newItemLabel.Text = @"Update Ad Item:";
}
private void NewItemTextChanged(object sender, EventArgs e)
{
if (_isUpdating && newItemTextBox.Text.Length == 0)
{
_isUpdating = false;
descriptionTextBox.Text = string.Empty;
addUpdateItemButton.Text = @"Register Ad Item";
newItemLabel.Text = @"Register New Ad Item:";
}
addUpdateItemButton.Enabled = newItemTextBox.Text.Length > 0;
}
private void RefreshAdItemListing(string filter = "")
{
filterComboBox.SelectedIndexChanged -= FilterValueChanged;
//Check to see if the current view is empty.
if (adItemsListView.Items.Count == 0) filter = string.Empty;
adItemsListView.Items.Clear();
filterComboBox.Items.Clear();
filterComboBox.Items.Add("All");
var db = new AdvertisingProfitControlModel();
var adItems = db.AdItems.Select(x => x).OrderBy(x => x.Name);
var adItemCount = 0;
var numberFound = false;
foreach (var adItem in adItems)
{
var item = new ListViewItem
{
Text = adItem.Name,
Tag = adItem
};
if (filter == string.Empty || filter == "All")
{
adItemsListView.Items.Add(item);
}
else if (adItem.Name[0].ToString() == filter)
{
adItemsListView.Items.Add(item);
}
else if (filter == "0-9" && char.IsNumber(adItem.Name[0]))
{
adItemsListView.Items.Add(item);
}
//Populate the filter.
if (!filterComboBox.Items.Contains(adItem.Name[0].ToString()))
{
if (char.IsDigit(adItem.Name[0]) && !numberFound)
{
filterComboBox.Items.Add("0-9");
numberFound = true;
}
else
{
filterComboBox.Items.Add(adItem.Name[0].ToString());
}
}
adItemCount++;
}
if (adItemCount > 0)
{
filterComboBox.Enabled = true;
filterComboBox.SelectedIndex = filterComboBox.Items.Contains(filter) ? filterComboBox.Items.IndexOf(filter) : 0;
adItemsListView.Columns[0].Text = @"Current Ad Items (" + (filterComboBox.SelectedItem.ToString() == "All" ? "No Filter" : @"Filter " + filterComboBox.SelectedItem) + @"):";
}
else
{
adItemsListView.Columns[0].Text = @"No Ad Items to Display.";
filterComboBox.SelectedIndex = 0;
}
removeAdItemButton.Enabled = false;
newItemTextBox.Text = string.Empty;
descriptionTextBox.Text = string.Empty;
filterComboBox.SelectedIndexChanged += FilterValueChanged;
}
private void RemoveSelectedAdItem(object sender, EventArgs e)
{
var item = adItemsListView.SelectedItems[0];
var oldAdItem = (AdItem)item.Tag;
var db = new AdvertisingProfitControlModel();
var adItemEntry = db.AdItems.Single(x => x.Id == oldAdItem.Id);
//Check to see if the ad special is used by other tables.
if (adItemEntry.ActualSales.Count > 0)
{
//If so, display a warning to the user about the potential data loss.
var result =
MessageBox.Show(
adItemEntry.ActualSales.Count +
@" reference(s) to this item found. Do you want to delete these records? This can not be undone.",
@"References to " + oldAdItem.Name + @" Found", MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Question);
if (result != DialogResult.Yes) return;
//Perform the necessary operations to remove all references to the key word.
using (var scope = new TransactionScope())
{
try
{
db.Projections.RemoveRange(db.Projections.Where(x => x.FkAdItemId == oldAdItem.Id));
db.Inventories.RemoveRange(db.Inventories.Where(x => x.FkAdItemId == oldAdItem.Id));
db.ActualSales.RemoveRange(db.ActualSales.Where(x => x.FkAdItemId == oldAdItem.Id));
db.AdItems.Remove(adItemEntry);
db.SaveChanges();
scope.Complete();
informationLabel.Text = @"Removed '" + Environment.NewLine + oldAdItem.Name +
Environment.NewLine + @"' successfully.";
adItemsListView.Items.RemoveAt(adItemsListView.SelectedItems[0].Index);
}
catch (DbUpdateException ex)
{
informationLabel.Text = @"Failed to remove " + Environment.NewLine + oldAdItem.Name + @"." +
Environment.NewLine + ex.Message;
}
}
}
else
{
try
{
db.AdItems.Remove(adItemEntry);
db.SaveChanges();
informationLabel.Text = @"Removed '" + Environment.NewLine + oldAdItem.Name +
Environment.NewLine + @"' successfully.";
adItemsListView.Items.RemoveAt(adItemsListView.SelectedItems[0].Index);
}
catch (DbUpdateException ex)
{
informationLabel.Text = @"Failed to remove " + Environment.NewLine + oldAdItem.Name + @"." + Environment.NewLine + ex.Message;
}
}
RefreshAdItemListing(filterComboBox.SelectedItem.ToString());
}
private void AddUpdateItem(object sender, EventArgs e)
{
var db = new AdvertisingProfitControlModel();
if (!_isUpdating)
{
if (!db.AdItems.Any(x => x.Name == newItemTextBox.Text))
{
var adItem = new AdItem
{
Name = newItemTextBox.Text,
Description = descriptionTextBox.Text
};
db.AdItems.Add(adItem);
try
{
db.SaveChanges();
informationLabel.Text = @"Registered '" + Environment.NewLine + adItem.Name + Environment.NewLine + @"' successfully.";
}
catch (DbUpdateException ex)
{
informationLabel.Text = @"Failed to register '" + Environment.NewLine + adItem.Name + @"'." + Environment.NewLine +
ex.Message;
}
}
else
{
MessageBox.Show(@"Ad item '" + newItemTextBox.Text + @"' already exists.",
@"Duplicate Entry", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
newItemTextBox.Text = string.Empty;
}
}
else
{
var item = adItemsListView.SelectedItems[0];
var index = ((AdItem)item.Tag).Id;
var adItem = db.AdItems.SingleOrDefault(x => x.Id == index);
if (adItem == null)
{
informationLabel.Text = @"Failed to retrieve " + Environment.NewLine + @"ad item ID.";
return;
}
adItem.Name = newItemTextBox.Text;
adItem.Description = descriptionTextBox.Text;
db.SaveChanges();
informationLabel.Text = @"Updated '" + Environment.NewLine + newItemTextBox.Text + Environment.NewLine + @"' successfully.";
}
RefreshAdItemListing(filterComboBox.SelectedItem.ToString());
}
}
}
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
+151
View File
@@ -0,0 +1,151 @@
namespace AdvertsingProfitControl
{
partial class FrmManageSuppliers
{
/// <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()
{
this.suppliersListBox = new System.Windows.Forms.ListView();
this.descriptionTextBox = new System.Windows.Forms.TextBox();
this.descriptionLabel = new System.Windows.Forms.Label();
this.informationLabel = new System.Windows.Forms.Label();
this.newSupplierTextBox = new System.Windows.Forms.TextBox();
this.newSupplierLabel = new System.Windows.Forms.Label();
this.deleteSupplierButton = new System.Windows.Forms.Button();
this.registerSupplierButton = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// suppliersListBox
//
this.suppliersListBox.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
this.suppliersListBox.Location = new System.Drawing.Point(257, 12);
this.suppliersListBox.Name = "suppliersListBox";
this.suppliersListBox.Size = new System.Drawing.Size(423, 412);
this.suppliersListBox.TabIndex = 16;
this.suppliersListBox.TabStop = false;
this.suppliersListBox.UseCompatibleStateImageBehavior = false;
this.suppliersListBox.View = System.Windows.Forms.View.Details;
//
// descriptionTextBox
//
this.descriptionTextBox.Location = new System.Drawing.Point(14, 115);
this.descriptionTextBox.MaxLength = 128;
this.descriptionTextBox.Name = "descriptionTextBox";
this.descriptionTextBox.Size = new System.Drawing.Size(228, 29);
this.descriptionTextBox.TabIndex = 2;
//
// descriptionLabel
//
this.descriptionLabel.AutoSize = true;
this.descriptionLabel.Location = new System.Drawing.Point(14, 82);
this.descriptionLabel.Name = "descriptionLabel";
this.descriptionLabel.Size = new System.Drawing.Size(207, 25);
this.descriptionLabel.TabIndex = 15;
this.descriptionLabel.Text = "Description (Optional):";
//
// informationLabel
//
this.informationLabel.AutoSize = true;
this.informationLabel.Location = new System.Drawing.Point(14, 162);
this.informationLabel.Name = "informationLabel";
this.informationLabel.Size = new System.Drawing.Size(0, 25);
this.informationLabel.TabIndex = 14;
//
// newSupplierTextBox
//
this.newSupplierTextBox.Location = new System.Drawing.Point(14, 45);
this.newSupplierTextBox.MaxLength = 32;
this.newSupplierTextBox.Name = "newSupplierTextBox";
this.newSupplierTextBox.Size = new System.Drawing.Size(228, 29);
this.newSupplierTextBox.TabIndex = 1;
//
// newSupplierLabel
//
this.newSupplierLabel.AutoSize = true;
this.newSupplierLabel.Location = new System.Drawing.Point(14, 12);
this.newSupplierLabel.Name = "newSupplierLabel";
this.newSupplierLabel.Size = new System.Drawing.Size(166, 25);
this.newSupplierLabel.TabIndex = 11;
this.newSupplierLabel.Text = "Register Supplier:";
//
// deleteSupplierButton
//
this.deleteSupplierButton.Enabled = false;
this.deleteSupplierButton.Location = new System.Drawing.Point(12, 430);
this.deleteSupplierButton.Name = "deleteSupplierButton";
this.deleteSupplierButton.Size = new System.Drawing.Size(200, 50);
this.deleteSupplierButton.TabIndex = 4;
this.deleteSupplierButton.Text = "Remove Supplier";
this.deleteSupplierButton.UseVisualStyleBackColor = true;
this.deleteSupplierButton.Click += new System.EventHandler(this.deleteSupplierButton_Click);
//
// registerSupplierButton
//
this.registerSupplierButton.Enabled = false;
this.registerSupplierButton.Location = new System.Drawing.Point(480, 430);
this.registerSupplierButton.Name = "registerSupplierButton";
this.registerSupplierButton.Size = new System.Drawing.Size(200, 50);
this.registerSupplierButton.TabIndex = 3;
this.registerSupplierButton.Text = "Register Supplier";
this.registerSupplierButton.UseVisualStyleBackColor = true;
this.registerSupplierButton.Click += new System.EventHandler(this.registerSupplierButton_Click);
//
// FrmManageSuppliers
//
this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(692, 492);
this.Controls.Add(this.suppliersListBox);
this.Controls.Add(this.descriptionTextBox);
this.Controls.Add(this.descriptionLabel);
this.Controls.Add(this.informationLabel);
this.Controls.Add(this.newSupplierTextBox);
this.Controls.Add(this.newSupplierLabel);
this.Controls.Add(this.deleteSupplierButton);
this.Controls.Add(this.registerSupplierButton);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "FrmManageSuppliers";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Manage Suppliers";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.ListView suppliersListBox;
private System.Windows.Forms.TextBox descriptionTextBox;
private System.Windows.Forms.Label descriptionLabel;
private System.Windows.Forms.Label informationLabel;
private System.Windows.Forms.TextBox newSupplierTextBox;
private System.Windows.Forms.Label newSupplierLabel;
private System.Windows.Forms.Button deleteSupplierButton;
private System.Windows.Forms.Button registerSupplierButton;
}
}
@@ -0,0 +1,180 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Entity.Infrastructure;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Transactions;
using System.Windows.Forms;
namespace AdvertsingProfitControl
{
public partial class FrmManageSuppliers : Form
{
private bool _isUpdating;
public FrmManageSuppliers()
{
InitializeComponent();
newSupplierTextBox.TextChanged += UpdateButtonOnTextChanged;
suppliersListBox.ItemSelectionChanged += UpdateSupplierFields;
var columnHeader = new ColumnHeader
{
Name = "SupplierHeaderColumn",
Width = Width / 2
};
suppliersListBox.Columns.Add(columnHeader);
RefreshSupplierListing();
}
private void UpdateSupplierFields(object sender, ListViewItemSelectionChangedEventArgs e)
{
newSupplierTextBox.Text = ((Supplier)e.Item.Tag).Name;
descriptionTextBox.Text = ((Supplier)e.Item.Tag).Description;
_isUpdating = true;
deleteSupplierButton.Enabled = true;
registerSupplierButton.Text = @"Update Supplier";
newSupplierLabel.Text = @"Update Supplier:";
}
private void UpdateButtonOnTextChanged(object sender, EventArgs e)
{
if (_isUpdating && newSupplierTextBox.Text.Length == 0)
{
_isUpdating = false;
descriptionTextBox.Text = string.Empty;
registerSupplierButton.Text = @"Register Supplier";
newSupplierLabel.Text = @"Register New Supplier:";
}
registerSupplierButton.Enabled = newSupplierTextBox.Text.Length > 0;
}
private void RefreshSupplierListing()
{
suppliersListBox.Items.Clear();
var db = new AdvertisingProfitControlModel();
var suppliers = db.Suppliers.Select(x => x).OrderBy(x => x.Name);
var supplierCount = 0;
foreach (var supplier in suppliers)
{
var item = new ListViewItem
{
Text = supplier.Name,
Tag = supplier
};
suppliersListBox.Items.Add(item);
supplierCount++;
}
suppliersListBox.Columns[0].Text = supplierCount > 0 ? @"Current Suppliers:" : @"No Suppliers to Display";
deleteSupplierButton.Enabled = false;
newSupplierTextBox.Text = string.Empty;
descriptionTextBox.Text = string.Empty;
}
private void registerSupplierButton_Click(object sender, EventArgs e)
{
var db = new AdvertisingProfitControlModel();
if (!_isUpdating)
{
if (!db.Suppliers.Any(x => x.Name == newSupplierTextBox.Text))
{
var supplier = new Supplier()
{
Name = newSupplierTextBox.Text,
Description = descriptionTextBox.Text
};
db.Suppliers.Add(supplier);
try
{
db.SaveChanges();
informationLabel.Text = @"Registered '" + Environment.NewLine + supplier.Name + Environment.NewLine + @"' successfully.";
}
catch (DbUpdateException ex)
{
informationLabel.Text = @"Failed to register '" + Environment.NewLine + supplier.Name + @"'." + Environment.NewLine +
ex.Message;
}
}
else
{
MessageBox.Show(@"Supplier '" + newSupplierTextBox.Text + @"' already exists.",
@"Duplicate Entry", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
newSupplierTextBox.Text = string.Empty;
}
}
else
{
var item = suppliersListBox.SelectedItems[0];
var index = ((Supplier)item.Tag).Id;
var supplier = db.Suppliers.SingleOrDefault(x => x.Id == index);
if (supplier == null)
{
informationLabel.Text = @"Failed to retrieve " + Environment.NewLine + @"supplier ID.";
return;
}
supplier.Name = newSupplierTextBox.Text;
supplier.Description = descriptionTextBox.Text;
db.SaveChanges();
informationLabel.Text = @"Updated '" + Environment.NewLine + newSupplierTextBox.Text + Environment.NewLine + @"' successfully.";
}
RefreshSupplierListing();
}
private void deleteSupplierButton_Click(object sender, EventArgs e)
{
var item = suppliersListBox.SelectedItems[0];
var oldSupplier = (Supplier)item.Tag;
var db = new AdvertisingProfitControlModel();
var supplier = db.Suppliers.Single(x => x.Id == oldSupplier.Id);
//Check to see if the ad special is used by other tables.
if (supplier.Invoices.Count > 0)
{
//If so, display a warning to the user about the potential data loss.
var result =
MessageBox.Show(
supplier.Invoices.Count +
@" reference(s) to this supplier found. Do you want to delete these records? This can not be undone.",
@"References to " + oldSupplier.Name + @" Found", MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Question);
if (result != DialogResult.Yes) return;
//Perform the necessary operations to remove all references to the key word.
using (var scope = new TransactionScope())
{
try
{
db.Invoices.RemoveRange(db.Invoices.Where(x => x.FkSupplierId == oldSupplier.Id));
db.Suppliers.Remove(supplier);
db.SaveChanges();
scope.Complete();
informationLabel.Text = @"Removed '" + Environment.NewLine + oldSupplier.Name +
Environment.NewLine + @"' successfully.";
}
catch (DbUpdateException ex)
{
informationLabel.Text = @"Failed to remove " + Environment.NewLine + oldSupplier.Name + @"." +
Environment.NewLine + ex.Message;
}
}
}
else
{
try
{
db.Suppliers.Remove(supplier);
db.SaveChanges();
informationLabel.Text = @"Removed '" + Environment.NewLine + oldSupplier.Name +
Environment.NewLine + @"' successfully.";
}
catch (DbUpdateException ex)
{
informationLabel.Text = @"Failed to remove " + Environment.NewLine + oldSupplier.Name + @"." + Environment.NewLine + ex.Message;
}
}
RefreshSupplierListing();
}
}
}
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
+12 -10
View File
@@ -41,10 +41,10 @@
// registerAdSpecialButton // registerAdSpecialButton
// //
this.registerAdSpecialButton.Enabled = false; this.registerAdSpecialButton.Enabled = false;
this.registerAdSpecialButton.Location = new System.Drawing.Point(476, 428); this.registerAdSpecialButton.Location = new System.Drawing.Point(480, 430);
this.registerAdSpecialButton.Name = "registerAdSpecialButton"; this.registerAdSpecialButton.Name = "registerAdSpecialButton";
this.registerAdSpecialButton.Size = new System.Drawing.Size(200, 50); this.registerAdSpecialButton.Size = new System.Drawing.Size(200, 50);
this.registerAdSpecialButton.TabIndex = 0; this.registerAdSpecialButton.TabIndex = 3;
this.registerAdSpecialButton.Text = "Register Ad Special"; this.registerAdSpecialButton.Text = "Register Ad Special";
this.registerAdSpecialButton.UseVisualStyleBackColor = true; this.registerAdSpecialButton.UseVisualStyleBackColor = true;
this.registerAdSpecialButton.Click += new System.EventHandler(this.RegisterNewAdSpecial); this.registerAdSpecialButton.Click += new System.EventHandler(this.RegisterNewAdSpecial);
@@ -52,10 +52,10 @@
// deleteAdSpecialButton // deleteAdSpecialButton
// //
this.deleteAdSpecialButton.Enabled = false; this.deleteAdSpecialButton.Enabled = false;
this.deleteAdSpecialButton.Location = new System.Drawing.Point(13, 428); this.deleteAdSpecialButton.Location = new System.Drawing.Point(12, 430);
this.deleteAdSpecialButton.Name = "deleteAdSpecialButton"; this.deleteAdSpecialButton.Name = "deleteAdSpecialButton";
this.deleteAdSpecialButton.Size = new System.Drawing.Size(200, 50); this.deleteAdSpecialButton.Size = new System.Drawing.Size(200, 50);
this.deleteAdSpecialButton.TabIndex = 2; this.deleteAdSpecialButton.TabIndex = 4;
this.deleteAdSpecialButton.Text = "Remove Ad Special"; this.deleteAdSpecialButton.Text = "Remove Ad Special";
this.deleteAdSpecialButton.UseVisualStyleBackColor = true; this.deleteAdSpecialButton.UseVisualStyleBackColor = true;
this.deleteAdSpecialButton.Click += new System.EventHandler(this.deleteAdSpecialButton_Click); this.deleteAdSpecialButton.Click += new System.EventHandler(this.deleteAdSpecialButton_Click);
@@ -72,18 +72,18 @@
// newAdSpecialTextBox // newAdSpecialTextBox
// //
this.newAdSpecialTextBox.Location = new System.Drawing.Point(17, 54); this.newAdSpecialTextBox.Location = new System.Drawing.Point(17, 54);
this.newAdSpecialTextBox.MaxLength = 32;
this.newAdSpecialTextBox.Name = "newAdSpecialTextBox"; this.newAdSpecialTextBox.Name = "newAdSpecialTextBox";
this.newAdSpecialTextBox.Size = new System.Drawing.Size(228, 29); this.newAdSpecialTextBox.Size = new System.Drawing.Size(228, 29);
this.newAdSpecialTextBox.TabIndex = 4; this.newAdSpecialTextBox.TabIndex = 1;
// //
// informationLabel // informationLabel
// //
this.informationLabel.AutoSize = true; this.informationLabel.AutoSize = true;
this.informationLabel.Location = new System.Drawing.Point(17, 171); this.informationLabel.Location = new System.Drawing.Point(17, 171);
this.informationLabel.Name = "informationLabel"; this.informationLabel.Name = "informationLabel";
this.informationLabel.Size = new System.Drawing.Size(64, 25); this.informationLabel.Size = new System.Drawing.Size(0, 25);
this.informationLabel.TabIndex = 5; this.informationLabel.TabIndex = 5;
this.informationLabel.Text = "label1";
// //
// adSpecialDescription // adSpecialDescription
// //
@@ -97,17 +97,19 @@
// descriptionTextBox // descriptionTextBox
// //
this.descriptionTextBox.Location = new System.Drawing.Point(17, 124); this.descriptionTextBox.Location = new System.Drawing.Point(17, 124);
this.descriptionTextBox.MaxLength = 128;
this.descriptionTextBox.Name = "descriptionTextBox"; this.descriptionTextBox.Name = "descriptionTextBox";
this.descriptionTextBox.Size = new System.Drawing.Size(228, 29); this.descriptionTextBox.Size = new System.Drawing.Size(228, 29);
this.descriptionTextBox.TabIndex = 7; this.descriptionTextBox.TabIndex = 2;
// //
// adSpecialsListBox // adSpecialsListBox
// //
this.adSpecialsListBox.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; this.adSpecialsListBox.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
this.adSpecialsListBox.Location = new System.Drawing.Point(256, 21); this.adSpecialsListBox.Location = new System.Drawing.Point(260, 21);
this.adSpecialsListBox.Name = "adSpecialsListBox"; this.adSpecialsListBox.Name = "adSpecialsListBox";
this.adSpecialsListBox.Size = new System.Drawing.Size(420, 401); this.adSpecialsListBox.Size = new System.Drawing.Size(420, 401);
this.adSpecialsListBox.TabIndex = 8; this.adSpecialsListBox.TabIndex = 8;
this.adSpecialsListBox.TabStop = false;
this.adSpecialsListBox.UseCompatibleStateImageBehavior = false; this.adSpecialsListBox.UseCompatibleStateImageBehavior = false;
this.adSpecialsListBox.View = System.Windows.Forms.View.Details; this.adSpecialsListBox.View = System.Windows.Forms.View.Details;
// //
@@ -115,7 +117,7 @@
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F); this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(686, 489); this.ClientSize = new System.Drawing.Size(692, 492);
this.Controls.Add(this.adSpecialsListBox); this.Controls.Add(this.adSpecialsListBox);
this.Controls.Add(this.descriptionTextBox); this.Controls.Add(this.descriptionTextBox);
this.Controls.Add(this.adSpecialDescription); this.Controls.Add(this.adSpecialDescription);
+51 -27
View File
@@ -1,19 +1,13 @@
using System; using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Entity.Infrastructure; using System.Data.Entity.Infrastructure;
using System.Drawing;
using System.Linq; using System.Linq;
using System.Text; using System.Transactions;
using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
namespace AdvertsingProfitControl namespace AdvertsingProfitControl
{ {
public partial class FrmRegisterAdSpecial : Form public partial class FrmRegisterAdSpecial : Form
{ {
private readonly ToolTip _tt = new ToolTip();
private bool _isUpdating; private bool _isUpdating;
public FrmRegisterAdSpecial() public FrmRegisterAdSpecial()
@@ -24,10 +18,9 @@ namespace AdvertsingProfitControl
{ {
Name = "AdSpecialsHeaderColumn", Name = "AdSpecialsHeaderColumn",
Text = @"Current Ad Special Grouping Keywords:", Text = @"Current Ad Special Grouping Keywords:",
Width = adSpecialsListBox.Width - 5 Width = Width / 2
}; };
adSpecialsListBox.Columns.Add(columnHeader); adSpecialsListBox.Columns.Add(columnHeader);
adSpecialsListBox.MouseMove += OnMouseMove;
adSpecialsListBox.ItemSelectionChanged += UpdateAdSpecialTextBoxes; adSpecialsListBox.ItemSelectionChanged += UpdateAdSpecialTextBoxes;
RefreshAdSpecialListing(); RefreshAdSpecialListing();
} }
@@ -39,6 +32,7 @@ namespace AdvertsingProfitControl
_isUpdating = true; _isUpdating = true;
deleteAdSpecialButton.Enabled = true; deleteAdSpecialButton.Enabled = true;
registerAdSpecialButton.Text = @"Update Ad Special"; registerAdSpecialButton.Text = @"Update Ad Special";
newAdSpecialLabel.Text = @"Update Ad Special:";
} }
private void NewAdSpecialTextChanged(object sender, EventArgs e) private void NewAdSpecialTextChanged(object sender, EventArgs e)
@@ -48,6 +42,7 @@ namespace AdvertsingProfitControl
_isUpdating = false; _isUpdating = false;
descriptionTextBox.Text = string.Empty; descriptionTextBox.Text = string.Empty;
registerAdSpecialButton.Text = @"Register Ad Special"; registerAdSpecialButton.Text = @"Register Ad Special";
newAdSpecialLabel.Text = @"Register New Ad Special:";
} }
registerAdSpecialButton.Enabled = newAdSpecialTextBox.Text.Length > 0; registerAdSpecialButton.Enabled = newAdSpecialTextBox.Text.Length > 0;
} }
@@ -101,24 +96,11 @@ namespace AdvertsingProfitControl
RefreshAdSpecialListing(); RefreshAdSpecialListing();
} }
private void OnMouseMove(object sender, MouseEventArgs e)
{
var box = sender as ListBox;
if (box == null) return;
var listBox = box;
var point = new Point(e.X, e.Y);
var hoverIndex = listBox.IndexFromPoint(point);
if (hoverIndex >= 0 && hoverIndex < listBox.Items.Count)
{
// _tt.SetToolTip(listBox, _descriptions[hoverIndex]);
}
}
private void RefreshAdSpecialListing() private void RefreshAdSpecialListing()
{ {
adSpecialsListBox.Items.Clear(); adSpecialsListBox.Items.Clear();
var db = new AdvertisingProfitControlModel(); var db = new AdvertisingProfitControlModel();
var adSpecials = db.AdSpecials.Select(x => x); var adSpecials = db.AdSpecials.Select(x => x).OrderBy(x => x.Name);
foreach (var adSpecial in adSpecials) foreach (var adSpecial in adSpecials)
{ {
var item = new ListViewItem var item = new ListViewItem
@@ -135,15 +117,57 @@ namespace AdvertsingProfitControl
private void deleteAdSpecialButton_Click(object sender, EventArgs e) private void deleteAdSpecialButton_Click(object sender, EventArgs e)
{ {
//TODO: Scan for Ad Specials that are in use by a table before removing.
var item = adSpecialsListBox.SelectedItems[0]; var item = adSpecialsListBox.SelectedItems[0];
var adSpecial = (AdSpecial) item.Tag; var adSpecial = (AdSpecial) item.Tag;
var db = new AdvertisingProfitControlModel(); var db = new AdvertisingProfitControlModel();
var ad = db.AdSpecials.Single(x => x.Id == adSpecial.Id); var ad = db.AdSpecials.Single(x => x.Id == adSpecial.Id);
db.AdSpecials.Remove(ad); //Check to see if the ad special is used by other tables.
db.SaveChanges(); if (ad.ActualSales.Count > 0)
{
//If so, display a warning to the user about the potential data loss.
var result =
MessageBox.Show(
ad.ActualSales.Count +
@" reference(s) to this keyword found. Do you want to delete these records? This can not be undone.",
@"References to " + adSpecial.Name + @" Found", MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Question);
if (result != DialogResult.Yes) return;
//Perform the necessary operations to remove all references to the key word.
using (var scope = new TransactionScope())
{
try
{
db.Projections.RemoveRange(db.Projections.Where(x => x.FkAdSpecialId == adSpecial.Id));
db.Inventories.RemoveRange(db.Inventories.Where(x => x.FkAdSpecialId == adSpecial.Id));
db.ActualSales.RemoveRange(db.ActualSales.Where(x => x.FkAdSpecialId == adSpecial.Id));
db.AdSpecials.Remove(ad);
db.SaveChanges();
scope.Complete();
informationLabel.Text = @"Removed '" + Environment.NewLine + adSpecial.Name +
Environment.NewLine + @"' successfully.";
}
catch (DbUpdateException ex)
{
informationLabel.Text = @"Failed to remove " + Environment.NewLine + adSpecial.Name + @"." +
Environment.NewLine + ex.Message;
}
}
}
else
{
try
{
db.AdSpecials.Remove(ad);
db.SaveChanges();
informationLabel.Text = @"Removed '" + Environment.NewLine + adSpecial.Name +
Environment.NewLine + @"' successfully.";
}
catch (DbUpdateException ex)
{
informationLabel.Text = @"Failed to remove " + Environment.NewLine + adSpecial.Name + @"." + Environment.NewLine + ex.Message;
}
}
RefreshAdSpecialListing(); RefreshAdSpecialListing();
informationLabel.Text = @"Removed '" + Environment.NewLine + adSpecial.Name + Environment.NewLine + @"' successfully.";
} }
} }
} }
@@ -0,0 +1,23 @@
C:\Users\glmcc\Documents\Source Control\AdvertisingProfitControl\AdvertsingProfitControl\obj\Debug\AdvertsingProfitControl.csprojResolveAssemblyReference.cache
C:\Users\glmcc\Documents\Source Control\AdvertisingProfitControl\AdvertsingProfitControl\obj\Debug\AdvertsingProfitControl.DebugDatabaseConverter.resources
C:\Users\glmcc\Documents\Source Control\AdvertisingProfitControl\AdvertsingProfitControl\obj\Debug\AdvertsingProfitControl.FrmAddRecord.resources
C:\Users\glmcc\Documents\Source Control\AdvertisingProfitControl\AdvertsingProfitControl\obj\Debug\AdvertsingProfitControl.FrmMain.resources
C:\Users\glmcc\Documents\Source Control\AdvertisingProfitControl\AdvertsingProfitControl\obj\Debug\AdvertsingProfitControl.FrmLogConsole.resources
C:\Users\glmcc\Documents\Source Control\AdvertisingProfitControl\AdvertsingProfitControl\obj\Debug\AdvertsingProfitControl.FrmRegisterAdSpecial.resources
C:\Users\glmcc\Documents\Source Control\AdvertisingProfitControl\AdvertsingProfitControl\obj\Debug\AdvertsingProfitControl.NewModifyRecord.resources
C:\Users\glmcc\Documents\Source Control\AdvertisingProfitControl\AdvertsingProfitControl\obj\Debug\AdvertsingProfitControl.Properties.Resources.resources
C:\Users\glmcc\Documents\Source Control\AdvertisingProfitControl\AdvertsingProfitControl\obj\Debug\AdvertsingProfitControl.csproj.GenerateResource.Cache
C:\Users\glmcc\Documents\Source Control\AdvertisingProfitControl\AdvertsingProfitControl\bin\Debug\APCDatabase.accdb
C:\Users\glmcc\Documents\Source Control\AdvertisingProfitControl\AdvertsingProfitControl\bin\Debug\AdvertsingProfitControl.exe.config
C:\Users\glmcc\Documents\Source Control\AdvertisingProfitControl\AdvertsingProfitControl\bin\Debug\AdvertsingProfitControl.exe
C:\Users\glmcc\Documents\Source Control\AdvertisingProfitControl\AdvertsingProfitControl\bin\Debug\AdvertsingProfitControl.pdb
C:\Users\glmcc\Documents\Source Control\AdvertisingProfitControl\AdvertsingProfitControl\bin\Debug\EntityFramework.dll
C:\Users\glmcc\Documents\Source Control\AdvertisingProfitControl\AdvertsingProfitControl\bin\Debug\EntityFramework.SqlServer.dll
C:\Users\glmcc\Documents\Source Control\AdvertisingProfitControl\AdvertsingProfitControl\bin\Debug\HtmlRenderer.dll
C:\Users\glmcc\Documents\Source Control\AdvertisingProfitControl\AdvertsingProfitControl\bin\Debug\HtmlRenderer.WinForms.dll
C:\Users\glmcc\Documents\Source Control\AdvertisingProfitControl\AdvertsingProfitControl\bin\Debug\EntityFramework.xml
C:\Users\glmcc\Documents\Source Control\AdvertisingProfitControl\AdvertsingProfitControl\bin\Debug\EntityFramework.SqlServer.xml
C:\Users\glmcc\Documents\Source Control\AdvertisingProfitControl\AdvertsingProfitControl\bin\Debug\HtmlRenderer.pdb
C:\Users\glmcc\Documents\Source Control\AdvertisingProfitControl\AdvertsingProfitControl\bin\Debug\HtmlRenderer.WinForms.pdb
C:\Users\glmcc\Documents\Source Control\AdvertisingProfitControl\AdvertsingProfitControl\obj\Debug\AdvertsingProfitControl.exe
C:\Users\glmcc\Documents\Source Control\AdvertisingProfitControl\AdvertsingProfitControl\obj\Debug\AdvertsingProfitControl.pdb