Initial population

This commit is contained in:
Jon
2026-03-07 19:22:22 -06:00
parent 647f55feb9
commit cae1a3ec46
108 changed files with 28484 additions and 0 deletions

View File

@@ -0,0 +1,295 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Net.Security;
using System.Text;
using System.Threading.Tasks;
namespace JRCookbookBusiness
{
public enum RecipeIngredientLinkType
{
Unlinked,
Ingredient,
NoLink
}
public class RecipeIngredient: ICloneable
{
public Guid? recipeIngredientID = null;
public Guid? recipeID = null;
public Int32 ingredientIndex = 0;
public String ingredientText = String.Empty;
private bool _isHeading = false;
public RecipeIngredientLinkType linkType = RecipeIngredientLinkType.Unlinked;
private static SortedList<String, IngredientSkipSearchWord> ingredientSkipWords = null;
public bool isHeading
{
get
{
return (this is RecipeIngredientHeading);
}
}
internal string linkTypeAsString
{
get
{
return Enum.GetName(typeof(RecipeIngredientLinkType), linkType);
}
}
public RecipeIngredientHeading ConvertToHeading()
{
if (isHeading)
{
return (RecipeIngredientHeading)this;
}
else
{
RecipeIngredientHeading temp = new RecipeIngredientHeading();
temp.recipeIngredientID = this.recipeIngredientID;
temp.recipeID = this.recipeID;
temp.ingredientIndex = this.ingredientIndex;
temp.ingredientText = this.ingredientText;
temp.linkType = RecipeIngredientLinkType.NoLink;
return temp;
}
}
public RecipeIngredientItem ConvertToItem()
{
if (!isHeading)
{
return (RecipeIngredientItem)this;
}
else
{
RecipeIngredientItem temp = new RecipeIngredientItem();
temp.recipeIngredientID = this.recipeIngredientID;
temp.recipeID = this.recipeID;
temp.ingredientIndex = this.ingredientIndex;
temp.ingredientText = this.ingredientText;
temp.linkType = RecipeIngredientLinkType.Unlinked;
temp.linkQuality = 0;
return temp;
}
}
//protected RecipeIngredient()
//{
//}
public void PasteIntoChapter(Guid newRecipeID)
{
this.recipeIngredientID = null;
this.recipeID = newRecipeID;
}
public void Save()
{
if (this.recipeIngredientID == null)
{
this.recipeIngredientID = clsDatabaseLayer.GetDatabaseLayer().GetNewIDRecipeIngredient();
clsDatabaseLayer.GetDatabaseLayer().InsertRecipeIngredient(this);
}
else
{
clsDatabaseLayer.GetDatabaseLayer().UpdateRecipeIngredient(this);
}
}
public void Delete()
{
clsDatabaseLayer.GetDatabaseLayer().DeleteRecipeIngredientByID(recipeIngredientID.Value);
}
public static void DeleteAllByRecipeID(Guid recipeID)
{
clsDatabaseLayer.GetDatabaseLayer().DeleteRecipeIngredientsByRecipeID(recipeID);
}
public static RecipeIngredient GetRecipeIngredientByID(Guid recipeIngredientID)
{
DataSet recordSet;
recordSet = clsDatabaseLayer.GetDatabaseLayer().GetRecipeIngredientByID(recipeIngredientID);
var row = recordSet.Tables[0].Rows[0];
return GetRecipeIngredientByDataRow(row);
}
internal static RecipeIngredient GetRecipeIngredientByDataRow(DataRow recipeIngredientDataRow)
{
if (recipeIngredientDataRow["Heading"].ToString() == "Y")
{
var recipeIngredientHeading = new RecipeIngredientHeading();
recipeIngredientHeading.PopulateFromDataRow(recipeIngredientDataRow);
return recipeIngredientHeading;
}
else
{
var recipeIngredientItem = new RecipeIngredientItem();
recipeIngredientItem.PopulateFromDataRow(recipeIngredientDataRow);
return recipeIngredientItem;
}
}
internal virtual void PopulateFromDataRow(DataRow dataRow)
{
//initializing in child objects
if (dataRow.IsNull("recipeIngredientID"))
recipeIngredientID = null;
else
recipeIngredientID = (Guid)dataRow["recipeIngredientID"];
if (dataRow.IsNull("recipeID"))
recipeID = null;
else
recipeID = (Guid)dataRow["recipeID"];
if (dataRow.IsNull("ingredientindex"))
ingredientIndex = 0;
else
ingredientIndex = (Int32)dataRow["ingredientindex"];
if (dataRow.IsNull("ingredientText"))
ingredientText = String.Empty;
else
ingredientText = (String)dataRow["ingredientText"];
if (dataRow.IsNull("Heading"))
_isHeading = false;
else
_isHeading = (((String)dataRow["Heading"]).ToUpper() == "Y");
if (dataRow.IsNull("linkType"))
linkType = RecipeIngredientLinkType.Unlinked;
else
linkType = (RecipeIngredientLinkType)Enum.Parse(typeof(RecipeIngredientLinkType),(String)dataRow["linkType"]);
//Convert back to string
//String t = Enum.GetName(typeof(Roles), roleValue);
}
protected virtual void InitializeAllFields()
{
recipeIngredientID = null;
recipeID = null;
ingredientIndex = 0;
ingredientText = String.Empty;
_isHeading = false;
linkType = RecipeIngredientLinkType.Unlinked;
}
public static String NormalizeRecipeIngredientName(String strInputRecipeIngredientName)
{
LoadSkipWords();
strInputRecipeIngredientName = clsDiacriticRemover.RemoveDiacritics(strInputRecipeIngredientName).ToLower();
StringBuilder thisWord = new StringBuilder();
SortedList<String,String> allWords = new SortedList<String, String>();
foreach (var thisChar in strInputRecipeIngredientName)
{
if (thisChar >= 'a' && thisChar <= 'z')
{
thisWord.Append(thisChar);
}
else
{
if (thisWord.Length > 0)
{
String fullWord = thisWord.ToString();
if (!allWords.ContainsKey(fullWord))
{
allWords.Add(fullWord,fullWord);
}
thisWord.Clear();
}
}
}
if (thisWord.Length > 0)
{
String fullWord = thisWord.ToString();
if (!allWords.ContainsKey(fullWord))
{
allWords.Add(fullWord, fullWord);
}
thisWord.Clear();
}
StringBuilder normalizedName = new StringBuilder();
foreach (var wordToAdd in allWords.Values)
{
if (!ingredientSkipWords.ContainsKey(wordToAdd))
{
normalizedName.Append(wordToAdd);
normalizedName.Append(' ');
}
}
return normalizedName.ToString().Trim();
}
private static void LoadSkipWords()
{
if (ingredientSkipWords == null)
{
var ingredientSkipWordsUnsorted = IngredientSkipSearchWord.GetAllIngredientSkipSearchWords();
ingredientSkipWords = new SortedList<String, IngredientSkipSearchWord>();
foreach (var loadVal in ingredientSkipWordsUnsorted)
{
ingredientSkipWords.Add(loadVal.word, loadVal);
}
}
}
public static List<RecipeIngredient> GetRecipeIngredientAll()
{
List<RecipeIngredient> allIngredients = new List<RecipeIngredient>();
DataSet recordSet;
recordSet = clsDatabaseLayer.GetDatabaseLayer().GetRecipeIngredientAll();
foreach (DataRow row in recordSet.Tables[0].Rows)
{
var recipeIngredient = GetRecipeIngredientByDataRow(row);
if (recipeIngredient.isHeading == false)
{
if (((RecipeIngredientItem)recipeIngredient).ingredientID != null)
{
allIngredients.Add(recipeIngredient);
}
}
}
return allIngredients;
}
public object Clone()
{
return this.MemberwiseClone();
}
}
}