public IActionResult EditBread(int id) { List <RecipeItem> items = context.RecipeItems.Include(i => i.RecipeIngredient) .Include(y => y.RecipeMeasurement) .Where(x => x.Bread.ID == id) .ToList(); Bread theBread = context.Breads.Single(b => b.ID == id); EditBreadViewModel viewModel = new EditBreadViewModel { ID = theBread.ID, Name = theBread.Name, RecipeItems = items, Instructions = theBread.Instructions, BakeTime = theBread.BakeTime, BakeTemp = theBread.BakeTemp, FermentTime = theBread.FermentTime, ProofTime = theBread.ProofTime }; TempData.Keep(); return(View(viewModel)); }
public IActionResult EditBread(EditBreadViewModel editBreadViewModel) { if (ModelState.IsValid) { //holds the list of recipe items from viewmodel List <RecipeItem> items = context.RecipeItems.Include(i => i.RecipeIngredient).Include(y => y.RecipeMeasurement).Where(x => x.Bread.ID == editBreadViewModel.ID).ToList(); Bread theBread = context.Breads.Single(b => b.ID == editBreadViewModel.ID); List <RecipeItem> recipeItems = editBreadViewModel.RecipeItems.ToList(); theBread.Name = editBreadViewModel.Name; theBread.Instructions = editBreadViewModel.Instructions; theBread.BakeTemp = editBreadViewModel.BakeTemp; theBread.BakeTime = editBreadViewModel.BakeTime; theBread.FermentTime = editBreadViewModel.FermentTime; theBread.ProofTime = editBreadViewModel.ProofTime; context.Breads.Update(theBread); //updates the recipe item, ingredient, and measurement //currently creating new database entries for ingredient and measurement //needs to update database entries instead of creating new entries for (var i = 0; i < items.Count; i++) { items[i].RecipeIngredient.Name = recipeItems[i].RecipeIngredient.Name; items[i].RecipeMeasurement.Value = recipeItems[i].RecipeMeasurement.Value; items[i].RecipeMeasurement.Unit = recipeItems[i].RecipeMeasurement.Unit; context.RecipeItems.Update(items[i]); } context.SaveChanges(); TempData.Keep(); return(RedirectToAction($"/ViewBread/{editBreadViewModel.ID}")); } return(View(editBreadViewModel)); }