public ActionResult Edit(CompositionPizzaVM vm) { try { //Nom de la pizza if (FakeDbPizza.Instance.Pizzas.Any(p => p.Nom.ToUpper() == vm.Pizza.Nom.ToUpper() && p.Id != vm.Pizza.Id)) { ModelState.AddModelError("", $"La Pizza {vm.Pizza.Nom} existe déjà."); return(View(vm)); } //Nombre d'ingredients if (vm.IdsIngredients.Count < 2 || vm.IdsIngredients.Count > 5) { ModelState.AddModelError("", $"La Pizza doit contenir entre 2 et 5 ingrédients."); return(View(vm)); } //Comparaison des ingrédients //On sélectionne les pizzas de la bdd ayant le même nombre d'ingrédients var pizzasAvecxIngredients = FakeDbPizza.Instance.Pizzas.Where(p => p.Ingredients.Count() == vm.IdsIngredients.Count() && p.Id != vm.Pizza.Id); bool pizzaExiste = false; foreach (var p in pizzasAvecxIngredients) { var listIdIngredients = p.Ingredients.Select(x => x.Id); if (vm.IdsIngredients.All(x => listIdIngredients.Contains(x))) { pizzaExiste = true; } } if (pizzaExiste) { ModelState.AddModelError("", "Une pizza contenant exactement les mêmes ingrédients existe déjà"); return(View(vm)); } Pizza pizza = FakeDbPizza.Instance.Pizzas.FirstOrDefault(x => x.Id == vm.Pizza.Id); pizza.Nom = vm.Pizza.Nom; pizza.Pate = FakeDbPizza.Instance.Pates.FirstOrDefault(x => x.Id == vm.IdPate); pizza.Ingredients = FakeDbPizza.Instance.Ingredients.Where(x => vm.IdsIngredients.Contains(x.Id)).ToList(); return(RedirectToAction("Index")); } catch { return(View()); } }
// GET: Pizza/Edit/5 public ActionResult Edit(int id) { CompositionPizzaVM vm = new CompositionPizzaVM(); vm.Pizza = FakeDbPizza.Instance.Pizzas.FirstOrDefault(x => x.Id == id); if (vm.Pizza.Pate != null) { vm.IdPate = vm.Pizza.Pate.Id; } if (vm.Pizza.Ingredients.Any()) { vm.IdsIngredients = vm.Pizza.Ingredients.Select(x => x.Id).ToList(); } return(View(vm)); }
public ActionResult Create(CompositionPizzaVM compositionPizzaVM) { try { if (ModelState.IsValid) { if (FakeDbPizza.Instance.Pizzas.Any(p => p.Nom.ToUpper() == compositionPizzaVM.Pizza.Nom.ToUpper())) { ModelState.AddModelError("", $"La Pizza {compositionPizzaVM.Pizza.Nom} existe déjà."); return(View(compositionPizzaVM)); } if (compositionPizzaVM.IdsIngredients.Count < 2 || compositionPizzaVM.IdsIngredients.Count > 5) { ModelState.AddModelError("", $"La Pizza doit contenir entre 2 et 5 ingrédients."); return(View(compositionPizzaVM)); } //Comparaison des ingrédients //On sélectionne les pizzas de la bdd ayant le même nombre d'ingrédients var pizzasAvecxIngredients = FakeDbPizza.Instance.Pizzas.Where(p => p.Ingredients.Count() == compositionPizzaVM.IdsIngredients.Count()); bool pizzaExiste = false; //Pour chacune de ces pizzas on regarde si tous les ingrédients correspondent foreach (var p in pizzasAvecxIngredients) { var listIdIngredients = p.Ingredients.Select(x => x.Id); if (compositionPizzaVM.IdsIngredients.All(x => listIdIngredients.Contains(x))) { pizzaExiste = true; } } if (pizzaExiste) { ModelState.AddModelError("", "Une pizza contenant exactement les mêmes ingrédients existe déjà"); return(View(compositionPizzaVM)); } Pizza pizza = compositionPizzaVM.Pizza; Pate pate = FakeDbPizza.Instance.Pates.FirstOrDefault(p => p.Id == compositionPizzaVM.IdPate); List <Ingredient> ingredients = FakeDbPizza.Instance.Ingredients.Where( x => compositionPizzaVM.IdsIngredients.Contains(x.Id)).ToList(); pizza.Pate = pate; pizza.Ingredients = ingredients; if (FakeDbPizza.Instance.Pizzas.Count == 0) { //pizza.Id = FakeDbPizza.Instance.Pizzas.Count + 1 pizza.Id = 1; } else { pizza.Id = FakeDbPizza.Instance.Pizzas.Max(X => X.Id) + 1; } //Ajout de la pizza FakeDbPizza.Instance.Pizzas.Add(pizza); return(RedirectToAction("Index")); } return(View(compositionPizzaVM)); } catch { return(View()); } }
// GET: Pizza/Create public ActionResult Create() { CompositionPizzaVM vm = new CompositionPizzaVM(); return(View(vm)); }