public void RemoveFurniture(Furniture furniture)
 {
     furnitureList.Remove(furniture);
 }
        static void Main(string[] args)
        {
            //Connexion to database
            MySqlConnection db = new MySqlConnection("SERVER=db4free.net;PORT=3306;DATABASE=groupe5;UID=groupe5;PWD=4c66dfc7; old guids=true");

            try
            {
                db.Open();
            }
            catch (Exception erro)
            {
                Console.WriteLine("Erro" + erro);
            } //db.Open

            //Create a order
            Order order = new Order();

            //Choix dimensions meuble - en fonction des plaques horizontales existantes

            MySqlCommand cmd = db.CreateCommand();

            cmd.CommandText = "SELECT Dimension,Largeur,Profondeur,Couleur FROM `Composants` WHERE `Ref`='Panneau HB'";
            MySqlDataReader reader = cmd.ExecuteReader();
            List <Tuple <string, int, int> > list = new List <Tuple <string, int, int> >(); //liste où l'on va stocker les composants

            while (reader.Read())
            {
                list.Add(new Tuple <string, int, int>(reader["Dimension"].ToString(),
                                                      Convert.ToInt32(reader["Largeur"]), Convert.ToInt32(reader["Profondeur"])));
            }
            list = list.Distinct().ToList(); //enlever les panneaux de même taille
            foreach (Tuple <string, int, int> element in list)
            {
                Console.WriteLine(element.Item1);
            }
            db.Close();
            Console.WriteLine("------------------------------------------------------------");

            //Ajouter un meuble à la commande

            Console.WriteLine("Ajout d'un meuble");
            Furniture furniture = new Furniture(list[0].Item2, list[0].Item3);  //pour essayer, on prend le premier élement de

            //la liste ci-dessus pour les dimensions du meuble
            order.AddFurniture(furniture);
            furniture.Name = "Meuble 1";                            //changement du nom du meuble

            Console.WriteLine("Nom du meuble : " + furniture.Name); //test du changement de nom
            Console.WriteLine("------------------------------------------------------------");


            Console.WriteLine("Ajout d'une box à un meuble ici : " + furniture.Name);
            Console.WriteLine("Choix de la hauteur de la box");

            //Création d'une liste avec les hauteurs possibles
            db.Open();
            MySqlCommand cmd2 = db.CreateCommand();

            cmd2.CommandText = "SELECT Hauteur FROM `Composants` WHERE `Ref`='Panneau GD' AND `Profondeur`=" + furniture.GetDepth;
            //N.B. : j'aurais aussi pu faire la recherche sur le panneau arrière

            MySqlDataReader reader2 = cmd2.ExecuteReader();
            List <int>      list2   = new List <int>();

            while (reader2.Read())
            {
                list2.Add(Convert.ToInt32(reader2["Hauteur"]));
            }
            list2 = list2.Distinct().ToList(); //enlever les objets qui ont les mêmes hauteur
            foreach (int value in list2)
            {
                Console.WriteLine(value); //impression des différentes hauteurs
            }
            db.Close();



            //Choix de la couleur de la box
            db.Open();
            MySqlCommand cmd2_1 = db.CreateCommand();

            cmd2_1.CommandText = "SELECT Couleur FROM `Composants` WHERE `Ref`='Panneau GD' AND `Profondeur`=" + furniture.GetDepth;
            MySqlDataReader reader2_1  = cmd2_1.ExecuteReader();
            List <string>   color_list = new List <string>();

            while (reader2_1.Read())
            {
                color_list.Add(reader2_1["Couleur"].ToString());
            }
            color_list = color_list.Distinct().ToList(); //enlever les panneaux de même taille


            Console.WriteLine("Couleur disponnibles");
            foreach (string color in color_list)
            {
                Console.WriteLine(color);
            }
            db.Close();


            Box box = new Box(list2[0], furniture.GetWidth, furniture.GetDepth, color_list[0]); //création d'une box de hauteur de la liste des hauteurs

            //Console.WriteLine("Ajout de 2 box de hauteur LISTE 0 des hauteurs au meuble");
            furniture.AddBox(box);
            furniture.AddBox(box); //on ajoute deux box, identiques au meuble(utile pour tester la hauteur des cornières)
            Console.WriteLine("-------------------------------------------------------------");

            Console.WriteLine("Ajout des panneaux");
            box.AddRequiredComponents();
            Console.WriteLine("Panneaux ajoutés");



            Console.WriteLine("---------------------------------------------------");

            Console.WriteLine("Portes avant");
            db.Open();
            MySqlCommand cmd11 = db.CreateCommand();

            cmd11.CommandText = "SELECT Code,Largeur,Hauteur,Couleur,Prix_Client FROM `Composants` WHERE `Ref`= 'Porte ' AND `Largeur`=" + box.GetWidth + " AND `Hauteur`=" + box.GetHeight;
            MySqlDataReader reader11  = cmd11.ExecuteReader();
            List <Door>     door_list = new List <Door>();

            while (reader11.Read())
            {
                door_list.Add(new Door(reader11["Code"].ToString(), Convert.ToInt32(reader11["Hauteur"]),
                                       Convert.ToInt32(reader11["Largeur"]), 0, Convert.ToDouble(reader11["Prix_Client"]),
                                       reader11["Couleur"].ToString()));
            }
            db.Close();
            foreach (Door door in door_list)
            {
                Console.WriteLine(door.GetColor + " : " + door.GetPrice);
            }


            //Ajout des cornières adéquates
            db.Open();
            MySqlCommand cmd3 = db.CreateCommand();

            cmd3.CommandText = "SELECT Code,Hauteur,Couleur FROM `Composants` WHERE `Ref`= 'Cornieres' AND `Hauteur`>=" + furniture.GetHeight();

            MySqlDataReader             reader3 = cmd3.ExecuteReader();
            List <Tuple <int, string> > list3   = new List <Tuple <int, string> >();

            while (reader3.Read())
            {
                list3.Add(new Tuple <int, string>(Convert.ToInt32(reader3["Hauteur"]), reader3["Couleur"].ToString()));
            }
            db.Close();
            order.AddFurniture(furniture);

            Console.WriteLine("Prix total de la commande : " + order.GetPrice());
            //order.WriteFacture("C:\\Users\\Thomas Vandermeersch\\Documents\\Facture_2.markdown");
        }
 public void AddFurniture(Furniture furniture)
 {
     furnitureList.Add(furniture);
 }