private void Popup_AddModUser_Load_1(object sender, EventArgs e)
        {
            // si c'est une modification
            if (utilisateur.numUtilisateur != unNouvelUtilisateur.numUtilisateur)
            {
                TypeUtilisateur lesTypesUtilisateur = new TypeUtilisateur();
                comboBoxTypeUser.DataSource = lesTypesUtilisateur.GetLesTypesUtilisateur();

                foreach (TypeUtilisateur t in comboBoxTypeUser.Items)
                {
                    if (t.libelleTypeUtilisateur == utilisateur.typeUtilisateur.libelleTypeUtilisateur)
                    {
                        comboBoxTypeUser.SelectedItem = t;
                    }
                }

                textBoxLog.Text           = utilisateur.loginUtilisateur;
                textBoxCp.Text            = utilisateur.cpUtilisateur;
                textBoxEm.Text            = utilisateur.mailUtilisateur;
                textBoxNom.Text           = utilisateur.nomUtilisateur;
                textBoxPre.Text           = utilisateur.prenomUtilisateur;
                textBoxRue.Text           = utilisateur.adresseUtilisateur;
                textBoxTel.Text           = utilisateur.telUtilisateur;
                textBoxVille.Text         = utilisateur.villeUtilisateur;
                checkBoxChangeMdp.Visible = true;

                // si il est commercial
                if (utilisateur.typeUtilisateur.codeTypeUtilisateur == 3)
                {
                    labelAjouterPlanningPortefeuille.Visible = false;
                    radioButtonNon.Visible = false;
                    radioButtonOui.Visible = false;

                    if (utilisateur.planning != null)
                    {
                        textBoxPlanning.Visible = true;
                        labelPlanning.Visible   = true;
                        textBoxPlanning.Text    = utilisateur.planning.libellePlanning;
                    }
                    if (utilisateur.porteFeuille != null)
                    {
                        textBoxPortefeuille.Visible = true;
                        labelPortefeuille.Visible   = true;
                        textBoxPortefeuille.Text    = utilisateur.porteFeuille.libellePortefeuille;
                    }
                }
            }
            else
            {
                TypeUtilisateur lesTypesUtilisateur = new TypeUtilisateur();
                comboBoxTypeUser.DataSource = lesTypesUtilisateur.GetLesTypesUtilisateur();
            }
        }
        private void Popup_ModifUser_Load_1(object sender, EventArgs e)
        {
            TypeUtilisateur lesTypesUtilisateur = new TypeUtilisateur();

            comboBoxTypeUser.DataSource   = lesTypesUtilisateur.GetLesTypesUtilisateur();
            comboBoxTypeUser.SelectedItem = comboBoxTypeUser.Items[utilisateur.typeUtilisateur.codeTypeUtilisateur - 1];

            textBoxLog.Text   = utilisateur.loginUtilisateur;
            textBoxCp.Text    = utilisateur.cpUtilisateur;
            textBoxEm.Text    = utilisateur.mailUtilisateur;
            textBoxNom.Text   = utilisateur.nomUtilisateur;
            textBoxPre.Text   = utilisateur.prenomUtilisateur;
            textBoxRue.Text   = utilisateur.adresseUtilisateur;
            textBoxTel.Text   = utilisateur.telUtilisateur;
            textBoxVille.Text = utilisateur.villeUtilisateur;
        }
        private void Popup_AddModUser_Load_1(object sender, EventArgs e)
        {
            TypeUtilisateur lesTypesUtilisateur = new TypeUtilisateur();

            // Si l'utilisateur à l'origine de l'action est gestionnaire, on affiche pas la combobox des types ni le checkbox change password
            if (isGestionnaire == true)
            {
                comboBoxTypeUser.Visible = false;
                labelTu.Visible          = false;
                labelAjouterPlanningPortefeuille.Visible = true;
                radioButtonNon.Visible = true;
                radioButtonOui.Visible = true;
            }
            else
            {
                comboBoxTypeUser.DataSource = lesTypesUtilisateur.GetLesTypesUtilisateur();

                if (utilisateur.typeUtilisateur != null)
                {
                    foreach (TypeUtilisateur t in comboBoxTypeUser.Items)
                    {
                        if (t.libelleTypeUtilisateur == utilisateur.typeUtilisateur.libelleTypeUtilisateur)
                        {
                            comboBoxTypeUser.SelectedItem = t;
                        }
                    }
                }
            }

            if (utilisateur.loginUtilisateur != null)
            {
                textBoxLog.Text = utilisateur.loginUtilisateur;
            }

            if (utilisateur.cpUtilisateur != null)
            {
                textBoxCp.Text = utilisateur.cpUtilisateur;
            }

            if (utilisateur.mailUtilisateur != null)
            {
                textBoxEm.Text = utilisateur.mailUtilisateur;
            }

            if (utilisateur.adresseUtilisateur != null)
            {
                textBoxRue.Text = utilisateur.adresseUtilisateur;
            }

            if (utilisateur.telUtilisateur != null)
            {
                textBoxTel.Text = utilisateur.telUtilisateur;
            }

            if (utilisateur.nomUtilisateur != null)
            {
                textBoxNom.Text = utilisateur.nomUtilisateur;
            }

            if (utilisateur.prenomUtilisateur != null)
            {
                textBoxPre.Text = utilisateur.prenomUtilisateur;
            }

            if (utilisateur.villeUtilisateur != null)
            {
                textBoxVille.Text = utilisateur.villeUtilisateur;
            }

            // Si c'est un ajout d'utilisateur on ne permet pas de modifier le mdp
            if (utilisateur.loginUtilisateur != null)
            {
                checkBoxChangeMdp.Visible = true;
            }
            if (utilisateur.typeUtilisateur != null)
            {
                // si il est commercial
                if (utilisateur.typeUtilisateur.codeTypeUtilisateur == 3)
                {
                    labelAjouterPlanningPortefeuille.Visible = false;
                    radioButtonNon.Visible = false;
                    radioButtonOui.Visible = false;

                    if (utilisateur.planning != null)
                    {
                        textBoxPlanning.Visible = true;
                        labelPlanning.Visible   = true;
                        textBoxPlanning.Text    = utilisateur.planning.libellePlanning;
                    }
                    if (utilisateur.porteFeuille != null)
                    {
                        textBoxPortefeuille.Visible = true;
                        labelPortefeuille.Visible   = true;
                        textBoxPortefeuille.Text    = utilisateur.porteFeuille.libellePortefeuille;
                    }
                }
            }
        }
        private void AjouterUtilisateur(TypeUtilisateur unTypeUtilisateur, string loginUtilisateur, string nomUtilisateur, string prenomUtilisateur, string mailUtilisateur, string telUtilisateur, string adresseUtilisateur,
                                        string villeUtilisateur, string cpUtilisateur, string libellePortefeuille, string libellePlanning, bool changePassword)
        {
            sessionFactory = new Configuration().Configure().BuildSessionFactory();
            ISession session = sessionFactory.OpenSession();

            string motdepasse = "";
            string erreur     = "";

            //     try
            //       {


            using (ITransaction transaction = session.BeginTransaction())
            {
                // Si l'action n'a pas été faite par un gestionnaire on gère le changement de type
                if (!isGestionnaire)
                {
                    // si c'est une modification
                    if (utilisateur.typeUtilisateur != null)
                    {
                        //S'il s'agit d'une modification en commercial
                        if (unTypeUtilisateur.codeTypeUtilisateur == 3 || utilisateur.typeUtilisateur.codeTypeUtilisateur == 3)
                        {
                            //si l'utilisateur n'etait pas un commercial avant
                            if (utilisateur.typeUtilisateur.codeTypeUtilisateur != 3)
                            {
                                Planning unNouveauPlanning = new Planning();
                                unNouveauPlanning.libellePlanning = libellePlanning;
                                unNouveauPlanning.utilisateur     = utilisateur;
                                session.SaveOrUpdate(unNouveauPlanning);

                                PorteFeuille unNouveauPortefeuille = new PorteFeuille();
                                unNouveauPortefeuille.libellePortefeuille = libellePortefeuille;
                                unNouveauPortefeuille.utilisateur         = utilisateur;
                                session.SaveOrUpdate(unNouveauPortefeuille);

                                utilisateur.planning     = unNouveauPlanning;
                                utilisateur.porteFeuille = unNouveauPortefeuille;
                                session.SaveOrUpdate(utilisateur);
                            }
                        }



                        //Après une migration d'un commercial vers un autre type, on supprime son affectation au planning et portefeuille
                        if (unTypeUtilisateur.codeTypeUtilisateur != 3 && utilisateur.typeUtilisateur.codeTypeUtilisateur == 3)
                        {
                            //On supprime l'idUtilisateur dans la table portefeuille et planning
                            utilisateur.porteFeuille.utilisateur = null;
                            utilisateur.planning.utilisateur     = null;

                            session.SaveOrUpdate(utilisateur.porteFeuille);
                            session.SaveOrUpdate(utilisateur.planning);


                            //On supprime l'idPortefeuille/idPlanning dans la table Utilsiateur
                            utilisateur.porteFeuille = null;
                            utilisateur.planning     = null;
                        }
                    }
                }


                // on affecter le type:

                // Si l'utilisateur qui a fait l'action est un gestionnaire on met le type à commercial
                // On associe le type du nouvel utilisateur à 3 (commercial)
                if (isGestionnaire == true)
                {
                    TypeUtilisateur typeUtilisateur = new TypeUtilisateur();

                    IList <TypeUtilisateur> lesTypesUtilisateurs = typeUtilisateur.GetLesTypesUtilisateur();

                    foreach (TypeUtilisateur type in lesTypesUtilisateurs)
                    {
                        if (type.codeTypeUtilisateur == 3)
                        {
                            utilisateur.typeUtilisateur = type;
                        }
                    }
                }
                // Sinon on renseigne le type  de la form de l'admin
                else
                {
                    utilisateur.typeUtilisateur = unTypeUtilisateur;
                }

                // On check si l'utilisateur existe, si non on crée un nouveau mdp par défaut.
                bool exist = session.QueryOver <Utilisateur>().Where(x => x.numUtilisateur == utilisateur.numUtilisateur).RowCount() > 0;
                if (!exist)
                {
                    changePassword = true;
                }

                if (changePassword == true)
                {
                    //-------------------- DEBUT BLOC GENERATION DU MOT DE PASSE DU NOUVEL UTILISATEUR--------------------------
                    //On génère un mot de passe aléatoire pour le nouvel Utilisateur
                    Random       random = new Random();
                    const string chars  = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
                    motdepasse = new string(Enumerable.Repeat(chars, 10).Select(s => s[random.Next(s.Length)]).ToArray());
                    // on converti la phrase random en md5
                    InterLogin pourMD5 = new InterLogin();
                    //on associe le mot de passe
                    utilisateur.passwordUtilisateur = pourMD5.MD5Hash(motdepasse);
                    //-------------------- FIN BLOC GENERATION DU MOT DE PASSE DU NOUVEL UTILISATEUR--------------------------
                }

                if (loginUtilisateur != null)
                {
                    utilisateur.loginUtilisateur = loginUtilisateur;
                }
                else
                {
                    erreur += "\nMerci d'entrer un login d'utilisateur";
                }
                if (nomUtilisateur != null)
                {
                    utilisateur.nomUtilisateur = nomUtilisateur;
                }
                else
                {
                    erreur += "\nMerci d'entrer un nom d'utilisateur";
                }
                if (prenomUtilisateur != null)
                {
                    utilisateur.prenomUtilisateur = prenomUtilisateur;
                }
                else
                {
                    erreur += "\nMerci d'entrer un prénom d'utilisateur";
                }
                if (mailUtilisateur != null)
                {
                    utilisateur.mailUtilisateur = mailUtilisateur;
                }
                else
                {
                    erreur += "\nMerci d'entrer un mail d'utilisateur";
                }
                if (telUtilisateur != null)
                {
                    utilisateur.telUtilisateur = telUtilisateur;
                }
                else
                {
                    erreur += "\nMerci d'entrer un numéro téléphone d'utilisateur";
                }
                if (adresseUtilisateur != null)
                {
                    utilisateur.adresseUtilisateur = adresseUtilisateur;
                }
                else
                {
                    erreur += "\nMerci d'entrer une adresse d'utilisateur";
                }
                if (villeUtilisateur != null)
                {
                    utilisateur.villeUtilisateur = villeUtilisateur;
                }
                else
                {
                    erreur += "\nMerci d'entrer une ville d'utilisateur";
                }
                if (cpUtilisateur != null)
                {
                    utilisateur.cpUtilisateur = cpUtilisateur;
                }
                else
                {
                    erreur += "\nMerci d'entrer un code postal d'utilisateur";
                }


                //S'il s'agit d'un commercial:
                if (utilisateur.typeUtilisateur.codeTypeUtilisateur == 3)
                {
                    // Si il s'agit d'un ajout
                    if (utilisateur.planning == null || utilisateur.porteFeuille == null)
                    {
                        unNouveauPlanning.libellePlanning         = libellePlanning;
                        unNouveauPortefeuille.libellePortefeuille = libellePortefeuille;

                        unNouveauPlanning.utilisateur     = utilisateur;
                        unNouveauPortefeuille.utilisateur = utilisateur;


                        utilisateur.planning     = unNouveauPlanning;
                        utilisateur.porteFeuille = unNouveauPortefeuille;


                        session.SaveOrUpdate(unNouveauPlanning);
                        session.SaveOrUpdate(unNouveauPortefeuille);
                    }
                    // Sinon si il s'agit d'une modification
                    else
                    {
                        utilisateur.planning.libellePlanning = libellePlanning;
                        session.SaveOrUpdate(utilisateur.planning);

                        utilisateur.porteFeuille.libellePortefeuille = libellePortefeuille;
                        session.SaveOrUpdate(utilisateur.porteFeuille);
                    }
                }


                session.SaveOrUpdate(utilisateur);
                transaction.Commit();
                session.Dispose();
            }

            try
            {
                // Une fois que tout fonctionne on envoie le MDP au mail du nouvel utilisateur
                MailMessage mail = new MailMessage();
                mail.Subject = "Nouvel accès à GEPEV!";
                mail.Body    = "Bienvenue " + utilisateur.nomUtilisateur + " " + utilisateur.prenomUtilisateur + "! Votre mot de passe est: " + motdepasse;
                mail.From    = new MailAddress("*****@*****.**");
                mail.To.Add(utilisateur.mailUtilisateur);

                SmtpClient client = new SmtpClient();
                client.Host = "localhost";
                client.Send(mail);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Erreur" + ex.Message);
            }
        }
        private void Popup_ModifUser_Load(object sender, EventArgs e)
        {
            TypeUtilisateur lesTypesUtilisateur = new TypeUtilisateur();

            comboBoxTypeUser.DataSource = lesTypesUtilisateur.GetLesTypesUtilisateur();
        }