public async Task <IActionResult> Show(string id) { var recipes = from m in _context.MyRecipe join n in _context.MyRecipe_Ingredient on m.Id equals n.R_id join o in _context.Ingredient on n.I_id equals o.Id join p in _context.MyRecipe_Seasoning on m.Id equals p.R_id join q in _context.Seasoning on p.S_id equals q.Id orderby m.Name, o.Name, q.Name select new { MyRecipe = m, Ingred = o, InWeight = n.Weight, Season = q, SeWeight = p.Weight }; if (!String.IsNullOrEmpty(id)) { recipes = recipes.Where(m => m.MyRecipe.Name.Contains(id)); } recipes = recipes.OrderBy(m => m.Ingred.Name).OrderBy(m => m.MyRecipe.Name); var tmp = await recipes.ToListAsync(); List <RecipeDetails> lrd = new List <RecipeDetails>(); foreach (var item in tmp) { int rid = item.MyRecipe.Id; RecipeDetails rd = (lrd.Count > 0) ? lrd.ElementAt(lrd.Count - 1) : null; if (rd != null && rd.MyRecipe.Id == rid) { Ingredient_W cew = new Ingredient_W { Ingredient = item.Ingred, Weight = item.InWeight }; rd.I_common.Add(cew); rd.Total_calories += item.Ingred.Calories * item.InWeight; Seasoning_W sew = new Seasoning_W { Seasoning = item.Season, Weight = item.SeWeight }; rd.S_common.Add(sew); rd.Total_calories += item.Season.Calories * item.SeWeight; } else { List <Ingredient_W> my_lce = new List <Ingredient_W>(); Ingredient_W cew = new Ingredient_W { Ingredient = item.Ingred, Weight = item.InWeight }; my_lce.Add(cew); List <Seasoning_W> my_lse = new List <Seasoning_W>(); Seasoning_W sew = new Seasoning_W { Seasoning = item.Season, Weight = item.SeWeight }; my_lse.Add(sew); rd = new RecipeDetails { MyRecipe = item.MyRecipe, I_common = my_lce, S_common = my_lse }; rd.Total_calories += item.Ingred.Calories * item.InWeight; rd.Total_calories += item.Season.Calories * item.SeWeight; lrd.Add(rd); } } ViewData["TypesArray"] = new string[] { "Ingredient", "Seasoning" }; return(View(lrd)); }
public async Task <IActionResult> Show(string id) { var recipes = from m in _context.MyRecipe join n in _context.MyRecipe_Ingredient on m.Id equals n.R_id join o in _context.Ingredient on n.I_id equals o.Id join rec_seasoning in _context.MyRecipe_Seasoning on m.Id equals rec_seasoning.R_id join s in _context.Seasoning on rec_seasoning.S_id equals s.Id orderby m.Name, o.Name select new { MyRecipe = m, Element = o, Seasoning = s, n.Weight, w2 = rec_seasoning.Weight }; if (!String.IsNullOrEmpty(id)) { recipes = recipes.Where(m => m.MyRecipe.Name.Contains(id)); } recipes = recipes.OrderBy(m => m.Element.Name).OrderBy(m => m.MyRecipe.Name); var tmp = await recipes.ToListAsync(); List <RecipeDetails> lrd = new List <RecipeDetails>(); List <int> seasonIds = new List <int>(); foreach (var item in tmp) { Trace.Write(item.Seasoning.ToString()); int rid = item.MyRecipe.Id; RecipeDetails rd = (lrd.Count > 0) ? lrd.ElementAt(lrd.Count - 1) : null; if (rd != null && rd.MyRecipe.Id == rid) { Ingredient_W cew = new Ingredient_W { Ingredient = item.Element, Weight = item.Weight }; rd.I_common.Add(cew); if (seasonIds.Contains(item.Seasoning.Id)) { Seasoning_W sew = new Seasoning_W { Seasoning = item.Seasoning, Weight = item.w2 }; rd.S_common.Add(sew); rd.Total_calories += item.Element.Calories * item.Weight + item.Seasoning.Calories * item.w2; seasonIds.Add(item.Seasoning.Id); } } else { List <Ingredient_W> my_lce = new List <Ingredient_W>(); Ingredient_W cew = new Ingredient_W { Ingredient = item.Element, Weight = item.Weight }; my_lce.Add(cew); List <Seasoning_W> my_sew = new List <Seasoning_W>(); Seasoning_W sew = new Seasoning_W { Seasoning = item.Seasoning, Weight = item.w2 }; my_sew.Add(sew); rd = new RecipeDetails { MyRecipe = item.MyRecipe, I_common = my_lce, S_common = my_sew }; rd.Total_calories += item.Element.Calories * item.Weight + item.Seasoning.Calories * item.w2; lrd.Add(rd); } } ViewData["TypesArray"] = new string[] { "Ingredient", "Seasoning" }; return(View(lrd)); }