public ActionResult New() { MealFormViewModel mealFVM = new MealFormViewModel(); mealFVM.Meal = new Meal(); mealFVM.ListRecipesForDropDown = _ctx.Recipe.ToList(); return(View("MealForm", mealFVM)); }
public ActionResult Edit(int id) { MealFormViewModel mealFVM = new MealFormViewModel(); mealFVM.Meal = GetMealById(id); mealFVM.ListRecipesId = new List <int>(); foreach (var rec in mealFVM.Meal.RecipeCollection) { mealFVM.ListRecipesId.Add(rec.Id); } mealFVM.ListRecipesForDropDown = _ctx.Recipe.ToList(); return(View("MealForm", mealFVM)); }
public ActionResult AddOrUpdate(MealFormViewModel mealFVM) { if (!ModelState.IsValid) { ViewBag.MessageError = "Il y a des erreurs dans le formulaire"; return(View("MealForm", mealFVM)); } int mealId = 0; if (mealFVM.Meal.Id > 0) { ////// Edit Mode var mealFromDb = GetMealById(mealFVM.Meal.Id); var listRecipeFromDb = mealFromDb.RecipeCollection; // on récupère les recettes envoyées par le formulaire List <Recipe> listRecipeFromForm = GetListRecipesByRecipeIdList(mealFVM.ListRecipesId); // Recette à supprimer List <Recipe> deletedRecipe = listRecipeFromDb.Except(listRecipeFromForm).ToList(); deletedRecipe.ForEach(r => listRecipeFromDb.Remove(r)); // Recette à ajouter List <Recipe> addedRecipe = listRecipeFromForm.Except(listRecipeFromDb).ToList(); addedRecipe.ForEach(r => listRecipeFromDb.Add(r)); // Mise à jour du repas mealFromDb.Name = mealFVM.Meal.Name; //GenerateRecipeName(mealFVM.Meal.Name, listRecipeFromForm, mealFVM.UpdateMealName); mealFromDb.NbServings = mealFVM.Meal.NbServings; _ctx.SaveChanges(); mealId = mealFromDb.Id; TempData["MessageSuccess"] = "Le repas a bien été modifié."; } else { ///// Add mode Meal newMeal = new Meal(); // on récupère les objets Recettes à partir des Id envoyés par le formulaire List <Recipe> listRecipesFromForm = GetListRecipesByRecipeIdList(mealFVM.ListRecipesId); // TODO : vérifier que le repas n'existe pas déjà // si il existe -> rediriger vers le repas existant ? // ou si on est en train de créer un itemMenu, on peut l'ajouter direct // Si le nom est vide, on le créé à partir des noms des recettes newMeal.Name = GenerateRecipeName(mealFVM.Meal.Name, listRecipesFromForm, mealFVM.UpdateMealName); newMeal.NbServings = mealFVM.Meal.NbServings; newMeal.RecipeCollection = new List <Recipe>(); newMeal.RecipeCollection = listRecipesFromForm; _ctx.Meal.Add(newMeal); _ctx.SaveChanges(); mealId = newMeal.Id; TempData["MessageSuccess"] = "Le repas a bien été ajouté."; } return(RedirectToAction("Detail", new { id = mealId })); }