コード例 #1
0
ファイル: MealController.cs プロジェクト: ordiminie/MiamRepo
        public ActionResult New()
        {
            MealFormViewModel mealFVM = new MealFormViewModel();

            mealFVM.Meal = new Meal();
            mealFVM.ListRecipesForDropDown = _ctx.Recipe.ToList();

            return(View("MealForm", mealFVM));
        }
コード例 #2
0
ファイル: MealController.cs プロジェクト: ordiminie/MiamRepo
        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));
        }
コード例 #3
0
ファイル: MealController.cs プロジェクト: ordiminie/MiamRepo
        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 }));
        }