protected void btnConfirmerNouveauMDP_OnClick(object sender, EventArgs e)
    {
        tbMDP1.DefaultControl();
        tbMDP2.DefaultControl();

        bool[] errors = new bool[]
        {
            tbMDP1.InvalidateIfEmpty(lblErrorMDP1, "Le mot de passe doit être présent") ||
            tbMDP1.CheckMatch(tbMDP2, lblErrorMDP1, lblErrorMDP2, "Les mots de passes ne sont pas identiques"),
            tbMDP2.InvalidateIfEmpty(lblErrorMDP2, "La confirmation de mot de passe doit être présente")
        };

        if (!errors.Contains(true))
        {
            string id   = Request["Id"];
            string type = Request["Type"];
            if (type == "client")
            {
                PPClients clients = new PPClients();
                Client    client  = clients.Values.Find(x => x.NoClient.Value == long.Parse(id));

                client.MotDePasse = tbMDP1.Text;

                clients.NotifyUpdated(client);
                clients.Update();

                Response.Redirect("~/Pages/OubliMDP.aspx?Reussite=true");
            }
            else if (type == "vendeur")
            {
                PPVendeurs vendeurs = new PPVendeurs();
                Vendeur    vendeur  = vendeurs.Values.Find(x => x.NoVendeur.Value == long.Parse(id));

                vendeur.MotDePasse = tbMDP1.Text;
                vendeurs.NotifyUpdated(vendeur);
                vendeurs.Update();

                Response.Redirect("~/Pages/OubliMDP.aspx?Reussite=true");
            }
        }
    }
    protected void btnConnexion_Click(object sender, EventArgs e)
    {
        if (valMDP.IsValid && valNomU.IsValid)
        {
            // Essayer de se connecter en tant que client en premier
            PPClients clients = new PPClients();

            Client client = clients.Values.Find(cli => cli.AdresseEmail.ToLower() == tbNomU.Text.ToLower());
            if (client != null)
            {
                if (client.MotDePasse == tbMDP.Text)
                {
                    if (client.StatutEnum() == ClientStatut.Disabled)
                    {
                        lblErreurSQL.Text = "Ce compte est désactivé";
                    }
                    else
                    {
                        client.NbConnexions++;
                        client.DateDerniereConnexion = DateTime.Now;

                        clients.NotifyUpdated(client);
                        clients.Update();

                        Session.SetClient(client);
                        Response.Redirect("~/Pages/Accueil.aspx");
                    }
                }
                else
                {
                    lblErreurSQL.Text = "L'adresse email ou le mot de passe n'est pas correcte";
                }
            }
            else
            {
                // Essayer en tant que vendeur si le client n'existe pas
                PPVendeurs vendeurs = new PPVendeurs();

                Vendeur vendeur = vendeurs.Values.Find(ven => ven.AdresseEmail.ToLower() == tbNomU.Text.ToLower());
                if (vendeur != null)
                {
                    if (vendeur.MotDePasse == tbMDP.Text)
                    {
                        if (vendeur.StatutEnum() == VendeurStatut.Disabled)
                        {
                            lblErreurSQL.Text = "Ce compte est désactivé";
                        }
                        else if (vendeur.StatutEnum() == VendeurStatut.Pending)
                        {
                            lblErreurSQL.Text = "Ce compte n'a pas encore été accepté par le gestionnaire";
                        }
                        else
                        {
                            Session.SetVendeur(vendeur);
                            Response.Redirect("~/Pages/Vendeur/AccueilVendeur.aspx");
                        }
                    }
                    else
                    {
                        lblErreurSQL.Text = "L'adresse email ou le mot de passe n'est pas correcte";
                    }
                }
                else
                {
                    // Essayer en tant que gestionnaire comme dernier recours
                    PPGestionnaires gestionnaires = new PPGestionnaires();

                    Gestionnaire admin = gestionnaires.Values.Find(adm => adm.Email.ToLower() == tbNomU.Text.ToLower());
                    if (admin != null)
                    {
                        if (admin.MotDePasse == tbMDP.Text)
                        {
                            Session.SetAdmin(admin);
                            Response.Redirect("~/Pages/Admin/PageAccueilAdmin.aspx");
                        }
                        else
                        {
                            lblErreurSQL.Text = "L'adresse email ou le mot de passe n'est pas correcte";
                        }
                    }
                    else
                    {
                        lblErreurSQL.Text = "L'utilisateur n'existe pas";
                    }
                }
            }
        }
    }