コード例 #1
0
ファイル: SwController.cs プロジェクト: Clif971/AfpEat
        //JSON ADD PRODUIT
        public JsonResult AddProduit(int IdProduit, string idsession)
        {
            SessionUtilisateur sessionUtilisateur = db.SessionUtilisateurs.Find(Session.SessionID);
            PanierModel        panier             = GetPanier(idsession);
            bool isReturnOk = true;

            if (sessionUtilisateur != null && panier != null && IdProduit > 0)
            {
                ProduitPanier produitPanier = FindProduit(IdProduit);
                if (produitPanier != null)
                {
                    if (panier.IdRestaurant == 0)
                    {
                        panier.IdRestaurant = produitPanier.IdRestaurant;
                        panier.AddItem(produitPanier);
                    }
                    else if (panier.IdRestaurant == produitPanier.IdRestaurant)
                    {
                        panier.AddItem(produitPanier);
                        isReturnOk = false;
                    }
                } //Je sauve mon panier en session
                HttpContext.Application[idsession] = panier;
            }     // Je retourne en Json le nombre de ligne
            return(Json(new { returnOk = isReturnOk, qte = panier.Quantite, montant = panier.Montant }, JsonRequestBehavior.AllowGet));
        }
コード例 #2
0
        //suppression d'un produit/menu du panier
        public JsonResult RemoveProduit(int idProduit, string idSession)
        {
            PanierHtml  panierHtml  = null;
            PanierModel panierModel = null;

            SessionUtilisateur sessionUtilisateur = db.SessionUtilisateurs.Find(idSession);

            if (sessionUtilisateur != null && idProduit > 0)
            {
                Produit produit = db.Produits.Find(idProduit);

                if (HttpContext.Application[idSession] != null)
                {
                    panierModel = (PanierModel)HttpContext.Application[idSession];
                }

                ItemPanier itemPanier = panierModel.FirstOrDefault(p => p.GetIdProduit() == idProduit);

                //si l'itemPanier est déjà présent dans le panier alors quantité -1, sinon ajout de l'itemPanier
                if (itemPanier.Quantite == 1)
                {
                    panierModel.Remove(itemPanier);
                }
                else
                {
                    itemPanier.Quantite -= 1;
                }

                panierHtml = ShowPanier(panierModel);

                HttpContext.Application[idSession] = panierModel;
            }

            return(Json(new { panier = panierHtml.hmtl, total = string.Format("{0:0.00}", panierHtml.total) }, JsonRequestBehavior.AllowGet));
        }
コード例 #3
0
        public JsonResult RemoveProduit(int idProduit, string idSession)
        {
            /*SessionUtilisateur sessionUtilisateur = db.SessionUtilisateurs.Find(Session.SessionID);
             *
             * if (sessionUtilisateur == null)
             * {
             *  Response.StatusCode = (int)HttpStatusCode.BadRequest;
             *  return Json("Session incorrecte", JsonRequestBehavior.AllowGet);
             * }*/

            PanierModel panier  = (PanierModel)HttpContext.Application[idSession] ?? new PanierModel();
            Produit     produit = db.Produits.Find(idProduit);

            if (produit == null)
            {
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return(Json($"Produit #{idProduit} non trouvé", JsonRequestBehavior.AllowGet));
            }

            ProduitPanier produitPanier = CreateProduitPanier(produit);

            int quantiteProduit = panier.RemoveItem(produitPanier);

            HttpContext.Application[idSession] = panier;

            var data = new
            {
                quantiteProduit,
                quantiteTotale  = panier.QuantiteTotale,
                prixTotal       = panier.Montant,
                prixTotalFormat = String.Format(CultureInfo.GetCultureInfo("fr-FR"), "{0:0.00}", panier.Montant)
            };

            return(Json(data, JsonRequestBehavior.AllowGet));
        }
コード例 #4
0
ファイル: SwController.cs プロジェクト: Clif971/AfpEat
        //public JsonResult GetListeRestaurants(int? idTypeCuisine, idRestaurant)
        //{
        //    SessionUtilisateur sessionUtilisateur = db.SessionUtilisateurs.Find(Session.SessionID);
        //    List<ProduitPanier> panier = null;
        //    if (sessionUtilisateur != null)
        //    {
        //        if (HttpContext.Application[idsession] != null)
        //        {
        //            panier = (List<ProduitPanier>)HttpContext.Application[idsession];
        //        }
        //    }
        //    return Json(panier, JsonRequestBehavior.AllowGet);
        //}
        public JsonResult AddMenu(int IdMenu, List <int> IdProduits, string idsession)
        {
            SessionUtilisateur sessionUtilisateur = db.SessionUtilisateurs.Find(Session.SessionID);
            PanierModel        produitPaniers     = null;

            if (sessionUtilisateur != null)
            {
                if (HttpContext.Application[idsession] != null)
                {
                    produitPaniers = (PanierModel)HttpContext.Application[idsession];
                }
                else
                {
                    produitPaniers = new PanierModel();
                }
                Menu menu = db.Menus.Find(IdMenu);
                if (menu != null)
                {
                    MenuPanier menuPanier = new MenuPanier();
                    menuPanier.IdMenu = IdMenu;
                    foreach (int IdProduit in IdProduits)
                    {
                        ProduitPanier produitPanier = FindProduit(IdProduit);

                        if (produitPanier != null)
                        {
                            menuPanier.produits.Add(produitPanier);
                        }
                    }
                    produitPaniers.Add(menuPanier);
                }
                HttpContext.Application[idsession] = produitPaniers;
            }
            return(Json(produitPaniers.Quantite, JsonRequestBehavior.AllowGet));
        }
コード例 #5
0
        public ActionResult Carte(int id, string slug)
        {
            ViewBag.Error = null;

            PanierModel panier = (PanierModel)HttpContext.Application[Session.SessionID];

            if (panier != null && panier.Count > 0 && panier.IdRestaurant != id)
            {
                ViewBag.Error = "error";
                ViewBag.IdRestaurantPanier = panier.IdRestaurant;
            }

            Restaurant restaurant = db.Restaurants.Where(r => r.IdRestaurant == id).First();

            if (restaurant == null)
            {
                return(HttpNotFound());
            }

            ViewBag.User = Session["Utilisateur"] ?? null;

            if (slug != restaurant.Slug)
            {
                return(RedirectToAction("Carte", new { id, slug = restaurant.Slug }));
            }

            return(View(restaurant));
        }
コード例 #6
0
ファイル: SwController.cs プロジェクト: Clif971/AfpEat
        public JsonResult SaveCommande(string idsession)
        {
            SessionUtilisateur sessionUtilisateur = db.SessionUtilisateurs.Find(Session.SessionID);
            PanierModel        panier             = null;

            if (sessionUtilisateur != null && HttpContext.Application[idsession] != null)
            {
                panier = (PanierModel)HttpContext.Application[idsession];
            }
            try
            {
                Utilisateur utilisateur = db.Utilisateurs.First(p => p.IdSession == idsession);
                if (utilisateur != null && utilisateur.Solde > 0 && panier != null && panier.Count > 0)
                {
                    decimal prixTotal = 0;
                    prixTotal = panier.Montant;
                    if (prixTotal <= utilisateur.Solde)
                    {
                        Commande commande = new Commande();
                        commande.IdUtilisateur  = utilisateur.IdUtilisateur;
                        commande.IdRestaurant   = panier.IdRestaurant;
                        commande.Date           = DateTime.Now;
                        commande.Prix           = prixTotal;
                        commande.IdEtatCommande = 1;
                        utilisateur.Solde      -= prixTotal;
                        foreach (ItemPanier item in panier)
                        {
                            CommandeProduit commandeProduit = new CommandeProduit();
                            commandeProduit.IdProduit = item.GetIdProduit();
                            commandeProduit.Prix      = item.Prix;
                            commandeProduit.Quantite  = item.Quantite;
                            commande.CommandeProduits.Add(commandeProduit);
                            try
                            {
                                Produit produit = db.Produits.Find(commandeProduit.IdProduit);
                                if (produit.IdProduit == commandeProduit.IdProduit)
                                {
                                    produit.Quantite -= commandeProduit.Quantite;
                                }
                            }
                            catch (Exception ex)
                            {
                                string er = ex.Message;
                            }
                        }
                        db.Commandes.Add(commande);
                        db.SaveChanges();
                        HttpContext.Application.Clear();
                    }
                }
                return(Json(new { idutilisateur = utilisateur.IdUtilisateur }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                string er = ex.Message;
            }
            return(Json(JsonRequestBehavior.AllowGet));
        }
コード例 #7
0
 public IActionResult Update([FromBody] PanierModel panierModel)
 {
     _logger.LogDebug("PaniersManagementController: Update() called");
     if (panierModel == null)
     {
         return(BadRequest());
     }
     return(Ok(_service.Update <PanierModel>(panierModel)));
 }
コード例 #8
0
        public ActionResult Panier()
        {
            PanierModel panier = (PanierModel)HttpContext.Application[Session.SessionID];

            if (panier != null && panier.Count > 0)
            {
                return(View(panier));
            }
            return(RedirectToAction("Index", "Restaurants"));
        }
コード例 #9
0
        public JsonResult AddMenu(int idMenu, List <int> idProduits, string idSession)
        {
            SessionUtilisateur sessionUtilisateur = db.SessionUtilisateurs.Find(Session.SessionID);
            PanierModel        panier             = (PanierModel)HttpContext.Application[idSession] ?? new PanierModel();

            if (sessionUtilisateur == null)
            {
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return(Json("Session incorrecte", JsonRequestBehavior.AllowGet));
            }

            Menu menu = db.Menus.Find(idMenu);

            if (menu == null)
            {
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return(Json($"Menu #{idMenu} non trouvé", JsonRequestBehavior.AllowGet));
            }

            MenuPanier menuPanier = new MenuPanier();

            menuPanier.IdMenu       = idMenu;
            menuPanier.Quantite     = 1;
            menuPanier.IdRestaurant = menu.IdRestaurant;

            foreach (int idProduit in idProduits)
            {
                Produit produit = db.Produits.Find(idProduit);
                if (produit == null)
                {
                    Response.StatusCode = (int)HttpStatusCode.BadRequest;
                    return(Json($"Produit #{idProduit} non trouvé", JsonRequestBehavior.AllowGet));
                }

                ProduitPanier produitPanier = CreateProduitPanier(produit);
                menuPanier.Produits.Add(produitPanier);
                menuPanier.Quantite++;

                panier.AddItem(menuPanier);
            }

            HttpContext.Application[idSession] = panier;

            var data = new
            {
                quantiteProduit = menuPanier.Quantite,
                quantiteTotale  = panier.QuantiteTotale,
                prixTotal       = panier.Montant,
                prixTotalFormat = string.Format(CultureInfo.GetCultureInfo("fr-FR"), "{0:0.00}", panier.Montant)
            };

            return(Json(data, JsonRequestBehavior.AllowGet));
        }
コード例 #10
0
        // GET: Produits/Commande
        public ActionResult Commande()
        {
            List <Produit> produits = db.Produits.Include(p => p.Categorie).Include(p => p.Restaurant).Where(p => p.Quantite > 0).ToList();
            PanierModel    panier   = (PanierModel)HttpContext.Application[Session.SessionID] ?? new PanierModel();

            CommandeViewModel commandeViewModel = new CommandeViewModel()
            {
                ProduitsDisponible = produits,
                Panier             = panier
            };

            return(View(commandeViewModel));
        }
コード例 #11
0
        public JsonResult AddQte(int idProduit, string idSession)
        {
            SessionUtilisateur sessionUtilisateur = db.SessionUtilisateurs.Find(Session.SessionID);

            PanierModel panier = null;

            panier = (PanierModel)HttpContext.Application[idSession];
            ItemPanier itemPanier = panier.FirstOrDefault(p => p.GetIdProduit() == idProduit);


            itemPanier.Quantite += 1;

            return(Json(itemPanier.Quantite, JsonRequestBehavior.AllowGet));
        }
コード例 #12
0
        public JsonResult AddProduit(int idProduit, string idSession, int quantite = 1)
        {
            /*SessionUtilisateur sessionUtilisateur = db.SessionUtilisateurs.Find(Session.SessionID);
             *
             * if (sessionUtilisateur == null)
             * {
             *  Response.StatusCode = (int)HttpStatusCode.Unauthorized;
             *  return Json("Session incorrecte", JsonRequestBehavior.AllowGet);
             * }*/

            PanierModel panier = (PanierModel)HttpContext.Application[idSession] ?? new PanierModel();

            Produit produit = db.Produits.Find(idProduit);

            if (produit == null)
            {
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return(Json($"Produit #{idProduit} non trouvé", JsonRequestBehavior.AllowGet));
            }

            if (produit.Quantite <= 0)
            {
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return(Json($"Produit #{idProduit} indisponible", JsonRequestBehavior.AllowGet));
            }

            if (panier.IdRestaurant != 0 && panier.QuantiteTotale > 0 && panier.IdRestaurant != produit.IdRestaurant)
            {
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return(Json("Impossible d'ajouter au panier un produit d'un autre restaurant", JsonRequestBehavior.AllowGet));
            }

            ProduitPanier produitPanier = CreateProduitPanier(produit, quantite);

            panier.IdRestaurant = produit.IdRestaurant;
            int quantiteProduit = panier.AddItem(produitPanier);

            HttpContext.Application[idSession] = panier;

            var data = new
            {
                quantiteProduit,
                quantiteTotale  = panier.QuantiteTotale,
                prixTotal       = panier.Montant,
                prixTotalFormat = string.Format(CultureInfo.GetCultureInfo("fr-FR"), "{0:0.00}", panier.Montant)
            };

            return(Json(data, JsonRequestBehavior.AllowGet));
        }
コード例 #13
0
ファイル: SwController.cs プロジェクト: Clif971/AfpEat
        private PanierModel GetPanier(string idsession)
        {
            PanierModel panier = null;

            if (HttpContext.Application[idsession] != null)
            {
                panier = (PanierModel)HttpContext.Application[idsession];
            }
            else
            {
                panier = new PanierModel();
                panier.IdRestaurant = 0;
            }
            return(panier);
        }
コード例 #14
0
        //création du panier latéral en html
        public PanierHtml ShowPanier(PanierModel panier)
        {
            PanierHtml panierHtml = new PanierHtml();

            panierHtml.hmtl  = "";
            panierHtml.total = 0;
            foreach (ItemPanier itemPanier in panier)
            {
                panierHtml.hmtl += "<div class='row valign-wrapper mt-2 mb-0'>";
                panierHtml.hmtl += "<div class='col m2' style='margin-left:0px;'>";

                if (itemPanier is ProduitPanier)
                {
                    panierHtml.hmtl += "<button class='btn-floating btn-small waves-effect waves-light red remove' onclick='removeProduit(\"" + itemPanier.GetIdProduit() + "\")'><i class='material-icons'>remove</i></button>";
                }
                else
                {
                    panierHtml.hmtl += "<button class='btn-floating btn-small waves-effect waves-light red remove' onclick='removeMenu(\"" + itemPanier.GetIdMenu() + "\")'><i class='material-icons'>remove</i></button>";
                }

                panierHtml.hmtl += "</div>";
                panierHtml.hmtl += "<div class='col m6' style='margin-left:0px;'><strong><span>" + itemPanier.Quantite + "&nbsp;&nbsp;x</span>&nbsp;&nbsp;" + itemPanier.Nom + "</strong></div>";
                panierHtml.hmtl += "<div class='col m4' style='margin-left:0px;'>" + itemPanier.Prix * itemPanier.Quantite + " €</div>";
                panierHtml.hmtl += "</div>";

                if (itemPanier is MenuPanier)
                {
                    panierHtml.hmtl += "<div class='row'>";
                    panierHtml.hmtl += "<div class='col s12 center-align'>";
                    panierHtml.hmtl += "<ul>";

                    MenuPanier menuPanier = (MenuPanier)itemPanier;

                    foreach (ItemPanier produitMenu in menuPanier.produits)
                    {
                        panierHtml.hmtl += "<li>" + produitMenu.Nom + "</li>";
                    }
                    panierHtml.hmtl += "</ul>";
                    panierHtml.hmtl += "</div>";
                    panierHtml.hmtl += "</div>";
                }

                panierHtml.hmtl += "<div class='divider'></div>";

                panierHtml.total += itemPanier.Prix * itemPanier.Quantite;
            }
            return(panierHtml);
        }
コード例 #15
0
        public JsonResult GetPanier(string idSession)
        {
            PanierModel panier = null;

            SessionUtilisateur sessionUtilisateur = db.SessionUtilisateurs.Find(Session.SessionID);

            if (sessionUtilisateur != null)
            {
                if (HttpContext.Application[idSession] != null)
                {
                    panier = (PanierModel)HttpContext.Application[idSession];
                }
            }

            return(Json(panier, JsonRequestBehavior.AllowGet));
        }
コード例 #16
0
        public JsonResult AddMenu(int idMenu, List <int> idProduits, string idSession)
        {
            SessionUtilisateur sessionUtilisateur = db.SessionUtilisateurs.Find(Session.SessionID);
            PanierModel        panierModel        = null;

            if (sessionUtilisateur != null)
            {
                if (HttpContext.Application[idSession] != null)
                {
                    panierModel = (PanierModel)HttpContext.Application[idSession];
                }
                else
                {
                    panierModel = new PanierModel();
                }


                //si le menu n'est pas présent dans le panier je le récupère
                Menu menu = db.Menus.Find(idMenu);

                MenuPanier menuPanier = new MenuPanier();
                menuPanier.IdMenu = idMenu;

                if (menu != null)
                {
                    foreach (int idProduit in idProduits)
                    {
                        ProduitPanier produitPanier = FindProduit(idProduit);

                        if (produitPanier != null)
                        {
                            menuPanier.produits.Add(produitPanier);
                        }
                    }

                    panierModel.Add(menuPanier);
                }

                panierModel.GetQuantite();

                //Je sauve mon panier en session
                HttpContext.Application[idSession] = panierModel;
            }

            //Je retourne en Json le nombre de lignes
            return(Json(panierModel.Quantite, JsonRequestBehavior.AllowGet));
        }
コード例 #17
0
        //ajout d'un menu au panier
        public JsonResult AddMenu(int idMenu, List <int> idProduits, string idSession)
        {
            PanierHtml panierHtml = new PanierHtml();

            SessionUtilisateur sessionUtilisateur = db.SessionUtilisateurs.Find(idSession);

            PanierModel panierModel = (PanierModel)HttpContext.Application[idSession] ?? new PanierModel();

            panierModel.IdRestaurant = 0;

            if (sessionUtilisateur != null && idMenu > 0 && idProduits.Count > 0)
            {
                Menu menu = db.Menus.Find(idMenu);
                panierModel.IdRestaurant = menu.IdRestaurant;

                if (menu != null)
                {
                    //creation du menu
                    MenuPanier menuPanier = new MenuPanier();
                    menuPanier.IdMenu       = idMenu;
                    menuPanier.Nom          = menu.Nom;
                    menuPanier.Prix         = menu.Prix;
                    menuPanier.Quantite     = 1;
                    menuPanier.IdRestaurant = menu.IdRestaurant;

                    //ajout des produits selectionnés dans le menu
                    foreach (int idProduit in idProduits)
                    {
                        ProduitPanier produitPanier = FindProduit(idProduit);

                        if (produitPanier != null)
                        {
                            menuPanier.produits.Add(produitPanier);
                        }
                    }

                    //ajout du menu avec ces produits dans le panier
                    panierModel.AddItem(menuPanier);
                }

                HttpContext.Application[idSession] = panierModel;

                panierHtml = ShowPanier(panierModel);
            }
            return(Json(new { panier = panierHtml.hmtl, total = string.Format("{0:0.00}", panierHtml.total) }, JsonRequestBehavior.AllowGet));
        }
コード例 #18
0
        //ajout d'un produit au panier
        public JsonResult AddProduit(int idProduit, string idSession)
        {
            //gérer le renvoit isReturnOk sur le JS avec message erreur
            bool       isReturnOk = false;
            PanierHtml panierHtml = new PanierHtml();

            //récupération de l'utilisateur sur le SW
            SessionUtilisateur sessionUtilisateur = db.SessionUtilisateurs.Find(idSession);

            //récupération du panier || création d'un panier
            PanierModel panierModel = (PanierModel)HttpContext.Application[idSession] ?? new PanierModel();

            panierModel.IdRestaurant = 0;

            if (sessionUtilisateur != null && panierModel != null && idProduit > 0)
            {
                //méthode FindProduit cf.
                ProduitPanier produitPanier = FindProduit(idProduit);

                if (produitPanier != null)
                {
                    //si le panier est vide
                    if (panierModel.IdRestaurant == 0)
                    {
                        panierModel.IdRestaurant = produitPanier.IdRestaurant;
                        panierModel.AddItem(produitPanier);
                        isReturnOk = true;
                    }
                    //si le panier n'est pas vide
                    else if (panierModel.IdRestaurant == produitPanier.IdRestaurant)
                    {
                        panierModel.AddItem(produitPanier);
                        isReturnOk = true;
                    }
                }

                //enregistrement du panier
                HttpContext.Application[idSession] = panierModel;

                //creation html de panier lateral
                panierHtml = ShowPanier(panierModel);
            }

            return(Json(new { panier = panierHtml.hmtl, isreturn = isReturnOk, total = string.Format("{0:0.00}", panierHtml.total) }, JsonRequestBehavior.AllowGet));
        }
コード例 #19
0
        //vider le Panier
        public JsonResult ClearPanier(string idSession)
        {
            //gérer message
            string message = "Une erreur est surenue";

            SessionUtilisateur sessionUtilisateur = db.SessionUtilisateurs.Find(idSession);

            PanierModel panierModel = (PanierModel)HttpContext.Application[idSession] ?? null;

            if (sessionUtilisateur != null && panierModel != null)
            {
                panierModel.Clear();
                HttpContext.Application[idSession] = panierModel;
                message = "Votre panier a été vidé";
            }

            return(Json(message, JsonRequestBehavior.AllowGet));
        }
コード例 #20
0
        //si le panier n'est pas vide, creation du panier latéral ET du total à chaque chargement de vue;
        public JsonResult GetPanierHtml(string idSession)
        {
            PanierModel panierModel = null;

            PanierHtml panierHtml = new PanierHtml();

            //panier et total n'est valent rien si l'utilisateur n'a pas de panier
            panierHtml.hmtl  = "";
            panierHtml.total = 0;

            SessionUtilisateur sessionUtilisateur = db.SessionUtilisateurs.Find(idSession);

            if (sessionUtilisateur != null)
            {
                if (HttpContext.Application[idSession] != null)
                {
                    panierModel = (PanierModel)HttpContext.Application[idSession];

                    panierHtml = ShowPanier(panierModel);
                }
            }
            return(Json(new { panier = panierHtml.hmtl, total = string.Format("{0:0.00}", panierHtml.total) }, JsonRequestBehavior.AllowGet));
        }
コード例 #21
0
        //GET: SW
        public JsonResult AddProduit(int idProduit, string idSession)
        {
            SessionUtilisateur sessionUtilisateur = db.SessionUtilisateurs.Find(Session.SessionID);
            PanierModel        panierModel        = null;

            if (sessionUtilisateur != null)
            {
                if (HttpContext.Application[idSession] != null)
                {
                    panierModel = (PanierModel)HttpContext.Application[idSession];
                }
                else
                {
                    panierModel = new PanierModel();
                }


                //si le produit n'est pas présent dans le panier je le récupère
                Produit produit = db.Produits.Find(idProduit);

                ProduitPanier produitPanier = FindProduit(idProduit);

                if (produitPanier != null)
                {
                    panierModel.Add(produitPanier);
                }


                panierModel.GetQuantite();

                //Je sauve mon panier en session
                HttpContext.Application[idSession] = panierModel;
            }

            //Je retourne en Json le nombre de lignes
            return(Json(panierModel.Quantite, JsonRequestBehavior.AllowGet));
        }
コード例 #22
0
        public ActionResult Panier()
        {
            PanierModel panier = (PanierModel)HttpContext.Application[Session.SessionID];

            return(View());
        }
コード例 #23
0
        public JsonResult SaveCommande(string idSession)
        {
            PanierModel panier      = (PanierModel)HttpContext.Application[idSession] ?? new PanierModel();
            Utilisateur utilisateur = ((CustomIdentity)User.Identity).Utilisateur;

            if (utilisateur == null)
            {
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return(Json("Utilisateur non trouvé.", JsonRequestBehavior.AllowGet));
            }

            if (panier.Count == 0)
            {
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return(Json("Votre panier est vide.", JsonRequestBehavior.AllowGet));
            }

            if (panier.Montant > utilisateur.Solde || utilisateur.Solde <= 0)
            {
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return(Json("Votre solde est insuffisant.", JsonRequestBehavior.AllowGet));
            }


            foreach (ItemPanier itemPanier in panier)
            {
                /*if (itemPanier is ProduitPanier produitPanier)
                 * {
                 *
                 * }*/
            }

            utilisateur.Solde -= panier.Montant;


            Commande commande = new Commande()
            {
                IdUtilisateur  = utilisateur.IdUtilisateur,
                IdRestaurant   = panier.IdRestaurant,
                Date           = DateTime.Now,
                Prix           = panier.Montant,
                IdEtatCommande = 1
            };

            foreach (ProduitPanier produitPanier in panier)
            {
                CommandeProduit commandeProduit = new CommandeProduit()
                {
                    IdCommande = commande.IdCommande,
                    IdProduit  = produitPanier.IdProduit,
                    Prix       = produitPanier.Prix,
                    Quantite   = produitPanier.Quantite
                };

                commande.CommandeProduits.Add(commandeProduit);
            }

            db.Commandes.Add(commande);
            db.SaveChanges();

            panier.Clear();

            AddFLash(Utilities.FlashMessageType.Success, "Commande effectuée avec succès");
            return(Json("Commande effectuée avec succès", JsonRequestBehavior.AllowGet));
        }
コード例 #24
0
ファイル: PanierController.cs プロジェクト: Jakception/IShop
 private PanierController(PanierModel panierModelIoc)
 {
     panierModel = panierModelIoc;
 }
コード例 #25
0
        public JsonResult SaveCommande(string idSession)
        {
            PanierModel panierModel = null;

            SessionUtilisateur sessionUtilisateur = db.SessionUtilisateurs.Find(Session.SessionID);

            string message = "";

            //On vérifie l'existence d'un utilisateur en session
            if (sessionUtilisateur != null)
            {
                //On récupère son panier
                if (HttpContext.Application[idSession] != null)
                {
                    panierModel = (PanierModel)HttpContext.Application[idSession];
                }
            }

            //On récupère l'utilisateur en base de données à partir de son idsession
            Utilisateur utilisateur = db.Utilisateurs.First(u => u.IdSession == idSession);

            if (utilisateur != null && utilisateur.Solde > 0 && panierModel != null && panierModel.Count > 0)
            {
                decimal prixTotal    = 0;
                int     idRestaurant = 0;

                //Calcul du montant de la commande
                panierModel.GetMontant();
                prixTotal = panierModel.Montant;

                //On vérifie si le montant de la commande est inférieur au solde avant de sauvegarder la commande
                if (prixTotal <= utilisateur.Solde)
                {
                    //On crée la commande
                    Commande commande = new Commande();
                    commande.IdUtilisateur  = utilisateur.IdUtilisateur;
                    commande.IdRestaurant   = panierModel.IdRestaurant;
                    commande.Date           = DateTime.Now;
                    commande.Prix           = prixTotal;
                    commande.IdEtatCommande = 1;

                    utilisateur.Solde -= prixTotal;


                    //On parcourt tous les produits dans le panierModel pour les enregistrer en bdd
                    foreach (ItemPanier itemPanier in panierModel)
                    {
                        if (itemPanier is ProduitPanier)
                        {
                            CommandeProduit commandeProduit = new CommandeProduit();

                            commandeProduit.IdProduit = itemPanier.GetIdProduit();
                            commandeProduit.Prix      = itemPanier.Prix;
                            commandeProduit.Quantite  = itemPanier.Quantite;

                            commande.CommandeProduits.Add(commandeProduit);
                        }

                        else if (itemPanier is MenuPanier menuPanier)
                        {
                            List <ProduitPanier> produitPaniers = menuPanier.produits;
                            Menu menu = db.Menus.Find(itemPanier.GetIdMenu());

                            foreach (ProduitPanier itemProduits in produitPaniers)
                            {
                                CommandeProduit commandeProduit = new CommandeProduit();

                                commandeProduit.IdProduit = itemPanier.GetIdProduit();
                                commandeProduit.Prix      = itemPanier.Prix;
                                commandeProduit.Quantite  = itemPanier.Quantite;
                                commandeProduit.Menus.Add(menu);
                                commande.CommandeProduits.Add(commandeProduit);
                            }
                        }

                        else if (itemPanier is ProduitComposePanier produitComposePanier)
                        {
                            List <ProduitPanier> produitPaniers = produitComposePanier.produits;
                            Menu menu = db.Menus.Find(itemPanier.GetIdMenu());

                            foreach (ProduitPanier itemProduits in produitPaniers)
                            {
                                CommandeProduit commandeProduit = new CommandeProduit();

                                commandeProduit.IdProduit = itemPanier.GetIdProduit();
                                commandeProduit.Prix      = itemPanier.Prix;
                                commandeProduit.Quantite  = itemPanier.Quantite;
                                commandeProduit.Menus.Add(menu);
                                commande.CommandeProduits.Add(commandeProduit);
                            }
                        }
                    }

                    db.Commandes.Add(commande);
                    db.SaveChanges();
                }
            }

            return(Json(message, JsonRequestBehavior.AllowGet));
        }
コード例 #26
0
        //méthode de sauvegarde du panier en bdd
        public JsonResult SaveCommande(string idSession)
        {
            PanierModel panierModel = null;

            //à faire : gérer les messages associés au déroulé de l'action (succes, solde insufisant, panier vide...)
            string statementReturn = "errorProcess";

            SessionUtilisateur sessionUtilisateur = db.SessionUtilisateurs.Find(idSession);

            //on vérifie l'existence d'un utilisateur en session et on récupère son panier
            if (sessionUtilisateur != null && HttpContext.Application[idSession] != null)
            {
                panierModel = (PanierModel)HttpContext.Application[idSession];
            }

            //on récupère l'utilisateur en base de données
            Utilisateur utilisateur = db.Utilisateurs.First(u => u.IdSession == idSession);

            if (utilisateur != null && utilisateur.Solde > 0 && panierModel != null && panierModel.Count > 0)
            {
                decimal prixTotal = 0;

                //calcul du montant total de la commande
                panierModel.GetTotal();
                prixTotal = panierModel.Total;


                //on vérifie si le montant est inférieur au solde avant d'enregistrer la commande
                if (prixTotal > utilisateur.Solde)
                {
                    statementReturn = "soldeError";
                    return(Json(statementReturn, JsonRequestBehavior.AllowGet));
                }
                //on créé la commande
                Commande commande = new Commande();
                commande.IdUtilisateur  = utilisateur.IdUtilisateur;
                commande.IdRestaurant   = panierModel.IdRestaurant;
                commande.Date           = DateTime.Now;
                commande.Prix           = prixTotal;
                commande.IdEtatCommande = 1;
                commande.ClicEat        = false;

                utilisateur.Solde -= prixTotal;

                //on parcours tous les produits dans le panierModel pour les enregistrer en bdd
                foreach (ItemPanier itemPanier in panierModel)
                {
                    if (itemPanier is ProduitPanier)
                    {
                        CommandeProduit commandeProduit = new CommandeProduit();
                        commandeProduit.IdProduit = itemPanier.GetIdProduit();
                        commandeProduit.Prix      = itemPanier.Prix;
                        commandeProduit.Quantite  = itemPanier.Quantite;
                        commande.CommandeProduits.Add(commandeProduit);
                    }
                    else if (itemPanier is MenuPanier menuPanier)
                    {
                        List <ProduitPanier> produitPaniers = menuPanier.produits;
                        Menu menu = db.Menus.Find(itemPanier.GetIdMenu());

                        foreach (ProduitPanier itemProduit in produitPaniers)
                        {
                            CommandeProduit commandeProduit = new CommandeProduit();
                            commandeProduit.IdProduit = itemProduit.GetIdProduit();
                            commandeProduit.Prix      = itemProduit.Prix;
                            commandeProduit.Quantite  = itemProduit.Quantite;
                            commandeProduit.Menus.Add(menu);
                            commande.CommandeProduits.Add(commandeProduit);
                        }
                    }
                    else if (itemPanier is ProduitComposePanier produitComposePanier)
                    {
                        List <ProduitPanier> produitPaniers = produitComposePanier.produits;
                        foreach (ProduitPanier itemProduit in produitPaniers)
                        {
                            CommandeProduit commandeProduit = new CommandeProduit();
                            commandeProduit.IdProduit = itemPanier.GetIdProduit();
                            commandeProduit.Prix      = itemPanier.Prix;
                            commandeProduit.Quantite  = itemPanier.Quantite;
                            commande.CommandeProduits.Add(commandeProduit);
                        }
                    }
                }

                db.Commandes.Add(commande);
                db.SaveChanges();
                //le panier est vidé
                panierModel.Clear();

                statementReturn = "commmandeOk";
            }
            return(Json(statementReturn, JsonRequestBehavior.AllowGet));
        }
コード例 #27
0
        //ajout d'une commande Clic Eat au panier
        public JsonResult AddClicEatPanier(int idCommande, string idSession)
        {
            PanierHtml panierHtml = new PanierHtml();

            panierHtml.hmtl  = "";
            panierHtml.total = 0;
            string message = "Une erreur est survenue !";

            //récupération de la session de l'utilisateur
            SessionUtilisateur sessionUtilisateur = db.SessionUtilisateurs.Find(idSession);

            //récupération du panier || création d'un panier
            PanierModel panierModel = (PanierModel)HttpContext.Application[idSession] ?? new PanierModel();


            if (sessionUtilisateur != null && idCommande > 0)
            {
                //on récupère la commande en bdd
                Commande ClicEat = db.Commandes.Find(idCommande);

                //si la commande n'existe pas, stopper la méthode
                if (ClicEat == null)
                {
                    return(Json(new { toast = message }, JsonRequestBehavior.AllowGet));
                }

                //si l'idRestaurant de la commande ne correspond pas aux produits du panier, stopper la méthode
                if (panierModel.IdRestaurant > 0 && panierModel.IdRestaurant != ClicEat.IdRestaurant)
                {
                    message = "Votre panier contient des produits d'un autre restaurant !";
                    return(Json(new { toast = message }, JsonRequestBehavior.AllowGet));
                }

                //on instancie un MenuPanier vide pour les menus
                MenuPanier menuPanier = new MenuPanier();

                foreach (CommandeProduit commandeProduit in ClicEat.CommandeProduits)
                {
                    //si ma commande est un menu
                    if (commandeProduit.Menus.Count > 0)
                    {
                        //on récupère le produit
                        ProduitPanier produitPanier = FindProduit(commandeProduit.IdProduit);

                        //on ajoute le produit au menu
                        if (produitPanier != null)
                        {
                            menuPanier.produits.Add(produitPanier);
                        }

                        //une fois le menu complet (3 produits), j'ajoute l'ajoute au panier
                        if (menuPanier.produits.Count == 3)
                        {
                            menuPanier.IdMenu        = commandeProduit.Menus.FirstOrDefault().IdMenu;
                            menuPanier.Nom           = commandeProduit.Menus.FirstOrDefault().Nom;
                            menuPanier.Prix          = commandeProduit.Menus.FirstOrDefault().Prix;
                            menuPanier.Quantite      = commandeProduit.Quantite;
                            menuPanier.IdRestaurant  = commandeProduit.Menus.FirstOrDefault().IdRestaurant;
                            panierModel.IdRestaurant = menuPanier.IdRestaurant;
                            panierModel.AddItem(menuPanier);

                            //on réinitialise le MenuPanier au cas où il y a d'autres menus dans la commande
                            menuPanier = new MenuPanier();
                        }
                    }
                    else if (commandeProduit.Menus.Count == 0)
                    {
                        ProduitPanier produitPanier = FindProduit(commandeProduit.IdProduit);
                        produitPanier.Quantite = commandeProduit.Quantite;


                        if (produitPanier != null)
                        {
                            //si le panier est vide
                            if (panierModel.IdRestaurant == 0)
                            {
                                panierModel.IdRestaurant = produitPanier.IdRestaurant;
                                panierModel.AddItem(produitPanier);
                            }
                            //si le panier n'est pas vide
                            else if (panierModel.IdRestaurant == produitPanier.IdRestaurant)
                            {
                                panierModel.AddItem(produitPanier);
                            }
                        }
                    }
                    message = "Commande ajoutée au panier !";
                }
            }

            //enregistrement du panier
            HttpContext.Application[idSession] = panierModel;

            //creation html du panier, necessaire pour prix total sur navbar
            panierHtml = ShowPanier(panierModel);

            return(Json(new { toast = message, total = string.Format("{0:0.00}", panierHtml.total) }, JsonRequestBehavior.AllowGet));
        }