protected void Page_Load(object sender, EventArgs e)
    {
        if (!Session.IsVendeur())
        {
            Response.Redirect(SessionManager.RedirectConnexionLink);
        }

        if (!IsPostBack)
        {
            ddlChoix.Items.Add(new ListItem("1 mois", "1"));
            ddlChoix.Items.Add(new ListItem("2 mois", "2"));
            ddlChoix.Items.Add(new ListItem("3 mois", "3"));
            ddlChoix.Items.Add(new ListItem("6 mois", "6"));

            ddlChoix.SelectedValue = "6";
        }
        //for pour remplir les paniers
        vendeur = Session.GetVendeur();

        PPArticlesEnPanier articlesEnPanier = new PPArticlesEnPanier();
        PPProduits         produits         = new PPProduits();
        PPClients          clients          = new PPClients();

        int      nbMois = int.Parse(ddlChoix.SelectedValue);
        DateTime min    = DateTime.Today.AddMonths(-1 * nbMois);

        var yes = from article in articlesEnPanier.Values
                                                               //join vendeur in vendeurs.Values on article.NoVendeur equals vendeur.NoVendeur
                  join produit in produits.Values on article.NoProduit equals produit.NoProduit
                  where article.NoVendeur == vendeur.NoVendeur // && article.DateCreation.Value.Date > min
                  orderby article.DateCreation ascending
                  select new { Article = article, Produit = produit };

        var grouped = from article in yes
                      group article by article.Article.NoClient into g
                      join client in clients.Values on g.Key equals client.NoClient
                      select new
        {
            NoClient = g.Key,
            Client   = client,
            Articles = g.ToList()
        };

        int   index  = 0;
        int   index2 = 0;
        Panel rows   = null;

        /* if (grouped.Count() == 0)
         * {
         *   rows = pnHaut.DivDyn("", "row mb-3");
         *   rows.DivDyn("", "col-2");
         *   Panel pnCol = rows.DivDyn("", "");
         *   pnCol.LblDyn("lblVide", "Vous n'avez aucun panier pour cette période de temps : " + ddlChoix.SelectedItem, "h4 text-info");
         * }
         * else { */

        bool auMoinsUNPanier = false;

        foreach (var group in grouped)
        {
            bool dateChecker = false;
            foreach (var ap in group.Articles)
            {
                if (ap.Article.DateCreation.Value.Date >= min)
                {
                    dateChecker     = true;
                    auMoinsUNPanier = true;
                }
            }

            if (dateChecker)
            {
                string   nomClient      = "Annonyme";
                string   noClient       = group.Client.NoClient.ToString();
                decimal  montant        = 0;
                int      nombreArticles = 0;
                DateTime datePanier     = DateTime.Now;

                if (group.Client.Prenom != null && group.Client.Nom != null)
                {
                    nomClient = group.Client.Prenom + " " + group.Client.Nom;
                }

                foreach (var article in group.Articles)
                {
                    nombreArticles++;
                    montant   += article.Produit.PrixDemande.Value * article.Article.NbItems.Value;
                    datePanier = article.Article.DateCreation.Value.Date;
                }

                rows = pnHaut.DivDyn("", "row mb-3");

                /* if (index % 2 == 0)
                 * {
                 *   rows = pnHaut.DivDyn("", "row mb-3");
                 *   index2++;
                 * }*/


                //header des categories
                Panel panelCard            = rows.DivDyn("", "col-12");
                Panel card                 = panelCard.DivDyn("", "card");
                Panel panelTitreCategories = card.DivDyn("", "card-header fake-button");
                panelTitreCategories.LblDyn("", nomClient, "card-title h5 text-info");
                panelTitreCategories.LblDyn("", "valeur de " + montant.ToString("N2") + " $", "ml-3 card-title h6");
                panelTitreCategories.LblDyn("", "Articles (" + nombreArticles.ToString() + ")", "ml-3 card-title h6");
                panelTitreCategories.LblDyn("", datePanier.ToString("yyyy/MM/dd"), "ml-3 card-title h6 text-success");

                //Assigner les options de collapse au header
                panelTitreCategories.Attributes.Add("data-toggle", "collapse");
                panelTitreCategories.Attributes.Add("data-target", "#Contenu_ContenuPrincipal_collapsePanier" + index.ToString() + index2.ToString());
                panelTitreCategories.Attributes.Add("aria-expanded", "false");
                panelTitreCategories.Attributes.Add("aria-controls", "Contenu_ContenuPrincipal_collapsePanier" + index.ToString() + index2.ToString());


                Panel collapsable;
                //body des categories

                collapsable = card.DivDyn("collapsePanier" + index.ToString() + index2.ToString(), "collapse collapse");


                Panel panelBodyCat = collapsable.DivDyn("", "card-body");

                //prix total
                Panel rowTotal = panelBodyCat.DivDyn("", "row ml-3");
                rowTotal.LblDyn("", "total de ce panier : ", "h4 mb-3");
                rowTotal.LblDyn("", montant.ToString("N2") + " $", "h4 text-success mb-3 ml-2");

                //colones header

                Table           table    = panelBodyCat.TableDyn("", "table table-hover fake-button");
                TableHeaderRow  rowTable = table.ThrDyn();
                TableHeaderCell CellCss  = rowTable.ThdDyn("");

                rowTable.ThdDyn("Produit");
                CellCss          = rowTable.ThdDyn("Prix unitaire");
                CellCss.CssClass = "text-right";
                CellCss          = rowTable.ThdDyn("Poids unitaire");
                CellCss.CssClass = "text-right";
                CellCss          = rowTable.ThdDyn("Qte");
                CellCss.CssClass = "text-center";
                CellCss          = rowTable.ThdDyn("Prix total (sans rabais)");
                CellCss.CssClass = "text-right";

                foreach (var article in group.Articles)
                {
                    //contenu des collapse

                    string  nomArticle     = article.Produit.Nom;
                    string  lblRabais      = "";
                    decimal montantArticle = -1;
                    if (article.Produit.PrixVente != article.Produit.PrixDemande && article.Produit.DateVente >= DateTime.Today)
                    {
                        decimal montantRabais = article.Produit.PrixDemande.Value - article.Produit.PrixVente.Value;
                        lblRabais      = "rabais! (" + montantRabais.ToString("N2") + "$) finit le " + article.Produit.DateVente.Value.ToString("yyyy-MM-dd");
                        montantArticle = article.Produit.PrixDemande.Value;
                    }
                    else
                    {
                        montantArticle = article.Produit.PrixDemande.Value;
                    }
                    decimal poidsArticle = article.Produit.Poids.Value;
                    short   nbItems      = article.Article.NbItems.Value;
                    decimal prix         = article.Produit.PrixDemande.Value * article.Article.NbItems.Value;

                    TableRow nRow = table.TrDyn();
                    nRow.Attributes.Add("OnClick", "ouvrirDetailProduit('" + article.Produit.NoProduit.ToString() + "');");

                    TableCell cell1 = nRow.TdDyn("", "");
                    cell1.ImgDyn("", "~/Pictures/" + article.Produit.Photo, "imgResize");

                    TableCell cell2 = nRow.TdDyn();
                    cell2.LblDyn("", nomArticle, "");

                    TableCell cell3 = nRow.TdDyn("", "text-right");
                    cell3.LblDyn("", montantArticle.ToString("N2") + " $ ", "");
                    cell3.BrDyn();
                    cell3.LblDyn("", lblRabais, "text-success");

                    TableCell cell4 = nRow.TdDyn("", "text-right");
                    cell4.LblDyn("", poidsArticle.ToString("N2") + " Lbs", "");

                    TableCell cell5 = nRow.TdDyn("", "text-center");
                    cell5.LblDyn("", "(" + nbItems.ToString() + ")", "");

                    TableCell cell6 = nRow.TdDyn("", "text-right");
                    cell6.LblDyn("", prix.ToString("N2") + " $", "text-success");
                }
                Panel  rowBtnSupprimer = collapsable.DivDyn("", "row ml-3 mr-3 mb-3");
                Button btnClient       = rowBtnSupprimer.BtnDyn("btn" + group.NoClient, "Courriel", btnCourriel_Click, "btn btn-outline-dark btn-block");
                btnClient.CommandArgument = (group.NoClient).ToString();
            }
            index++;
        }

        if (!auMoinsUNPanier)
        {
            rows = pnHaut.DivDyn("", "row mb-3");
            rows.DivDyn("", "col-2");
            Panel pnCol = rows.DivDyn("", "");
            pnCol.LblDyn("lblVide", "Vous n'avez aucun panier pour cette période de temps : " + ddlChoix.SelectedItem, "h4 text-info");
        }
        // }

        //paniers du bas
        PPArticlesEnPanier articlesEnPanier2 = new PPArticlesEnPanier();
        PPProduits         produits2         = new PPProduits();
        PPClients          clients2          = new PPClients();

        rows = null;
        min  = DateTime.Today.AddMonths(-6);
        var yes2 = from article in articlesEnPanier2.Values
                                                                //join vendeur in vendeurs.Values on article.NoVendeur equals vendeur.NoVendeur
                   join produit in produits2.Values on article.NoProduit equals produit.NoProduit
                   where article.NoVendeur == vendeur.NoVendeur //&& article.DateCreation.Value.Date < min // Mettre la variable pour gérer les mois
                   orderby article.DateCreation ascending
                   select new { Article = article, Produit = produit };

        var groupedBas = from article in yes2
                         group article by article.Article.NoClient into g
                         join client in clients2.Values on g.Key equals client.NoClient
                         select new
        {
            NoClient = g.Key,
            Client   = client,
            Articles = g.ToList()
        };


        index  = 0;
        index2 = 0;

        bool auMoinsUNPanierH = false;

        if (groupedBas.Count() <= 0)
        {
            auMoinsUNPanierH = true;
        }

        foreach (var group in groupedBas)
        {
            bool dateChecker = false;
            foreach (var ap in group.Articles)
            {
                if (ap.Article.DateCreation.Value.Date > min)
                {
                    dateChecker = true;
                }
            }

            if (!dateChecker)
            {
                auMoinsUNPanierH = true;
                string   nomClient      = "Annonyme";
                string   noClient       = group.Client.NoClient.ToString();
                decimal  montant        = 0;
                int      nombreArticles = 0;
                DateTime datePanier     = DateTime.Now;

                if (group.Client.Prenom != null && group.Client.Nom != null)
                {
                    nomClient = group.Client.Prenom + " " + group.Client.Nom;
                }

                foreach (var article in group.Articles)
                {
                    nombreArticles++;
                    montant   += article.Produit.PrixDemande.Value * article.Article.NbItems.Value;
                    datePanier = article.Article.DateCreation.Value.Date;
                }
                rows = panelVieux.DivDyn("", "row mb-3");

                /*  if (index % 2 == 0)
                 * {
                 *    rows = panelVieux.DivDyn("", "row mb-3");
                 *    index2++;
                 * }*/

                //header des categories
                Panel panelCard            = rows.DivDyn("", "col-12");
                Panel card                 = panelCard.DivDyn("", "card");
                Panel panelTitreCategories = card.DivDyn("", "card-header fake-button");

                panelTitreCategories.LblDyn("", nomClient, "card-title h5 text-info");
                panelTitreCategories.LblDyn("", "valeur de " + montant.ToString("N2") + " $", "ml-3 card-title h6");
                panelTitreCategories.LblDyn("", "Articles (" + nombreArticles.ToString() + ")", "ml-3 card-title h6");
                panelTitreCategories.LblDyn("", datePanier.ToString("yyyy/MM/dd"), "ml-3 card-title h6 text-danger");


                //Assigner les options de collapse au header
                panelTitreCategories.Attributes.Add("data-toggle", "collapse");
                panelTitreCategories.Attributes.Add("data-target", "#Contenu_ContenuPrincipal_collapsePanierBas" + index.ToString() + index2.ToString());
                panelTitreCategories.Attributes.Add("aria-expanded", "false");
                panelTitreCategories.Attributes.Add("aria-controls", "Contenu_ContenuPrincipal_collapsePanierBas" + index.ToString() + index2.ToString());


                Panel collapsable;
                //body des categories

                collapsable = card.DivDyn("collapsePanierBas" + index.ToString() + index2.ToString(), "collapse collapse");


                Panel panelBodyCat = collapsable.DivDyn("", "card-body");

                //prix total
                Panel rowTotal = panelBodyCat.DivDyn("", "row ml-3");
                rowTotal.LblDyn("", "total de ce panier : ", "h4 mb-3");
                rowTotal.LblDyn("", montant.ToString("N2") + " $", "h4 text-success mb-3 ml-2");

                //colones header
                Table           table    = panelBodyCat.TableDyn("", "table table-hover fake-button");
                TableHeaderRow  rowTable = table.ThrDyn();
                TableHeaderCell CellCss  = rowTable.ThdDyn("");

                rowTable.ThdDyn("Produit");
                CellCss          = rowTable.ThdDyn("Prix unitaire");
                CellCss.CssClass = "text-right";
                CellCss          = rowTable.ThdDyn("Poids unitaire");
                CellCss.CssClass = "text-right";
                CellCss          = rowTable.ThdDyn("Qte");
                CellCss.CssClass = "text-center";
                CellCss          = rowTable.ThdDyn("Prix total (sans rabais)");
                CellCss.CssClass = "text-right";

                foreach (var article in group.Articles)
                {
                    //contenu des collapse

                    string  nomArticle     = article.Produit.Nom;
                    string  lblRabais      = "";
                    decimal montantArticle = -1;
                    if (article.Produit.PrixVente != article.Produit.PrixDemande && article.Produit.DateVente >= DateTime.Today)
                    {
                        decimal montantRabais = article.Produit.PrixDemande.Value - article.Produit.PrixVente.Value;
                        lblRabais      = "rabais! (" + montantRabais.ToString("N2") + "$) finit le" + article.Produit.DateVente.Value.ToString("yyyy-MM-dd");
                        montantArticle = article.Produit.PrixDemande.Value;
                    }
                    else
                    {
                        montantArticle = article.Produit.PrixDemande.Value;
                    }
                    decimal poidsArticle = article.Produit.Poids.Value;
                    short   nbItems      = article.Article.NbItems.Value;
                    decimal prix         = article.Produit.PrixDemande.Value * article.Article.NbItems.Value;

                    TableRow nRow = table.TrDyn();
                    nRow.Attributes.Add("OnClick", "ouvrirDetailProduit('" + article.Produit.NoProduit.ToString() + "');");

                    TableCell cell1 = nRow.TdDyn("", "");
                    cell1.ImgDyn("", "~/Pictures/" + article.Produit.Photo, "imgResize");

                    TableCell cell2 = nRow.TdDyn();
                    cell2.LblDyn("", nomArticle, "h6");

                    TableCell cell3 = nRow.TdDyn("", "text-right");
                    cell3.LblDyn("", montantArticle.ToString("N2") + " $ ", "");
                    cell3.BrDyn();
                    cell3.LblDyn("", lblRabais, "text-success");

                    TableCell cell4 = nRow.TdDyn("", "text-right");
                    cell4.LblDyn("", poidsArticle.ToString("N2") + " Lbs", "");

                    TableCell cell5 = nRow.TdDyn("", "text-center");
                    cell5.LblDyn("", "(" + nbItems.ToString() + ")", "");

                    TableCell cell6 = nRow.TdDyn("", "text-right");
                    cell6.LblDyn("", prix.ToString("N2") + " $", "text-success");
                }
                Panel  rowBtnSupprimer = collapsable.DivDyn("", "row ml-3 mr-3 mb-3");
                Button btnClient       = rowBtnSupprimer.BtnDyn("", "Courriel", btnCourriel_Click, "btn btn-outline-dark col-5");
                btnClient.CommandArgument = group.NoClient.ToString();
                rowBtnSupprimer.DivDyn("", "col-2");
                Button btn = rowBtnSupprimer.BtnDyn("", "Supprimer", null, "btn btn-outline-danger col-5");

                btn.OnClientClick = "return false;";
                btn.Attributes.Add("data-toggle", "modal");
                btn.Attributes.Add("data-target", "#Contenu_ContenuPrincipal_myModal" + index.ToString() + index2.ToString());

                modal(panelAvecModal, "myModal" + index.ToString() + index2.ToString(), group.NoClient.ToString(), "idBtnAnnuler" + index.ToString() + index2.ToString(), "Supression", "Voulez vous supprimer ce panier", true);
            }
            index++;
        }

        if (!auMoinsUNPanierH)
        {
            panelVieux.LblDyn("", "Vous n'avez aucun panier vieux de plus de 6 mois", "text-info h4");
        }

        /* }
         * else
         * {
         *   panelVieux.LblDyn("", "Vous n'avez aucun panier vieux de plus de 6 mois", "text-info h4");
         * }*/
    }