//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)); }
//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)); }
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)); }
//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)); }
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)); }
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)); }
public IActionResult Update([FromBody] PanierModel panierModel) { _logger.LogDebug("PaniersManagementController: Update() called"); if (panierModel == null) { return(BadRequest()); } return(Ok(_service.Update <PanierModel>(panierModel))); }
public ActionResult Panier() { PanierModel panier = (PanierModel)HttpContext.Application[Session.SessionID]; if (panier != null && panier.Count > 0) { return(View(panier)); } return(RedirectToAction("Index", "Restaurants")); }
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)); }
// 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)); }
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)); }
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)); }
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); }
//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 + " x</span> " + 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); }
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)); }
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)); }
//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)); }
//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)); }
//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)); }
//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)); }
//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)); }
public ActionResult Panier() { PanierModel panier = (PanierModel)HttpContext.Application[Session.SessionID]; return(View()); }
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)); }
private PanierController(PanierModel panierModelIoc) { panierModel = panierModelIoc; }
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)); }
//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)); }
//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)); }