Exemplo n.º 1
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));
        }
Exemplo n.º 2
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));
        }
Exemplo n.º 3
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));
        }