Marked as 'AdvertsingProfitControl v 0.9.5' by its folder name. Renamed some database class files, and added a new form to modify existing records.

This commit is contained in:
2021-01-28 19:56:28 -06:00
parent 4c01f4ba46
commit 665f4784e4
74 changed files with 65336 additions and 306 deletions
+49 -25
View File
@@ -6,22 +6,23 @@ using System.Linq;
namespace AdvertsingProfitControl
{
class RowParsing
internal class RowParsing
{
public static List<string> AdSpecialGroups = new List<string>();
public string CheckForGroupKeyWord(string cellContents)
{
string[] weekendAdIdentifiers = {"Weekend Ad", "Valentines", "Affiliated Weekend Ad", "Daily Coupons", "New Years Ad", "Christmas", "Mother's Day"};
var keyWord = "NoGroupFound";
var query = from adI in weekendAdIdentifiers
var query = from adI in AdSpecialGroups
where adI.Equals(cellContents, StringComparison.InvariantCultureIgnoreCase)
select adI;
if (query.ToArray().Length > 0)
var enumerable = query as string[] ?? query.ToArray();
if (enumerable.ToArray().Length > 0)
{
//Grab the first object in the array and return it.
keyWord = query.ToArray().First();
keyWord = enumerable.ToArray().First();
}
return keyWord;
@@ -31,27 +32,28 @@ namespace AdvertsingProfitControl
/// </summary>
/// <param name="row">The row from a DataGridView object to be examined.</param>
/// <returns>The row's status, such as HeaderRow or NewRow.</returns>
public string GetRowAttribute(DataGridViewRow row)
public RowAttribute GetRowAttribute(DataGridViewRow row)
{
//IF the supplied row is null, then simply declare it an IncompleteRow.
if (row == null)
{
return "IncompleteRow";
return RowAttribute.IncompleteRow;
}
//IF the supplied row is a new row, by the definition of the DataGridViewRow class, then return NewRow.
if (row.IsNewRow)
{
return "NewRow";
return RowAttribute.NewRow;
}
var rowContents = new List<string>();
var rowAttribute = "MemberRow";
var rowAttribute = RowAttribute.MemberRow;
//Get the contents of the row that's being examined and add then to a List<string> array.
var i = 0;
foreach (DataGridViewCell cell in row.Cells)
{
if (cell.ColumnIndex >= (int) SalesTableColumns.IsHeaderRow) { i++; continue;}
//Strip all whitespace characters from the cell, this includes vertical tabs, newlines, and any number of spaces.
string cellContentsStripped = new string(cell.EditedFormattedValue.ToString().Where(c => !char.IsWhiteSpace(c)).ToArray());
var cellContentsStripped = new string(cell.EditedFormattedValue.ToString().Where(c => !char.IsWhiteSpace(c)).ToArray());
//Now remove all zeros, including any decimal points as these values are meaningless.
cellContentsStripped = cellContentsStripped.Replace("0", "");
cellContentsStripped = cellContentsStripped.Replace(".", "");
@@ -59,10 +61,10 @@ namespace AdvertsingProfitControl
{
rowContents.Add(cell.EditedFormattedValue.ToString());
}
//If the first cell contains nothing, than return as IncompleteRow.
else if (cellContentsStripped == "" && i == 0)
//If the first cell contains nothing, then return as IncompleteRow.
else if (cellContentsStripped == "" && i == (int) SalesTableColumns.AdItem)
{
return "IncompleteRow";
return RowAttribute.IncompleteRow;
}
i++;
}
@@ -71,24 +73,39 @@ namespace AdvertsingProfitControl
//cells with meaningful data in them. Which means that this row can be a header row with member rows under it.
if (rowContents.Count > 1)
{
rowAttribute = "HeaderRow";
rowAttribute = RowAttribute.HeaderRow;
}
else if (rowContents.Count == 1) //Check to see if this row is intended to be for a special ad.
{
var keyWord = "";
keyWord = CheckForGroupKeyWord(rowContents[0]);
var keyWord = CheckForGroupKeyWord(rowContents[0]);
//IF a keyword is found then declare this row an AdSpecialRow.
if (keyWord != "NoGroupFound")
{
return "AdSpecialRow";
return RowAttribute.AdSpecialRow;
}
}
return rowAttribute;
}
public RowAttribute GetRowAttribute(object[] row)
{
var rowAttribute = RowAttribute.MemberRow;
return rowAttribute;
}
public void PaintDataGridViewRowGroups(DataGridView dataGridView, DataGridView companionDataGridView = null, int startIndex = 0,
bool stopOnFirstFullGroupFound = false)
{
}
/// <summary>
/// Checks for the presents of a repeat command using the Regex engine.
/// Checks for the presents of a repeat command using the Reg-ex engine.
/// If a repeat command is found it returns the line number the command
/// specifies to repeat.
/// </summary>
@@ -96,18 +113,25 @@ namespace AdvertsingProfitControl
/// <returns>Line number to be repeated, -1 if no command is found.</returns>
public int CheckForRepeatCommand(string rowCommandField)
{
var repeatCommandPattern = @"^repeat( line)?:? [0-9]"; //Reference sheet: https://msdn.microsoft.com/en-us/library/az24scfc.aspx
const string repeatCommandPattern = @"^repeat( line)?:? [0-9]"; //Reference sheet: https://msdn.microsoft.com/en-us/library/az24scfc.aspx
var rgx = new Regex(repeatCommandPattern, RegexOptions.IgnoreCase);
var lineNumber = -1;
if (rgx.IsMatch(rowCommandField))
{
//Parse the string and retrieve the line number
var numbers = Regex.Split(rowCommandField, @"\D+");
if (!rgx.IsMatch(rowCommandField)) return lineNumber;
//Parse the string and retrieve the line number
var numbers = Regex.Split(rowCommandField, @"\D+");
lineNumber = int.Parse(numbers[1]);
}
lineNumber = int.Parse(numbers[1]);
return lineNumber;
}
}
public enum RowAttribute
{
NewRow = 0,
MemberRow = 1,
HeaderRow = 2,
AdSpecialRow = 3,
IncompleteRow = 4
}
}