Example #1
0
        public ActionResult Create(PizzaCreateEditVM vm)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    Pizza pizza = vm.Pizza;

                    pizza.Id = FakeDBPizza.Instance.ListePizzas.Count() == 0
                        ? 1
                        : FakeDBPizza.Instance.ListePizzas.Max(p => p.Id) + 1;

                    pizza.Pate = FakeDBPizza.Instance.ListePates.FirstOrDefault(p => p.Id == vm.IdPate);

                    foreach (var idIngredient in vm.IdIngredients)
                    {
                        pizza.Ingredients.Add(
                            FakeDBPizza.Instance.ListeIngredients.FirstOrDefault(i => i.Id == idIngredient));
                    }

                    FakeDBPizza.Instance.ListePizzas.Add(pizza);

                    return(RedirectToAction("Index"));
                }
                else
                {
                    return(View(this.getPatesIngredients(vm)));
                }
            }
            catch
            {
                return(View(this.getPatesIngredients(vm)));
            }
        }
        public ActionResult Edit(PizzaCreateEditVM pizzaCreateEditVM)
        {
            try
            {
                if (!CheckRules(pizzaCreateEditVM))
                {
                    throw new Exception("Une ou plusieurs rêgles métiers ne sont pas respectées sur une modification de pizza");
                }

                var pizza = pizzas.FirstOrDefault(p => p.Id == pizzaCreateEditVM.Pizza.Id);
                pizza.Nom         = pizzaCreateEditVM.Pizza.Nom;
                pizza.Ingredients = ingredientsDisponibles.Where(i => pizzaCreateEditVM.IdSelectedIngredients.Contains(i.Id)).ToList();

                if (pizzaCreateEditVM.IdSelectedPate != 0)
                {
                    pizza.Pate = patesDisponibles.FirstOrDefault(p => p.Id == pizzaCreateEditVM.IdSelectedPate);
                }

                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                return(View(GetPizzaCreateEditVM(pizzaCreateEditVM.Pizza.Id)));
            }
        }
Example #3
0
        public ActionResult Edit(int id, PizzaCreateEditVM vm)
        {
            {
                try
                {
                    if (ModelState.IsValid)
                    {
                        Pizza modifiedPizza = FakeDBPizza.Instance.ListePizzas.FirstOrDefault(p => p.Id == vm.Pizza.Id);

                        // nom
                        modifiedPizza.Nom = vm.Pizza.Nom;

                        //pate
                        Pate pate = FakeDBPizza.Instance.ListePates.FirstOrDefault(p => p.Id == vm.IdPate);
                        modifiedPizza.Pate = pate;

                        //ingrédients
                        modifiedPizza.Ingredients = FakeDBPizza.Instance.ListeIngredients
                                                    .Where(i => vm.IdIngredients.Contains(i.Id)).ToList();

                        return(RedirectToAction("Index"));
                    }
                    else
                    {
                        getPatesIngredients(vm);
                        return(View(vm));
                    }
                }
                catch
                {
                    getPatesIngredients(vm);
                    return(View(vm));
                }
            }
        }
Example #4
0
        // GET: Pizza/Delete/5
        public ActionResult Delete(int id)
        {
            PizzaCreateEditVM vm = new PizzaCreateEditVM();

            vm.Pizza = FakeDBPizza.Instance.ListePizzas.FirstOrDefault(p => p.Id == id);
            return(View(vm));
        }
Example #5
0
        /// <summary>
        /// Renvoi un Viewmodel construit pour la modification d'une pizza
        /// </summary>
        /// <param name="id">l'id de la pizza à modifier</param>
        /// <returns></returns>
        private PizzaCreateEditVM GetPizzaCreateEditVM(int id)
        {
            // Nous avons beoin d'un viewModel pour porter l'objet pizza à modifier, plus la liste de tous les ingrédients et la liste des pâtes disponibles
            var vm = new PizzaCreateEditVM();

            // On récupère la pizza portant l'Id désiré dans la lsite des pizzas porté par le controller
            vm.Pizza = pizzas.FirstOrDefault(p => p.Id == id);

            // On créé directement l'objet attendu par la méthode ListBoxFor du HtmlHelper, qui nous permettra de choisir plusieurs ingrédients
            vm.Ingredients = ingredientsDisponibles.Select(i => new SelectListItem {
                Text = i.Nom, Value = i.Id.ToString()
            }).ToList();

            // On créer directement l'objet attendu par la méthode DropDownListFor du HtmlHelper, qui nous permettra de choisir une pâte
            vm.Pates = patesDisponibles.Select(i => new SelectListItem {
                Text = i.Nom, Value = i.Id.ToString()
            }).ToList();

            // Si la pizza avait déja une pâte, elle sera selectionnée sur la vue
            if (vm.Pizza.Pate != null)
            {
                vm.IdSelectedPate = vm.Pizza.Pate.Id;
            }

            // Si la pizza avait déja des ingrédients, ils seront pré selectionnés sur la vue de modification
            if (vm.Pizza.Ingredients.Any())
            {
                vm.IdSelectedIngredients = vm.Pizza.Ingredients.Select(i => i.Id).ToList();
            }
            return(vm);
        }
Example #6
0
        public ActionResult Create(PizzaCreateEditVM pizzaCreateEditVM)
        {
            try
            {
                var pizza = pizzaCreateEditVM.Pizza;

                // On récupère les objets ingrédients de la liste ingredientsDisponibles du controller à partir des ids choisis portés par le ViewModel, puis on les affecte à notre objet pizza
                pizza.Ingredients = ingredientsDisponibles.Where(i => pizzaCreateEditVM.IdSelectedIngredients.Contains(i.Id)).ToList();

                // On récupère l'objet pâte de la liste patesDisponibles du controller à partir de l'id porté par le ViewModel, puis on l'affecte à notre objet pizza
                pizza.Pate = patesDisponibles.FirstOrDefault(p => p.Id == pizzaCreateEditVM.IdSelectedPate);

                // on affecte l'Id à partir de l'id max de notre liste de pizzas plus un.
                // si notre lsite est vide, on affecte la valeur 1.
                pizza.Id = pizzas.Any() ? pizzas.Max(p => p.Id) + 1 : 1;

                // On ajoute la nouvelle pizza à notre liste statique
                pizzas.Add(pizza);
                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);

                // Si nous avons rencontré une erreur, il faut recharger la page de création, de ce fait il nous faut réalimenter le Viewmodel avant de le passer à la vue

                pizzaCreateEditVM.Ingredients = ingredientsDisponibles.Select(i => new SelectListItem {
                    Text = i.Nom, Value = i.Id.ToString()
                }).ToList();
                pizzaCreateEditVM.Pates = patesDisponibles.Select(i => new SelectListItem {
                    Text = i.Nom, Value = i.Id.ToString()
                }).ToList();
                return(View(pizzaCreateEditVM));
            }
        }
Example #7
0
        // GET: Pizza/Create
        public ActionResult Create()
        {
            PizzaCreateEditVM vm = new PizzaCreateEditVM();

            vm.Pates       = Pizza.PatesDisponibles;
            vm.Ingredients = Pizza.IngredientsDisponibles;
            return(View(vm));
        }
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            PizzaCreateEditVM vm = (PizzaCreateEditVM)validationContext.ObjectInstance;

            if (_min > vm.IdIngredients.Count || vm.IdIngredients.Count > _max)
            {
                return(new ValidationResult($"Vous devez choisir entre {_min} et {_max} ingrédients"));
            }
            return(ValidationResult.Success);
        }
        private bool CheckRules(PizzaCreateEditVM vm)
        {
            var brokenRules = 0;

            if (vm.Pizza.Nom.Length > 20 || vm.Pizza.Nom.Length < 5)
            {
                ModelState.AddModelError("", "Le nom d'une pizza doit avoir entre 5 et 20 caractères");
                brokenRules++;
            }


            if (vm.IdSelectedPate == 0)
            {
                ModelState.AddModelError("", "Une pizza doit avoir une pâte");
                brokenRules++;
            }

            if (pizzas.Any(p => p.Nom.ToUpper() == vm.Pizza.Nom.ToUpper() && p.Id != vm.Pizza.Id))
            {
                ModelState.AddModelError("", "Il existe déjà une pizza portant ce nom");
                brokenRules++;
            }

            if (vm.IdSelectedIngredients.Count < 2 || vm.IdSelectedIngredients.Count > 5)
            {
                ModelState.AddModelError("", "Une pizza doit avoir entre 2 et 5 ingrédients");
                brokenRules++;
            }

            var pizzasSameNumberIngredient = pizzas.Where(p => p.Ingredients.Count == vm.IdSelectedIngredients.Count && vm.Pizza.Id != p.Id);


            foreach (var pizza in pizzasSameNumberIngredient)
            {
                var sameIngredients = true;
                for (int i = 0; i < pizza.Ingredients.Count; i++)
                {
                    if (!vm.IdSelectedIngredients.Contains(pizza.Ingredients[i].Id))
                    {
                        sameIngredients = false;
                        break;
                    }
                }
                if (sameIngredients)
                {
                    ModelState.AddModelError("", "Il existe déjà une pizza avec ces ingrédients");
                    brokenRules++;
                    break;
                }
            }

            return(brokenRules == 0);
        }
Example #10
0
        // GET: Pizza/Create
        public ActionResult Create()
        {
            var vm = new PizzaCreateEditVM();

            vm.Ingredients = ingredientsDisponibles.Select(i => new SelectListItem {
                Text = i.Nom, Value = i.Id.ToString()
            }).ToList();
            vm.Pates = patesDisponibles.Select(i => new SelectListItem {
                Text = i.Nom, Value = i.Id.ToString()
            }).ToList();
            return(View(vm));
        }
Example #11
0
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            PizzaCreateEditVM vm = (PizzaCreateEditVM)validationContext.ObjectInstance;

            if (FakeDBPizza.Instance.ListePizzas.Any(x =>
                                                     x.Nom.ToUpper() == vm.Pizza.Nom.ToUpper() && x.Id != vm.Pizza.Id))
            {
                return(new ValidationResult($"{vm.Pizza.Nom} : ce nom de pizza existe déjà"));
            }

            return(ValidationResult.Success);
        }
        // GET: Pizza/Create
        public ActionResult Create()
        {
            PizzaCreateEditVM pvm = new PizzaCreateEditVM();

            pvm.Pate = FakeDbPizza.Instance.PatesAvailable.Select(p => new SelectListItem {
                Text = p.Nom, Value = p.Id.ToString()
            });
            pvm.Ingredients = FakeDbPizza.Instance.IngredientsAvailable.Select(i => new SelectListItem {
                Text = i.Nom, Value = i.Id.ToString()
            });

            return(View(pvm));
        }
Example #13
0
        // GET: Pizza/Edit/5
        public ActionResult Edit(int id)
        {
            var pizza = Pizzas.FirstOrDefault(p => p.Id == id);

            if (pizza == null)
            {
                return(RedirectToAction("Index"));
            }
            PizzaCreateEditVM vm = new PizzaCreateEditVM();

            vm.Pates       = Pizza.PatesDisponibles;
            vm.Ingredients = Pizza.IngredientsDisponibles;
            vm.Pizza       = pizza;
            return(View(vm));
        }
Example #14
0
        private PizzaCreateEditVM getPatesIngredients(PizzaCreateEditVM vm)
        {
            vm.Pate = FakeDBPizza.Instance.ListePates.Select(p => new SelectListItem()
            {
                Text = p.Nom, Value = p.Id.ToString()
            })
                      .ToList();

            vm.Ingredients = FakeDBPizza.Instance.ListeIngredients.Select(i => new SelectListItem()
            {
                Text = i.Nom, Value = i.Id.ToString()
            })
                             .ToList();
            return(vm);
        }
Example #15
0
        // GET: Pizza/Details/5
        public ActionResult Details(int id)
        {
            Pizza pizza = FakeDBPizza.Instance.ListePizzas.FirstOrDefault(x => x.Id == id);

            if (pizza != null)
            {
                PizzaCreateEditVM vm = new PizzaCreateEditVM();
                vm.Pizza = pizza;
                return(View(vm));
            }
            else
            {
                return(RedirectToAction("Index"));
            }
        }
Example #16
0
        public ActionResult Edit(PizzaCreateEditVM pizzaCreateEditVM)
        {
            try
            {
                var pizza = pizzas.FirstOrDefault(p => p.Id == pizzaCreateEditVM.Pizza.Id);
                pizza.Nom         = pizzaCreateEditVM.Pizza.Nom;
                pizza.Ingredients = ingredientsDisponibles.Where(i => pizzaCreateEditVM.IdSelectedIngredients.Contains(i.Id)).ToList();
                pizza.Pate        = patesDisponibles.FirstOrDefault(p => p.Id == pizzaCreateEditVM.IdSelectedPate);

                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                return(View(GetPizzaCreateEditVM(pizzaCreateEditVM.Pizza.Id)));
            }
        }
        public ActionResult Create(PizzaCreateEditVM pvm)
        {
            try
            {
                if (ModelState.IsValid && listIngredientsIsDifferent(pvm))
                {
                    Pizza pizza = pvm.Pizza;

                    //gestion de l'id de la pizza a créer
                    pizza.Id = FakeDbPizza.Instance.ListPizza.Count == 0 ? 1 : FakeDbPizza.Instance.ListPizza.Max(p => p.Id) + 1;

                    //on récupère la pate et ingrédients selon les ids retournés
                    pizza.Pate = FakeDbPizza.Instance.PatesAvailable.FirstOrDefault(p => p.Id == pvm.idSelectedPate);
                    if (pvm.idSelectedIngredients != null)
                    {
                        pizza.Ingredients = FakeDbPizza.Instance.IngredientsAvailable.Where(i => pvm.idSelectedIngredients.Contains(i.Id)).ToList();
                    }

                    FakeDbPizza.Instance.ListPizza.Add(pizza);

                    return(RedirectToAction("Index"));
                }
                else
                {
                    pvm.Pate = FakeDbPizza.Instance.PatesAvailable.Select(p => new SelectListItem {
                        Text = p.Nom, Value = p.Id.ToString()
                    });
                    pvm.Ingredients = FakeDbPizza.Instance.IngredientsAvailable.Select(i => new SelectListItem {
                        Text = i.Nom, Value = i.Id.ToString()
                    });

                    return(View(pvm));
                }
            }
            catch
            {
                pvm.Pate = FakeDbPizza.Instance.PatesAvailable.Select(p => new SelectListItem {
                    Text = p.Nom, Value = p.Id.ToString()
                });
                pvm.Ingredients = FakeDbPizza.Instance.IngredientsAvailable.Select(i => new SelectListItem {
                    Text = i.Nom, Value = i.Id.ToString()
                });
                return(View(pvm));
            }
        }
Example #18
0
 public ActionResult Create(PizzaCreateEditVM vm)
 {
     try
     {
         vm.Pates       = Pizza.PatesDisponibles;
         vm.Ingredients = Pizza.IngredientsDisponibles;
         if (ModelState.IsValid)
         {
             if (Pizzas.Any(p => p.Nom.ToUpper() == vm.Pizza.Nom.ToUpper()))
             {
                 ModelState.AddModelError("", "il existe déjà une pizza avec ce nom !");
                 return(View(vm));
             }
             if (Pizza.PatesDisponibles.FirstOrDefault(x => x.Id == vm.IdSelectedPate) == default)
             {
                 ModelState.AddModelError("", "Il faut obligatoirement une pate !");
                 return(View(vm));
             }
             if (vm.IdSelectedIngredients.Count() > 5 || vm.IdSelectedIngredients.Count() < 2)
             {
                 ModelState.AddModelError("", "Une pizza doit avoir entre 2 et 5 ingredients !");
                 return(View(vm));
             }
             vm.Pizza.Pate = Pizza.PatesDisponibles.FirstOrDefault(x => x.Id == vm.IdSelectedPate);
             var ingredients = new List <Ingredient> {
             };
             foreach (var item in vm.IdSelectedIngredients)
             {
                 ingredients.Add(Pizza.IngredientsDisponibles.FirstOrDefault(x => x.Id == item));
             }
             vm.Pizza.Ingredients = ingredients;
             Pizzas.Add(vm.Pizza);
             return(RedirectToAction("Index"));
         }
         else
         {
             return(View(vm));
         }
     }
     catch
     {
         return(View(vm));
     }
 }
        // GET: Pizza/Edit/5
        public ActionResult Edit(int id)
        {
            PizzaCreateEditVM pvm = new PizzaCreateEditVM();

            pvm.Pizza = FakeDbPizza.Instance.ListPizza.FirstOrDefault(p => p.Id == id);

            //récupération de la pate et ingredients de la pizza à editer
            pvm.idSelectedPate        = pvm.Pizza.Pate.Id;
            pvm.idSelectedIngredients = pvm.Pizza.Ingredients.Select(p => p.Id).ToList();

            pvm.Pate = FakeDbPizza.Instance.PatesAvailable.Select(p => new SelectListItem {
                Text = p.Nom, Value = p.Id.ToString()
            });
            pvm.Ingredients = FakeDbPizza.Instance.IngredientsAvailable.Select(i => new SelectListItem {
                Text = i.Nom, Value = i.Id.ToString()
            });

            return(View(pvm));
        }
        public ActionResult Edit(PizzaCreateEditVM pvm)
        {
            try
            {
                if (ModelState.IsValid && listIngredientsIsDifferent(pvm))
                {
                    Pizza pizzaToEdit = FakeDbPizza.Instance.ListPizza.FirstOrDefault(p => p.Id == pvm.Pizza.Id);

                    pizzaToEdit.Nom = pvm.Pizza.Nom;

                    Pate pate = FakeDbPizza.Instance.PatesAvailable.FirstOrDefault(p => p.Id == pvm.idSelectedPate);
                    pizzaToEdit.Pate = pate;

                    pizzaToEdit.Ingredients = FakeDbPizza.Instance.IngredientsAvailable.Where(i => pvm.idSelectedIngredients.Contains(i.Id)).ToList();

                    return(RedirectToAction("Index"));
                }
                else
                {
                    pvm.Pate = FakeDbPizza.Instance.PatesAvailable.Select(p => new SelectListItem {
                        Text = p.Nom, Value = p.Id.ToString()
                    });
                    pvm.Ingredients = FakeDbPizza.Instance.IngredientsAvailable.Select(i => new SelectListItem {
                        Text = i.Nom, Value = i.Id.ToString()
                    });

                    return(View(pvm));
                }
            }
            catch
            {
                pvm.Pate = FakeDbPizza.Instance.PatesAvailable.Select(p => new SelectListItem {
                    Text = p.Nom, Value = p.Id.ToString()
                });
                pvm.Ingredients = FakeDbPizza.Instance.IngredientsAvailable.Select(i => new SelectListItem {
                    Text = i.Nom, Value = i.Id.ToString()
                });

                return(View(pvm));
            }
        }
        //vérifier que deux pizzas n'ont pas la même liste d ingrédients
        public bool listIngredientsIsDifferent(PizzaCreateEditVM pvm)
        {
            bool isDifferent = true;

            Pizza pizzaToCreateOrEdit = pvm.Pizza;
            var   listIngredientsId   = pvm.idSelectedIngredients.OrderBy(i => i);

            //comparer si la liste d'ingrédients de la pizza créée ou éditée est la même que celle d'une pizza existante
            foreach (var pizza in FakeDbPizza.Instance.ListPizza)
            {
                //comparer si le nb d'ingrédients est différent
                if (listIngredientsId.Count() != pizza.Ingredients.Count())
                {
                    return(isDifferent);
                }
                else
                {
                    if (listIngredientsId.SequenceEqual(pizza.Ingredients.Select(i => i.Id).OrderBy(i => i)))
                    {
                        //on vérifie qu'il ne s'agit pas de la pizza en cours d'edition
                        if (pizzaToCreateOrEdit.Id == pizza.Id)
                        {
                            isDifferent = true;
                        }
                        else
                        {
                            isDifferent = false;
                            break;
                        }
                    }
                }
            }

            if (!isDifferent)
            {
                ModelState.AddModelError("", "Deux pizzas ne peuvent pas avoir la même liste d'ingrédients.");
            }

            return(isDifferent);
        }
Example #22
0
        // GET: Pizza/Edit/5
        public ActionResult Edit(int id)
        {
            PizzaCreateEditVM vm = new PizzaCreateEditVM();

            foreach (Pate pate in FakeDBPizza.Instance.ListePates)
            {
            }

            Pizza pizza = FakeDBPizza.Instance.ListePizzas.FirstOrDefault(x => x.Id == id);

            if (pizza != null)
            {
                vm.Pizza         = pizza;
                vm.IdIngredients = vm.Pizza.Ingredients.Select(i => i.Id).ToList();
                vm.IdPate        = vm.Pizza.Pate.Id;
                getPatesIngredients(vm);
                return(View(vm));
            }
            else
            {
                return(RedirectToAction("Index"));
            }
        }
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            PizzaCreateEditVM vm = (PizzaCreateEditVM)validationContext.ObjectInstance;

            bool result = true;

            foreach (var pizza in FakeDBPizza.Instance.ListePizzas)
            {
                if (vm.IdIngredients.Count == pizza.Ingredients.Count)
                {
                    bool isDifferent          = false;
                    List <Ingredient> pizzaDb = pizza.Ingredients.OrderBy(x => x.Id).ToList();
                    vm.IdIngredients = vm.IdIngredients.OrderBy(x => x).ToList();
                    for (int i = 0; i < vm.IdIngredients.Count; i++)
                    {
                        if (vm.IdIngredients.ElementAt(i) != pizzaDb.ElementAt(i).Id)
                        {
                            isDifferent = true;
                            break;
                        }
                    }

                    if (!isDifferent)
                    {
                        if (vm.Pizza.Id != pizza.Id)
                        {
                            result = false;
                        }
                    }
                }
            }

            return(result
                ? ValidationResult.Success
                : new ValidationResult("Ces ingrédients sont dans une autre pizza"));
        }
Example #24
0
        // GET: Pizza/Create
        public ActionResult Create()
        {
            PizzaCreateEditVM vm = new PizzaCreateEditVM();

            return(View(this.getPatesIngredients(vm)));
        }