static void Main(string[] args)
        {
            string     NOMRESTAURANT = " Belle bouchée";
            Menu       menu          = new Menu();
            Restaurant restaurant    = new Restaurant(NOMRESTAURANT, menu);
            Client     client        = new Client();;
            Commande   commande      = new Commande();

            commande.Produits = new List <Produit>();

            Facture facture;

            Console.WriteLine("Bienvenue au restaurant {0}{1}", Restaurant.GetNom(), Environment.NewLine);

            bool optionIsValid = false;

            while (!optionIsValid)
            {
                Console.Write(Environment.NewLine);
                ProgramUtilitaire.AfficherMenuProgram();
                Console.Write("Option numéro : ");
                var valueSelected = Console.ReadLine();
                if (int.TryParse(valueSelected, out int MenuSelection))
                {
                    switch (MenuSelection)
                    {
                    case 8:     // Quitter
                        Console.WriteLine("Merci de votre visite");
                        Environment.Exit(0);
                        break;

                    case 1:     // Afficher Le menu
                        restaurant.Menu.AfficherMenu();
                        break;

                    case 2:     // Ajouter un produit à la commande
                        bool IsExist = false;
                        while (!IsExist)
                        {
                            restaurant.Menu.AfficherMenu();
                            int     numeroProduit = ProgramUtilitaire.SaisirNumeroProduit();
                            Produit p             = restaurant.GetProduit(numeroProduit);
                            if (p is null)
                            {
                                Console.WriteLine("le produit avec le numero {0} est introuvable", numeroProduit);
                                IsExist = false;
                            }
                            //ici je vérifier si le client a déja commander le même produit est j'ajoute la nouvelle quantite à l'encien
                            else if (commande.Produits.Any(x => x.Numero == p.Numero))
                            {
                                bool IsValidQuantite = false;
                                while (!IsValidQuantite)
                                {
                                    int Quantite = ProgramUtilitaire.SaisirQuantite();
                                    if (p.Quantite < Quantite)
                                    {
                                        Console.WriteLine("Pas assez de quantite / (0 : Pour annuler) ...");
                                        IsValidQuantite = false;
                                    }
                                    else
                                    {
                                        restaurant.ReduireQuantiteProduit(p.Numero, Quantite);
                                        commande.GetProduitCommander(p.Numero).Quantite += Quantite;
                                        IsValidQuantite = true;
                                    }
                                    restaurant.Menu.AfficherMenu();
                                    IsExist = true;
                                }
                            }
                            else
                            {
                                Produit produitCommander = new Produit
                                {
                                    Numero      = p.Numero,
                                    Description = p.Description,
                                    Prix        = p.Prix,
                                    Quantite    = 0
                                };
                                commande.Produits.Add(produitCommander);

                                bool IsValidQuantite = false;
                                while (!IsValidQuantite)
                                {
                                    int Quantite = ProgramUtilitaire.SaisirQuantite();
                                    if (p.Quantite < Quantite)
                                    {
                                        Console.WriteLine("Pas assez de quantite / (0 : Pour annuler) ...");
                                        IsValidQuantite = false;
                                    }
                                    else
                                    {
                                        restaurant.ReduireQuantiteProduit(p.Numero, Quantite);
                                        commande.AjouterQuantiteCommander(Quantite, produitCommander.Numero);
                                        IsValidQuantite = true;
                                    }
                                }
                                restaurant.Menu.AfficherMenu();
                                IsExist = true;
                            }
                        }
                        break;

                    case 3:     // Supprimer un produit de la commande
                        // ici je vérifier si le client à déja passer une commande
                        if (commande.Produits.Any())
                        {
                            Console.WriteLine("Voici votre commande {0}", Environment.NewLine);
                            commande.AfficherCommande();
                            bool IfExist = false;
                            while (!IfExist)
                            {
                                int     n = ProgramUtilitaire.SaisirNumeroProduit();
                                Produit p = commande.GetProduitCommander(n);
                                if (p is null)
                                {
                                    Console.WriteLine("Votre commande ne contient aucun produit dont le numero est : {0}", n);
                                    commande.AfficherCommande();
                                    IfExist = false;
                                }
                                else
                                {
                                    restaurant.AugmenterQuantiteProduit(p.Numero, p.Quantite);
                                    commande.SupprimerProduit(p);
                                    Console.WriteLine("\nProduit dont le numéro {1} est supprimer {0}", Environment.NewLine, p.Numero);
                                    IfExist = true;
                                }
                            }
                        }
                        else
                        {
                            Console.WriteLine("Votre panier est vide !!", Environment.NewLine);
                        }

                        break;

                    case 4:     // Payer la facture
                        if (commande.GetAllProduitsCommander().Any())
                        {
                            facture = new Facture(commande, client);
                            facture.AfficherFacture();
                            if (facture.PayerFacture())
                            {
                                commande.Produits.Clear();
                                Console.WriteLine("Votre solde actuel est de : {0} $", client.MontantDepart);
                            }
                            else
                            {
                                Console.WriteLine("Vous avez dépasser votre montant de dépense avec {0} $\n" +
                                                  " Merci de modifier votre commande\n", -facture.CalculerMontantRestantDuDepenses());
                            }
                        }
                        else
                        {
                            Console.WriteLine("\nVous avez pas encore passer une commande !!\n");
                        }

                        break;

                    case 5:     // Afficher le solde de la facture
                        commande.AfficherCommande();
                        facture = new Facture(commande, client);
                        facture.AfficherFacture();
                        Console.WriteLine("Votre solde actuel est de : {0} $", client.MontantDepart);
                        break;

                    case 6:     // Afficher l'inventaire de la restaurant
                        restaurant.AfficherInventaire();
                        break;

                    case 7:     // Aide
                        ProgramUtilitaire.AfficherAide();
                        break;

                    default:
                        Console.WriteLine("Veuillez choisir un numéro entre les options 1 à 8 ...");
                        break;
                    }
                }
                else
                {
                    optionIsValid = false;
                    Console.WriteLine("le numéro saisie n'est pas valide");
                }
            }
        }