/// <summary>
        /// Méthode reliée au bouton "Se connecter" côté admin qui vérifie si l'identifiant et le mdp rentrés par l'utilisateur correspondent à un couple identifiant/mdp dans la database
        /// </summary>
        /// <param name="sender">Bouton "Se connecter"</param>
        /// <param name="e">Evenement Click</param>
        private void Button_Click_connect_admin(object sender, RoutedEventArgs e)
        {
            // récupération des input
            string id  = ID_admin.Text;
            string mdp = MDP_admin.Password;

            // sécurité sur le mdp pour éviter le caractère retournant une erreur MySQL (fonction Caractere_interdit ne fonctionne pas sur les passwordBox)
            if (mdp.Contains('"'))
            {
                error_label.Content = "Guillemets (\") interdits";
            }
            else
            {
                // sécurité des input
                if (id.Length > 0 && mdp.Length > 0) // rien de rentré
                {
                    //Récupération infos dans fichier txt --> chaque index de la liste de liste finale contient un couple identifiant/mdp
                    string line;
                    string infos_in_file        = "";
                    System.IO.StreamReader file = new System.IO.StreamReader("Acces_admin.txt");
                    while ((line = file.ReadLine()) != null)
                    {
                        infos_in_file += line + '\n';
                    }
                    file.Close();

                    string[] temp = infos_in_file.Split('\n');
                    List <List <string> > liste_infos_in_file = new List <List <string> >();
                    bool connection_ok = false;
                    for (int i = 0; i < temp.Length; i++)
                    {
                        liste_infos_in_file.Add(temp[i].Split(';').ToList());
                        if (liste_infos_in_file[i][0] == id && liste_infos_in_file[i][1] == mdp)
                        {
                            connection_ok = true;
                        }
                    }

                    if (connection_ok)
                    {
                        // on navigue vers la page client en conservant l'id
                        Page_Admin page_admin = new Page_Admin(id);
                        this.NavigationService.Navigate(page_admin);
                    }
                }
                else
                {
                    error_label.Content = "Erreur admin non reconnu";
                }
            }
        }
        /// <summary>
        /// Méthode reliée au bouton "Créer le fournisseur" qui crée un nouveau fournisseur dans la database
        /// </summary>
        /// <param name="sender">bouton "Créer le fournisseur"</param>
        /// <param name="e">Evenement Click</param>
        private void Creer_Fournisseur_Click(object sender, RoutedEventArgs e)
        {
            // récupération des input
            string nom  = textbox_nom.Text;
            string refe = textbox_ref.Text;
            string tel  = textbox_tel.Text;

            // sécurité pour les input
            if (nom == "" || nom.Length > 50)
            {
                Erreur_message.Content = "Nom invalide (1-50 caractères)";
            }
            else if (refe == "" || refe.Length > 50)
            {
                Erreur_message.Content = "Référence invalide (1-50 caractères)";
            }
            else if (tel == "" || !int.TryParse(tel, out _) || tel.Length > 15)
            {
                Erreur_message.Content = "Téléphone invalide (1-15 caractères)";
            }
            else
            {
                Erreur_message.Content = "";

                // création du fournisseur dans la database à partir des input
                string query = $"insert into cooking.fournisseur VALUES(\"{refe}\",\"{nom}\",\"{tel}\");";
                string ex    = Commandes_SQL.Insert_Requete(query);
                if (ex == $"Duplicate entry '{refe}' for key 'fournisseur.PRIMARY'") // si la ref_fournisseur (clé primaire) existe déjà dans la database.fournisseur
                {
                    Erreur_message.Content = "Nom déjà utilisé";
                }
                else
                {
                    // on navigue vers la page Admin
                    Page_Admin page_admin = new Page_Admin(this.id_admin);
                    this.NavigationService.Navigate(page_admin);
                }
            }
        }
        /// <summary>
        /// Méthode reliée au bouton "Créer le produit" qui crée un nouveau produit dans la database
        /// </summary>
        /// <param name="sender">Bouton "Créer le produit"</param>
        /// <param name="e">Evenement Click</param>
        private void Creer_Produit_Click(object sender, RoutedEventArgs e)
        {
            // récupération des input
            string nom_produit     = textbox_nom.Text;
            string categorie       = textbox_categorie.Text;
            string unite           = textbox_unite.Text;
            string ref_fournisseur = textbox_ref_fournisseur.Text;
            string stock           = textbox_stock.Text;
            string stock_min       = textbox_stock_min.Text;
            string stock_max       = textbox_stock_max.Text;

            // sécurité pour les input
            if (nom_produit == "" || nom_produit.Length > 50)
            {
                Erreur_message.Content = "Nom invalide (1-50 caractères)";
            }
            else if (categorie == "" || categorie.Length > 50)
            {
                Erreur_message.Content = "Categorie invalide (1-50 caractères)";
            }
            else if (unite == "" || unite.Length > 10)
            {
                Erreur_message.Content = "Unite invalide (1-10 caractères)";
            }
            else if (ref_fournisseur == "" || ref_fournisseur.Length > 50)
            {
                Erreur_message.Content = "Fournisseur invalide (1-50 caractères)";
            }
            else if (stock == "" || !int.TryParse(stock, out _))
            {
                Erreur_message.Content = "Stock invalide";
            }
            else if (stock_min == "" || !int.TryParse(stock_min, out _))
            {
                Erreur_message.Content = "Stock minimal invalide";
            }
            else if (stock_max == "" || !int.TryParse(stock_max, out _) || Convert.ToInt32(stock_max) < Convert.ToInt32(stock_min) || Convert.ToInt32(stock_max) < Convert.ToInt32(stock))
            {
                Erreur_message.Content = "Stock maximal invalide";
            }
            else
            {
                Erreur_message.Content = "";

                //on vérifie si le fournisseur du produit qu'on veut créer existe dans notre database car Ref_Fournisseur = Foreign key de l'entité produit
                string query = "select Ref_Fournisseur from cooking.fournisseur;";
                List <List <string> > liste_Ref_fournisseur = Commandes_SQL.Select_Requete(query);

                bool ref_fournisseur_dans_BDD = false;
                for (int i = 0; i < liste_Ref_fournisseur.Count; i++)
                {
                    if (liste_Ref_fournisseur[i][0] == ref_fournisseur)
                    {
                        ref_fournisseur_dans_BDD = true;
                    }
                }

                if (!ref_fournisseur_dans_BDD)
                {
                    Erreur_message.Content = "Fournisseur inconnu";
                }
                else
                {
                    // création du fournisseur dans la database à partir des input
                    query = $"insert into cooking.produit values (\"{nom_produit}\",\"{categorie}\",\"{unite}\",{stock},{stock_min},{stock_max},\"{ref_fournisseur}\")";
                    string ex = Commandes_SQL.Insert_Requete(query);

                    if (ex == $"Duplicate entry '{nom_produit}' for key 'produit.PRIMARY'") // si le nom_produit (clé primaire) existe déjà dans la database.produit
                    {
                        Erreur_message.Content = "Nom déjà utilisé";
                    }
                    else
                    {
                        // on navigue vers la page Admin
                        Page_Admin page_admin = new Page_Admin(this.id_admin);
                        this.NavigationService.Navigate(page_admin);
                    }
                }
            }
        }