public static bool AddRecipe(string shawarmaName, IngradientWeight[] ingradientWeightAccordings, int cookingTime = 0) { using (var ctx = new ShawarmaDBEntities()) { Shawarma shawarma = ctx.Shawarmas.FirstOrDefault(sh => sh.ShawarmaName == shawarmaName) ?? new Shawarma { ShawarmaName = shawarmaName, CookingTime = cookingTime }; ShawarmaRecipe recipe = ctx.ShawarmaRecipes.Create(); recipe.Shawarma = shawarma; foreach (var ingradientWeightAccording in ingradientWeightAccordings) { Ingradient ingradient = ctx.Ingradients.FirstOrDefault( ing => ing.IngradientName == ingradientWeightAccording.IngradientName); if (ingradient == null) { AddIngredient(ingradientWeightAccording.IngradientName, 0); ingradient = ctx.Ingradients.FirstOrDefault( ing => ing.IngradientName == ingradientWeightAccording.IngradientName); } recipe.IngradientId = ingradient.IngradientId; recipe.Weight = ingradientWeightAccording.Weight; ctx.ShawarmaRecipes.Add(recipe); } return(Commit(ctx)); } }
public static bool AddIngredient(string name, int weight, string categoryName = "") { using (var ctx = new ShawarmaDBEntities()) { Ingradient ingradient = ctx.Ingradients.FirstOrDefault(ingr => ingr.IngradientName == name); if (ingradient != null) //there is specified ingradient; increasing { ingradient.TotalWeight += weight; } else { if (categoryName != "") { IngradientCategory category = ctx.IngradientCategories.FirstOrDefault(ingr => ingr.CategoryName == categoryName); if (category == null)//there is not specified category; creating { ctx.IngradientCategories.Add(new IngradientCategory { CategoryName = categoryName }); category = ctx.IngradientCategories.Local.First(cat => cat.CategoryName == categoryName); } ctx.Ingradients.Add(new Ingradient { CategoryId = category.CategoryId, IngradientName = name, TotalWeight = weight }); } else { ctx.Ingradients.Add(new Ingradient { IngradientName = name, TotalWeight = weight }); } } return(Commit(ctx)); } }