/* * Init */ /// <summary> /// Génerer les paniers /// </summary> private void GenerePaniers() { Client client = Session.GetClient(); var panierArticlesParVendeurs = from article in db.articlesEnPanier.Values join produit in db.produits.Values on article.NoProduit equals produit.NoProduit where article.NoClient == client.NoClient select new { Article = article, Produit = produit } into articleProduit group articleProduit by articleProduit.Article.NoVendeur into g join vendeur in db.vendeurs.Values on g.Key equals vendeur.NoVendeur select new { Vendeur = vendeur, Articles = g.ToList() }; foreach (var group in panierArticlesParVendeurs) { // Ajouter les vendeurs au DropDownList string pnlVendeurId = $"pnlVendeur{group.Vendeur.NoVendeur}"; dictVendeurs.Add(group.Vendeur, pnlVendeurId); // Faire les paniers pnlPaniersGeneres.CardDyn( pnlVendeurId, "mb-3", lbl => lbl.HlinkDYN("", $"~/Pages/Client/Catalogue.aspx?NoVendeur={group.Vendeur.NoVendeur}", group.Vendeur.NomAffaires, "text-white"), pnlBody => { Table tablePanier = pnlBody.TableDyn("", "table table-hover fake-button"); TableHeaderRow headerRow = tablePanier.ThrDyn(); headerRow.ThdDyn("Image"); headerRow.ThdDyn("Nom"); headerRow.ThdDyn("Description"); headerRow.ThdDyn("Poids<br/>(Livre)"); headerRow.ThdDyn("Quantité commandée"); headerRow.ThdDyn("Prix individuel"); headerRow.ThdDyn("Prix"); TableHeaderCell cellHeaderSupprimerTout = headerRow.ThdDyn(); cellHeaderSupprimerTout.BtnClientDyn("", "Vider le panier", $"supprimerPanier({client.NoClient}, {group.Vendeur.NoVendeur}); return false;", "btn btn-dark btn-block"); List <decimal> lstPrixPanier = new List <decimal>(); List <decimal> lstPrixPanierAvant = new List <decimal>(); List <decimal> lstPoidsPanier = new List <decimal>(); foreach (var article in group.Articles) { decimal prixIndividuel = 0; bool prixIndividuelVente = false; if ((article.Produit.PrixVente.HasValue && article.Produit.PrixVente != article.Produit.PrixDemande) && (!article.Produit.DateVente.HasValue || article.Produit.DateVente >= DateTime.Now)) { prixIndividuel = article.Produit.PrixVente.Value; prixIndividuelVente = true; } else { prixIndividuel = article.Produit.PrixDemande.Value; } short nbItems = article.Produit.NombreItems.Value; short nbItemsDansPanier = article.Article.NbItems.Value; TableRow row = tablePanier.TrDyn(); string windowLocation = $"window.location.href = '/Pages/Client/InfoProduit.aspx?ID={article.Produit.NoProduit}'"; TableCell cellImage = row.TdDyn(); cellImage.ImgDyn("", "~/Pictures/" + article.Produit.Photo, "image-panier"); cellImage.Attributes.Add("onclick", windowLocation); TableCell cellNom = row.TdDyn(article.Produit.Nom); cellNom.Attributes.Add("onclick", windowLocation); TableCell cellDescription = row.TdDyn(article.Produit.Description); cellDescription.Attributes.Add("onclick", windowLocation); TableCell cellPoids = row.TdDyn(article.Produit.Poids.ToString()); cellPoids.Attributes.Add("onclick", windowLocation); TableCell cellQuantite = row.TdDyn(); DropDownList ddlQuantite = cellQuantite.DdlDyn("", $"quantiteArticle({article.Article.NoPanier}, this);", "form-control"); // Make sure the label doesn't have values (happens when reloading even though it should be replaced) ddlQuantite.Items.Clear(); for (int i = 1; i <= nbItems; i++) { ddlQuantite.Items.Add(i.ToString()); } ddlQuantite.SelectedIndex = nbItemsDansPanier - 1; // Prix individuel if (prixIndividuelVente) { TableCell cellPrix = row.TdDyn(); cellPrix.CssClass = "text-right"; cellPrix.Attributes.Add("onclick", windowLocation); decimal prixDemande = article.Produit.PrixDemande.Value; cellPrix.LblDyn("", prixDemande.ToString("N2") + "$<br/>", "text-secondary"); decimal pourcent = ((prixIndividuel / article.Produit.PrixDemande.Value) * 100) - 100; cellPrix.LblDyn("", $"{pourcent.ToString("N2")}%<br/>", "text-success"); cellPrix.LblDyn("", prixIndividuel.ToString("N2") + "$", "text-success"); decimal prixNbAvant = prixDemande * nbItemsDansPanier; lstPrixPanierAvant.Add(prixDemande * nbItemsDansPanier); TableCell cellPrixNb = row.TdDyn(); cellPrixNb.CssClass = "text-right"; cellPrixNb.Attributes.Add("onclick", windowLocation); cellPrixNb.LblDyn("", prixNbAvant.ToString("N2") + "$<br/>", "text-secondary"); decimal prixNb = prixIndividuel * nbItemsDansPanier; lstPrixPanier.Add(prixNb); cellPrixNb.LblDyn("", prixNb.ToString("N2") + "$", "text-success"); } else { TableCell cellPrixIndividuel = row.TdDyn(prixIndividuel.ToString("N2") + "$"); cellPrixIndividuel.CssClass = "text-right"; cellPrixIndividuel.Attributes.Add("onclick", windowLocation); // Prix decimal prixNb = prixIndividuel * nbItemsDansPanier; TableCell cellPrix = row.TdDyn(prixNb.ToString("N2") + "$"); cellPrix.CssClass = "text-right"; cellPrix.Attributes.Add("onclick", windowLocation); lstPrixPanier.Add(prixNb); } TableCell cellSupprimerArticle = row.TdDyn(); cellSupprimerArticle.BtnClientDyn("", "Supprimer l'article", $"supprimerArticle({article.Article.NoPanier}); return false;", "btn btn-dark btn-block"); } if (lstPrixPanier.Count > 0) { TableRow rowEnd = tablePanier.TrDyn(); rowEnd.TdDyn(); rowEnd.TdDyn(); rowEnd.TdDyn(); rowEnd.TdDyn(); rowEnd.TdDyn(); rowEnd.TdDyn(); TableCell cellPrixTotal = rowEnd.TdDyn(); cellPrixTotal.CssClass = "text-right"; cellPrixTotal.LblDyn("", lstPrixPanier.Sum().ToString("N2") + "$"); rowEnd.TdDyn(); } decimal poidsMax = group.Vendeur.PoidsMaxLivraison.Value; decimal poidsCommande = group.Articles.Sum(x => x.Produit.Poids * x.Article.NbItems).Value; Panel pnlPoids = pnlBody.DivDyn("", "w-100 text-right"); pnlPoids.LblDyn("", $"Poids de la livraison: {poidsCommande} Livre<br/>", "text-secondary"); pnlPoids.LblDyn("", $"Poids maximal du vendeur: {group.Vendeur.PoidsMaxLivraison} Livre", "text-secondary"); if (poidsMax < poidsCommande) { pnlBody.BtnDyn("", "Le panier est trop lourd de " + (poidsCommande - poidsMax), null, "btn btn-danger btn-block").Enabled = false; } else { Button btn = pnlBody.BtnDyn("", "Commander le panier", btnCommander_OnClick, "btn btn-secondary btn-block mt-3"); btn.Attributes.Add("data-vendeur", group.Vendeur.NoVendeur.ToString()); } }); } }