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:
Binary file not shown.
@@ -128,6 +128,18 @@
|
||||
<Compile Include="DebugDatabaseConverter.Designer.cs">
|
||||
<DependentUpon>DebugDatabaseConverter.cs</DependentUpon>
|
||||
</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">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
@@ -188,6 +200,12 @@
|
||||
<EmbeddedResource Include="FrmLogConsole.resx">
|
||||
<DependentUpon>FrmLogConsole.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="FrmManageAdItems.resx">
|
||||
<DependentUpon>FrmManageAdItems.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="FrmManageSuppliers.resx">
|
||||
<DependentUpon>FrmManageSuppliers.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="FrmRegisterAdSpecial.resx">
|
||||
<DependentUpon>FrmRegisterAdSpecial.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
||||
+1
-1
@@ -83,7 +83,7 @@
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F);
|
||||
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.moveOverButton);
|
||||
this.Controls.Add(this.datesToConvertListBox);
|
||||
|
||||
@@ -1,15 +1,9 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Data.OleDb;
|
||||
using System.Drawing;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Transactions;
|
||||
using System.Windows.Forms;
|
||||
|
||||
@@ -113,6 +107,18 @@ namespace AdvertsingProfitControl
|
||||
db.Suppliers.Add(temp);
|
||||
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)
|
||||
{
|
||||
var oldDateId = GetDateIdByDateString(date.ToString());
|
||||
@@ -145,30 +151,7 @@ namespace AdvertsingProfitControl
|
||||
{
|
||||
db.WeekEndingDates.Add(date);
|
||||
}
|
||||
//oleDbConnection.Open();
|
||||
//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();
|
||||
var adSpecialId = -1;
|
||||
for (var rowIndex = 0; rowIndex < projections.Rows.Count; rowIndex++)
|
||||
{
|
||||
var projectionedSale = new Projection();
|
||||
@@ -197,34 +180,29 @@ namespace AdvertsingProfitControl
|
||||
projectionedSale.TotalProfitReturn = decimal.Parse(projections.Rows[rowIndex][6].ToString());
|
||||
projectionedSale.FkAdItemId = db.AdItems.First(x => x.Id == adItemId).Id;
|
||||
projectionedSale.RowAttribute = int.Parse(projections.Rows[rowIndex][7].ToString());
|
||||
|
||||
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.FkDateId = date.Id;
|
||||
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
|
||||
adSpecialId = -1;
|
||||
for (var i = 0; i < inventory.Rows.Count; i++)
|
||||
{
|
||||
var inventoryObject = new Inventory();
|
||||
@@ -243,40 +221,39 @@ namespace AdvertsingProfitControl
|
||||
inventoryObject.EndingInventory = inventory.Rows[i][4].ToString();
|
||||
inventoryObject.FkAdItemId = adItemId;
|
||||
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.FkDateId = date.Id;
|
||||
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
|
||||
adSpecialId = -1;
|
||||
for (var rowIndex = 0; rowIndex < actualSales.Rows.Count; rowIndex++)
|
||||
{
|
||||
var actualSale = new ActualSale();
|
||||
//Get the ID number of the ad item.
|
||||
AdItem adItem;
|
||||
var adItemId = 0;
|
||||
var spam = TextFormat.FormatAdItemText(actualSales.Rows[rowIndex][0].ToString());
|
||||
if (db.AdItems.Any(x => x.Name == spam))
|
||||
{
|
||||
//Exists
|
||||
adItem = db.AdItems.First(x => x.Name == spam);
|
||||
var adItem = db.AdItems.First(x => x.Name == spam);
|
||||
adItemId = adItem.Id;
|
||||
}
|
||||
//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.FkAdItemId = adItemId;
|
||||
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.FkDateId = date.Id; //db.WeekEndingDates.First(x => x.Id == dateId);
|
||||
//oleDbCommand.Parameters.AddWithValue("Sold", actualSales.Rows[rowIndex][1]);
|
||||
@@ -472,6 +464,30 @@ namespace AdvertsingProfitControl
|
||||
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)
|
||||
{
|
||||
var supplier = new Supplier();
|
||||
|
||||
+63
-34
@@ -36,10 +36,14 @@
|
||||
this.recordsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.addRecordsToolStripMenuItem = 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.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.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.showHideConsoleHelpMainMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.dbVersionHelpMainMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
@@ -104,7 +108,6 @@
|
||||
this.grossProfitEstimatedWeeklyDeptmartmentExpenseLabel = new System.Windows.Forms.Label();
|
||||
this.perfectGrossProfitLabel = new System.Windows.Forms.Label();
|
||||
this.grossProfitDollarGrossProfitLabel = new System.Windows.Forms.Label();
|
||||
this.reportsMainMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mainMenu.SuspendLayout();
|
||||
this.mainTableLayoutPanel.SuspendLayout();
|
||||
this.commentMainTableLayoutPanel.SuspendLayout();
|
||||
@@ -186,46 +189,76 @@
|
||||
this.addRecordsToolStripMenuItem.Name = "addRecordsToolStripMenuItem";
|
||||
this.addRecordsToolStripMenuItem.Size = new System.Drawing.Size(323, 34);
|
||||
this.addRecordsToolStripMenuItem.Text = "&Add New Record";
|
||||
this.addRecordsToolStripMenuItem.Click += new System.EventHandler(this.addRecordToolStripMenuItem_Click);
|
||||
this.addRecordsToolStripMenuItem.Click += new System.EventHandler(this.DisplayNewRecordForm);
|
||||
//
|
||||
// modifyRecordMainMenu
|
||||
//
|
||||
this.modifyRecordMainMenu.Name = "modifyRecordMainMenu";
|
||||
this.modifyRecordMainMenu.Size = new System.Drawing.Size(323, 34);
|
||||
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
|
||||
//
|
||||
this.toolsMainMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.clearSelectedDateToolsMainMenu,
|
||||
this.clearRecordToolsMainMenu,
|
||||
this.manageItemsToolsMainMenu,
|
||||
this.manageSuppliersToolsMainMenu,
|
||||
this.adSpecialKeyWordsToolsMainMenu});
|
||||
this.toolsMainMenu.Name = "toolsMainMenu";
|
||||
this.toolsMainMenu.Size = new System.Drawing.Size(72, 34);
|
||||
this.toolsMainMenu.Text = "&Tools";
|
||||
//
|
||||
// adSpecialKeyWordsToolsMainMenu
|
||||
// clearRecordToolsMainMenu
|
||||
//
|
||||
this.adSpecialKeyWordsToolsMainMenu.Name = "adSpecialKeyWordsToolsMainMenu";
|
||||
this.adSpecialKeyWordsToolsMainMenu.Size = new System.Drawing.Size(286, 34);
|
||||
this.adSpecialKeyWordsToolsMainMenu.Text = "&Register Ad Special";
|
||||
this.adSpecialKeyWordsToolsMainMenu.Click += new System.EventHandler(this.adSpecialKeyWordsToolsMainMenu_Click);
|
||||
this.clearRecordToolsMainMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.clearCurrentRecordSelectedDateToolsMainMenu,
|
||||
this.selectRangeToolStripMenuItem});
|
||||
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
|
||||
//
|
||||
this.manageItemsToolsMainMenu.Name = "manageItemsToolsMainMenu";
|
||||
this.manageItemsToolsMainMenu.Size = new System.Drawing.Size(286, 34);
|
||||
this.manageItemsToolsMainMenu.Text = "&Manage Ad Items";
|
||||
this.manageItemsToolsMainMenu.Visible = false;
|
||||
this.manageItemsToolsMainMenu.Click += new System.EventHandler(this.manageItemsToolsMainMenu_Click);
|
||||
this.manageItemsToolsMainMenu.Size = new System.Drawing.Size(282, 34);
|
||||
this.manageItemsToolsMainMenu.Text = "Manage Ad &Items";
|
||||
this.manageItemsToolsMainMenu.Click += new System.EventHandler(this.DisplayAdItemManager);
|
||||
//
|
||||
// clearSelectedDateToolsMainMenu
|
||||
// manageSuppliersToolsMainMenu
|
||||
//
|
||||
this.clearSelectedDateToolsMainMenu.Name = "clearSelectedDateToolsMainMenu";
|
||||
this.clearSelectedDateToolsMainMenu.Size = new System.Drawing.Size(286, 34);
|
||||
this.clearSelectedDateToolsMainMenu.Text = "&Clear Selected Date";
|
||||
this.clearSelectedDateToolsMainMenu.Click += new System.EventHandler(this.clearSelectedDateToolsMainMenu_Click);
|
||||
this.manageSuppliersToolsMainMenu.Name = "manageSuppliersToolsMainMenu";
|
||||
this.manageSuppliersToolsMainMenu.Size = new System.Drawing.Size(286, 34);
|
||||
this.manageSuppliersToolsMainMenu.Text = "Manage &Suppliers";
|
||||
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
|
||||
//
|
||||
@@ -240,15 +273,15 @@
|
||||
//
|
||||
this.showHideConsoleHelpMainMenu.Name = "showHideConsoleHelpMainMenu";
|
||||
this.showHideConsoleHelpMainMenu.Size = new System.Drawing.Size(304, 34);
|
||||
this.showHideConsoleHelpMainMenu.Text = "&Show/Hide Console";
|
||||
this.showHideConsoleHelpMainMenu.Click += new System.EventHandler(this.showHideConsoleHelpMainMenu_Click);
|
||||
this.showHideConsoleHelpMainMenu.Text = "Sh&ow/Hide Console";
|
||||
this.showHideConsoleHelpMainMenu.Click += new System.EventHandler(this.ShowHideLogConsole);
|
||||
//
|
||||
// dbVersionHelpMainMenu
|
||||
//
|
||||
this.dbVersionHelpMainMenu.Name = "dbVersionHelpMainMenu";
|
||||
this.dbVersionHelpMainMenu.Size = new System.Drawing.Size(304, 34);
|
||||
this.dbVersionHelpMainMenu.Text = "Get &Database Version";
|
||||
this.dbVersionHelpMainMenu.Click += new System.EventHandler(this.dbVersionHelpMainMenu_Click);
|
||||
this.dbVersionHelpMainMenu.Click += new System.EventHandler(this.DisplayDatabaseVersionNumber);
|
||||
//
|
||||
// debugMainMenu
|
||||
//
|
||||
@@ -266,21 +299,21 @@
|
||||
this.rawViewDebugMainMenu.Name = "rawViewDebugMainMenu";
|
||||
this.rawViewDebugMainMenu.Size = new System.Drawing.Size(270, 34);
|
||||
this.rawViewDebugMainMenu.Text = "Raw View";
|
||||
this.rawViewDebugMainMenu.Click += new System.EventHandler(this.rawViewDebugMainMenu_Click);
|
||||
this.rawViewDebugMainMenu.Click += new System.EventHandler(this.DisplayRawDatabaseView);
|
||||
//
|
||||
// migrateDatabaseDebugMainMenu
|
||||
//
|
||||
this.migrateDatabaseDebugMainMenu.Name = "migrateDatabaseDebugMainMenu";
|
||||
this.migrateDatabaseDebugMainMenu.Size = new System.Drawing.Size(270, 34);
|
||||
this.migrateDatabaseDebugMainMenu.Text = "Migrate Database";
|
||||
this.migrateDatabaseDebugMainMenu.Click += new System.EventHandler(this.debugToolStripMenuItem1_Click);
|
||||
this.migrateDatabaseDebugMainMenu.Click += new System.EventHandler(this.DisplayDebugTool);
|
||||
//
|
||||
// addRecordToolStripMenuItem
|
||||
//
|
||||
this.addRecordToolStripMenuItem.Name = "addRecordToolStripMenuItem";
|
||||
this.addRecordToolStripMenuItem.Size = new System.Drawing.Size(270, 34);
|
||||
this.addRecordToolStripMenuItem.Text = "Add Record";
|
||||
this.addRecordToolStripMenuItem.Click += new System.EventHandler(this.addRecordToolStripMenuItem_Click_1);
|
||||
this.addRecordToolStripMenuItem.Click += new System.EventHandler(this.DisplayLegacyAddRecord);
|
||||
//
|
||||
// mainTableLayoutPanel
|
||||
//
|
||||
@@ -946,13 +979,6 @@
|
||||
this.grossProfitDollarGrossProfitLabel.TabIndex = 2;
|
||||
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
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(168F, 168F);
|
||||
@@ -1073,10 +1099,13 @@
|
||||
private System.Windows.Forms.DataGridView invoicesDataGridView;
|
||||
private System.Windows.Forms.ToolStripMenuItem debugMainMenu;
|
||||
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 rawViewDebugMainMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem reportsMainMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem manageSuppliersToolsMainMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem clearCurrentRecordSelectedDateToolsMainMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem selectRangeToolStripMenuItem;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+170
-142
@@ -4,7 +4,6 @@ using System.Drawing;
|
||||
using System.Drawing.Printing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Transactions;
|
||||
using System.Windows.Forms;
|
||||
|
||||
@@ -41,12 +40,10 @@ namespace AdvertsingProfitControl
|
||||
LoadDate(recentDate.EndingDate);
|
||||
}
|
||||
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)
|
||||
{
|
||||
if (actualSalesDataGridView.Rows.Count == 0)
|
||||
@@ -128,7 +125,11 @@ namespace AdvertsingProfitControl
|
||||
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 form = new NewModifyRecord();
|
||||
@@ -142,7 +143,119 @@ namespace AdvertsingProfitControl
|
||||
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)
|
||||
{
|
||||
@@ -154,23 +267,7 @@ namespace AdvertsingProfitControl
|
||||
}
|
||||
}
|
||||
|
||||
private void modifyRecordMainMenu_Click(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)
|
||||
private void DisplayDatabaseVersionNumber(object sender, EventArgs e)
|
||||
{
|
||||
var db = new AdvertisingProfitControlModel();
|
||||
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);
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Print Handler Methods
|
||||
|
||||
private void PrintPage(object sender, PrintPageEventArgs e)
|
||||
{
|
||||
@@ -264,9 +364,12 @@ namespace AdvertsingProfitControl
|
||||
printDialog.Document = new PrintDocument();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region DataGridView Constructor Methods
|
||||
|
||||
/// <summary>
|
||||
/// Fills the APC DataGridViews with the appropriate columns and starting row for the user to start
|
||||
/// entering data.
|
||||
/// Builds the appropriate columns in the APC DataGridViews so they can be filled.
|
||||
/// </summary>
|
||||
private void ConstructApcDataGridViews()
|
||||
{
|
||||
@@ -346,9 +449,14 @@ namespace AdvertsingProfitControl
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Date Loading Methods
|
||||
|
||||
private void LoadDate(DateTime date)
|
||||
{
|
||||
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);
|
||||
if (dateRecord == null)
|
||||
{
|
||||
@@ -356,6 +464,7 @@ namespace AdvertsingProfitControl
|
||||
return;
|
||||
}
|
||||
ClearForm();
|
||||
//Load all the data attached to the date record.
|
||||
LoadProjectionsTable(dateRecord);
|
||||
LoadInventoryTable(dateRecord);
|
||||
LoadActualSalesTable(dateRecord);
|
||||
@@ -405,15 +514,13 @@ namespace AdvertsingProfitControl
|
||||
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.
|
||||
adSpecialIndex = index;
|
||||
projectionsDataGridView.Rows.Insert(index, 1);
|
||||
projectionsDataGridView.Rows[index].DefaultCellStyle.BackColor = ApplicationColors.AdSpecial;
|
||||
projectionsDataGridView.Rows[index].Cells[3].Value = db.AdSpecials.Single(x => x.Id == p.FkAdSpecialId).Name;
|
||||
}
|
||||
}
|
||||
//Now add the totals row.
|
||||
if (projectionsDataGridView.RowCount == 0) return;
|
||||
var totalsRow = new DataGridViewRow();
|
||||
@@ -461,15 +568,13 @@ namespace AdvertsingProfitControl
|
||||
inventoryDataGridView.Rows[index].DefaultCellStyle.BackColor = ApplicationColors.MemberRow;
|
||||
}
|
||||
|
||||
if (i.FkAdSpecialId != null && adSpecialIndex == -1)
|
||||
{
|
||||
if (i.FkAdSpecialId == null || adSpecialIndex != -1) continue;
|
||||
adSpecialIndex = index;
|
||||
inventoryDataGridView.Rows.Insert(index, 1);
|
||||
inventoryDataGridView.Rows[index].DefaultCellStyle.BackColor = ApplicationColors.AdSpecial;
|
||||
inventoryDataGridView.Rows[index].Cells[2].Value = db.AdSpecials.Single(x => x.Id == i.FkAdSpecialId).Name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void LoadActualSalesTable(WeekEndingDate dateRecord)
|
||||
{
|
||||
@@ -501,14 +606,12 @@ namespace AdvertsingProfitControl
|
||||
actualSalesDataGridView.Rows[index].DefaultCellStyle.BackColor = ApplicationColors.MemberRow;
|
||||
}
|
||||
|
||||
if (a.FkAdSpecialId != null && adSpecialIndex == -1)
|
||||
{
|
||||
if (a.FkAdSpecialId == null || adSpecialIndex != -1) continue;
|
||||
adSpecialIndex = index;
|
||||
actualSalesDataGridView.Rows.Insert(index, 1);
|
||||
actualSalesDataGridView.Rows[index].DefaultCellStyle.BackColor = ApplicationColors.AdSpecial;
|
||||
actualSalesDataGridView.Rows[index].Cells[3].Value = db.AdSpecials.Single(x => x.Id == a.FkAdSpecialId).Name;
|
||||
}
|
||||
}
|
||||
//Now add the totals row.
|
||||
if (actualSalesDataGridView.RowCount == 0) return;
|
||||
var totalsRow = new DataGridViewRow();
|
||||
@@ -665,6 +768,8 @@ namespace AdvertsingProfitControl
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private string CheckForHoliday(DayOfWeek day)
|
||||
{
|
||||
var holidayText = string.Empty;
|
||||
@@ -709,6 +814,13 @@ namespace AdvertsingProfitControl
|
||||
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)
|
||||
{
|
||||
if (e.Start == _currentActiveDate || !monthCalendar.BoldedDates.Contains(e.Start)) return;
|
||||
@@ -762,13 +874,6 @@ namespace AdvertsingProfitControl
|
||||
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()
|
||||
{
|
||||
var db = new AdvertisingProfitControlModel();
|
||||
@@ -776,129 +881,52 @@ namespace AdvertsingProfitControl
|
||||
if (monthCalendar.BoldedDates.Length > 0)
|
||||
{
|
||||
modifyRecordMainMenu.Enabled = true;
|
||||
modifyRecordMainMenu.ToolTipText = @"";
|
||||
modifyRecordMainMenu.ToolTipText = string.Empty;
|
||||
clearCurrentRecordSelectedDateToolsMainMenu.Enabled = true;
|
||||
clearCurrentRecordSelectedDateToolsMainMenu.ToolTipText = string.Empty;
|
||||
}
|
||||
else
|
||||
{
|
||||
dateTimeGroupBox.Text = @"No records found in the database.";
|
||||
modifyRecordMainMenu.Enabled = false;
|
||||
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)
|
||||
{
|
||||
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;
|
||||
}
|
||||
#endregion
|
||||
|
||||
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);
|
||||
#region Debug Tool Menu Items
|
||||
|
||||
using (var scope = new TransactionScope())
|
||||
private void DisplayDebugTool(object sender, EventArgs e)
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
var form = new DebugDatabaseConverter();
|
||||
form.ShowDialog();
|
||||
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();
|
||||
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)
|
||||
{
|
||||
var form = new FrmRegisterAdSpecial();
|
||||
form.ShowDialog();
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
//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
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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
@@ -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
@@ -41,10 +41,10 @@
|
||||
// registerAdSpecialButton
|
||||
//
|
||||
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.Size = new System.Drawing.Size(200, 50);
|
||||
this.registerAdSpecialButton.TabIndex = 0;
|
||||
this.registerAdSpecialButton.TabIndex = 3;
|
||||
this.registerAdSpecialButton.Text = "Register Ad Special";
|
||||
this.registerAdSpecialButton.UseVisualStyleBackColor = true;
|
||||
this.registerAdSpecialButton.Click += new System.EventHandler(this.RegisterNewAdSpecial);
|
||||
@@ -52,10 +52,10 @@
|
||||
// deleteAdSpecialButton
|
||||
//
|
||||
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.Size = new System.Drawing.Size(200, 50);
|
||||
this.deleteAdSpecialButton.TabIndex = 2;
|
||||
this.deleteAdSpecialButton.TabIndex = 4;
|
||||
this.deleteAdSpecialButton.Text = "Remove Ad Special";
|
||||
this.deleteAdSpecialButton.UseVisualStyleBackColor = true;
|
||||
this.deleteAdSpecialButton.Click += new System.EventHandler(this.deleteAdSpecialButton_Click);
|
||||
@@ -72,18 +72,18 @@
|
||||
// newAdSpecialTextBox
|
||||
//
|
||||
this.newAdSpecialTextBox.Location = new System.Drawing.Point(17, 54);
|
||||
this.newAdSpecialTextBox.MaxLength = 32;
|
||||
this.newAdSpecialTextBox.Name = "newAdSpecialTextBox";
|
||||
this.newAdSpecialTextBox.Size = new System.Drawing.Size(228, 29);
|
||||
this.newAdSpecialTextBox.TabIndex = 4;
|
||||
this.newAdSpecialTextBox.TabIndex = 1;
|
||||
//
|
||||
// informationLabel
|
||||
//
|
||||
this.informationLabel.AutoSize = true;
|
||||
this.informationLabel.Location = new System.Drawing.Point(17, 171);
|
||||
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.Text = "label1";
|
||||
//
|
||||
// adSpecialDescription
|
||||
//
|
||||
@@ -97,17 +97,19 @@
|
||||
// descriptionTextBox
|
||||
//
|
||||
this.descriptionTextBox.Location = new System.Drawing.Point(17, 124);
|
||||
this.descriptionTextBox.MaxLength = 128;
|
||||
this.descriptionTextBox.Name = "descriptionTextBox";
|
||||
this.descriptionTextBox.Size = new System.Drawing.Size(228, 29);
|
||||
this.descriptionTextBox.TabIndex = 7;
|
||||
this.descriptionTextBox.TabIndex = 2;
|
||||
//
|
||||
// adSpecialsListBox
|
||||
//
|
||||
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.Size = new System.Drawing.Size(420, 401);
|
||||
this.adSpecialsListBox.TabIndex = 8;
|
||||
this.adSpecialsListBox.TabStop = false;
|
||||
this.adSpecialsListBox.UseCompatibleStateImageBehavior = false;
|
||||
this.adSpecialsListBox.View = System.Windows.Forms.View.Details;
|
||||
//
|
||||
@@ -115,7 +117,7 @@
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F);
|
||||
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.descriptionTextBox);
|
||||
this.Controls.Add(this.adSpecialDescription);
|
||||
|
||||
@@ -1,19 +1,13 @@
|
||||
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 FrmRegisterAdSpecial : Form
|
||||
{
|
||||
private readonly ToolTip _tt = new ToolTip();
|
||||
private bool _isUpdating;
|
||||
|
||||
public FrmRegisterAdSpecial()
|
||||
@@ -24,10 +18,9 @@ namespace AdvertsingProfitControl
|
||||
{
|
||||
Name = "AdSpecialsHeaderColumn",
|
||||
Text = @"Current Ad Special Grouping Keywords:",
|
||||
Width = adSpecialsListBox.Width - 5
|
||||
Width = Width / 2
|
||||
};
|
||||
adSpecialsListBox.Columns.Add(columnHeader);
|
||||
adSpecialsListBox.MouseMove += OnMouseMove;
|
||||
adSpecialsListBox.ItemSelectionChanged += UpdateAdSpecialTextBoxes;
|
||||
RefreshAdSpecialListing();
|
||||
}
|
||||
@@ -39,6 +32,7 @@ namespace AdvertsingProfitControl
|
||||
_isUpdating = true;
|
||||
deleteAdSpecialButton.Enabled = true;
|
||||
registerAdSpecialButton.Text = @"Update Ad Special";
|
||||
newAdSpecialLabel.Text = @"Update Ad Special:";
|
||||
}
|
||||
|
||||
private void NewAdSpecialTextChanged(object sender, EventArgs e)
|
||||
@@ -48,6 +42,7 @@ namespace AdvertsingProfitControl
|
||||
_isUpdating = false;
|
||||
descriptionTextBox.Text = string.Empty;
|
||||
registerAdSpecialButton.Text = @"Register Ad Special";
|
||||
newAdSpecialLabel.Text = @"Register New Ad Special:";
|
||||
}
|
||||
registerAdSpecialButton.Enabled = newAdSpecialTextBox.Text.Length > 0;
|
||||
}
|
||||
@@ -101,24 +96,11 @@ namespace AdvertsingProfitControl
|
||||
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()
|
||||
{
|
||||
adSpecialsListBox.Items.Clear();
|
||||
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)
|
||||
{
|
||||
var item = new ListViewItem
|
||||
@@ -135,15 +117,57 @@ namespace AdvertsingProfitControl
|
||||
|
||||
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 adSpecial = (AdSpecial) item.Tag;
|
||||
var db = new AdvertisingProfitControlModel();
|
||||
var ad = db.AdSpecials.Single(x => x.Id == adSpecial.Id);
|
||||
//Check to see if the ad special is used by other tables.
|
||||
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();
|
||||
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
|
||||
Reference in New Issue
Block a user