//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)); }
//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)); }
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)); }