Updated the table class files to allow a nullable ad special ID and changed the enum in the new modify record form to a boolean. Added a form to manage ad special keywords, still needs to handle removing them properly.

This commit is contained in:
2017-04-10 16:42:21 -05:00
parent d4d0a62eba
commit 09508aa16c
17 changed files with 594 additions and 86 deletions
@@ -0,0 +1,149 @@
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.Windows.Forms;
namespace AdvertsingProfitControl
{
public partial class FrmRegisterAdSpecial : Form
{
private readonly ToolTip _tt = new ToolTip();
private bool _isUpdating;
public FrmRegisterAdSpecial()
{
InitializeComponent();
newAdSpecialTextBox.TextChanged += NewAdSpecialTextChanged;
var columnHeader = new ColumnHeader
{
Name = "AdSpecialsHeaderColumn",
Text = @"Current Ad Special Grouping Keywords:",
Width = adSpecialsListBox.Width - 5
};
adSpecialsListBox.Columns.Add(columnHeader);
adSpecialsListBox.MouseMove += OnMouseMove;
adSpecialsListBox.ItemSelectionChanged += UpdateAdSpecialTextBoxes;
RefreshAdSpecialListing();
}
private void UpdateAdSpecialTextBoxes(object sender, ListViewItemSelectionChangedEventArgs e)
{
newAdSpecialTextBox.Text = ((AdSpecial) e.Item.Tag).Name;
descriptionTextBox.Text = ((AdSpecial) e.Item.Tag).Description;
_isUpdating = true;
deleteAdSpecialButton.Enabled = true;
registerAdSpecialButton.Text = @"Update Ad Special";
}
private void NewAdSpecialTextChanged(object sender, EventArgs e)
{
if (_isUpdating && newAdSpecialTextBox.Text.Length == 0)
{
_isUpdating = false;
descriptionTextBox.Text = string.Empty;
registerAdSpecialButton.Text = @"Register Ad Special";
}
registerAdSpecialButton.Enabled = newAdSpecialTextBox.Text.Length > 0;
}
private void RegisterNewAdSpecial(object sender, EventArgs e)
{
var db = new AdvertisingProfitControlModel();
if (!_isUpdating)
{
if (!db.AdSpecials.Any(x => x.Name == newAdSpecialTextBox.Text))
{
var adSpecial = new AdSpecial
{
Name = newAdSpecialTextBox.Text,
Description = descriptionTextBox.Text
};
db.AdSpecials.Add(adSpecial);
try
{
db.SaveChanges();
informationLabel.Text = @"Registered '" + Environment.NewLine + adSpecial.Name + Environment.NewLine + @"' successfully.";
}
catch (DbUpdateException ex)
{
informationLabel.Text = @"Failed to register '" + Environment.NewLine + adSpecial.Name + @"'." + Environment.NewLine +
ex.Message;
}
}
else
{
MessageBox.Show(@"Ad Special '" + newAdSpecialTextBox.Text + @"' already exists.",
@"Duplicate Entry", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
newAdSpecialTextBox.Text = string.Empty;
}
}
else
{
var item = adSpecialsListBox.SelectedItems[0];
var index = ((AdSpecial) item.Tag).Id;
var adSpecial = db.AdSpecials.SingleOrDefault(x => x.Id == index);
if (adSpecial == null)
{
informationLabel.Text = @"Failed to retrieve " + Environment.NewLine + @"ad special keyword ID.";
return;
}
adSpecial.Name = newAdSpecialTextBox.Text;
adSpecial.Description = descriptionTextBox.Text;
db.SaveChanges();
informationLabel.Text = @"Updated '" + Environment.NewLine + newAdSpecialTextBox.Text + Environment.NewLine + @"' successfully.";
}
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);
foreach (var adSpecial in adSpecials)
{
var item = new ListViewItem
{
Text = adSpecial.Name,
Tag = adSpecial
};
adSpecialsListBox.Items.Add(item);
}
deleteAdSpecialButton.Enabled = false;
newAdSpecialTextBox.Text = string.Empty;
descriptionTextBox.Text = string.Empty;
}
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);
db.AdSpecials.Remove(ad);
db.SaveChanges();
RefreshAdSpecialListing();
informationLabel.Text = @"Removed '" + Environment.NewLine + adSpecial.Name + Environment.NewLine + @"' successfully.";
}
}
}