public void chooseTable(Group group)
        {
            TableController.GetTableController().MyManualResetEvent.WaitOne(Timeout.Infinite);
            Thread.Sleep(2000);
            int  placeTableListe = 0;
            int  tableId         = 0;
            bool test            = false;

            for (int i = 0; (i < TableController.GetTableController().MylistTable.Count) && (test == false); i++)
            {
                if (TableController.GetTableController().MylistTable.ElementAt(i).MyAvailable&& (TableController.GetTableController().MylistTable.ElementAt(i).MyNumberSeats >= group.MySizeGroup))
                {
                    tableId         = TableController.GetTableController().MylistTable.ElementAt(i).MyIdTable;
                    placeTableListe = i;
                    test            = true;
                }
            }

            if (test == false)
            {
                Console.WriteLine("pas de table dispo");
                Thread.Sleep(5000);
                chooseTable(group);
            }

            TableController.GetTableController().MylistTable.ElementAt(placeTableListe).MyGroup = group;
            Console.WriteLine("les clients vont occuper la table :" + tableId);
            TableController.GetTableController().MylistTable.ElementAt(placeTableListe).MyAvailable = false;
            callChefRang(tableId);
        }
        public void restaurant()
        {
            //Instiate the table controller
            TableController.GetTableController().createListTable(tables);
            //Instiate the Maitre d'Hotel
            StaffController.GetStaffController().addMaitreHotel(1);
            //Instiate all the chef de rang
            StaffController.GetStaffController().addChefRang(2);
            //Instiate all the waiters
            StaffController.GetStaffController().addServer(waiters);
            Console.WriteLine("Le restaurant possède : " + waiters + " serveurs et " + tables);
            Task task = Task.Factory.StartNew(() => clientArrival());

            while (true)
            {
                //while (Console.ReadKey().KeyChar != 'a')
                //{
                //    Thread.Sleep(500);
                //}
                //if (stop == true)
                //{
                //    TableController.GetTableController().MyManualResetEvent.Reset();
                //    stop = false;
                //}
                //else if (stop == false)
                //{
                //    TableController.GetTableController().MyManualResetEvent.Set();
                //    stop = true;
                //}
                //else
                //{
                //    Console.WriteLine("error");
                //}
            }
        }
        public void callChefRang(int idTable)
        {
            TableController.GetTableController().MyManualResetEvent.WaitOne(Timeout.Infinite);
            if ((idTable == 1) || (idTable == 2))
            {
                for (int i = 0; i < StaffController.GetStaffController().MylistStaff.Count(); i++)
                {
                    if (StaffController.GetStaffController().MylistStaff.ElementAt(i).ToString() == "ControleurRestaurant.ChefRang")
                    {
                        if (StaffController.GetStaffController().MylistStaff.ElementAt(i).returnID() == 1)
                        {
                            Console.WriteLine("j'appelle chef rang :" + StaffController.GetStaffController().MylistStaff.ElementAt(i).returnID() + "pour la table :" + idTable);
                            StaffController.GetStaffController().MylistStaff.ElementAt(i).doStuff(idTable);
                        }
                    }
                }
            }

            if ((idTable == 3) || (idTable == 4))
            {
                for (int i = 0; i < StaffController.GetStaffController().MylistStaff.Count(); i++)
                {
                    if (StaffController.GetStaffController().MylistStaff.ElementAt(i).ToString() == "ControleurRestaurant.ChefRang")
                    {
                        if (StaffController.GetStaffController().MylistStaff.ElementAt(i).returnID() == 2)
                        {
                            Console.WriteLine("j'appelle chef rang :" + StaffController.GetStaffController().MylistStaff.ElementAt(i).returnID() + "pour la table :" + idTable);
                            StaffController.GetStaffController().MylistStaff.ElementAt(i).doStuff(idTable);
                        }
                    }
                }
            }
        }
        public void callMaitreHotel(int idTable)
        {
            TableController.GetTableController().MyManualResetEvent.WaitOne(Timeout.Infinite);
            Console.WriteLine("Les clients vont payer" + idTable);

            int  indexMaitreHotel = 0;
            bool test             = false;

            for (int i = 0; (i < StaffController.GetStaffController().MylistStaff.Count) && (test == false); i++)
            {
                if (StaffController.GetStaffController().MylistStaff.ElementAt(i).ToString() == "ControleurRestaurant.MaitreHotel")
                {
                    test             = true;
                    indexMaitreHotel = i;
                }
            }


            if (test == false)
            {
                Console.WriteLine("le maitre d'hotel est occupé");
                Thread.Sleep(10000);
                callMaitreHotel(idTable);
            }

            StaffController.GetStaffController().MylistStaff.ElementAt(indexMaitreHotel).doStuff2(idTable);
        }
예제 #5
0
 public void startPreparation(int idTable)
 {
     TableController.GetTableController().MyManualResetEvent.WaitOne(Timeout.Infinite);
     Console.WriteLine("début de la préparation de la commande pour la table :" + idTable);
     Thread.Sleep(time * 500);
     ZoneExchange.GetZoneExchange().commandeComplete(idTable);
 }
        public void serveCommand(int idTable)
        {
            TableController.GetTableController().MyManualResetEvent.WaitOne(Timeout.Infinite);
            Console.WriteLine("Les clients sont servis à la table :" + idTable);
            Thread.Sleep(10000);

            callMaitreHotel(idTable);
        }
        public void appelClients()
        {
            TableController.GetTableController().MyManualResetEvent.WaitOne(Timeout.Infinite);
            int time = rdn.Next(1, 4);

            Thread.Sleep(time * 1000);
            Console.WriteLine("un nouveau groupe arrive");
            clientArrival();
        }
 public void dressTable(int idTable)
 {
     TableController.GetTableController().MyManualResetEvent.WaitOne(Timeout.Infinite);
     // Console.WriteLine("dans dress table " + idTable);
     takeCommand(idTable);
     // EVENT quand maitre d'hotel fait choose table
     // il faut que cette méthode récupère le nombre de couverts et les soustrait à la BDD
     // amélioration : récupérer plutôt la taille du groupe
     // attente 5 min --> appelle méthode table ou group --> qui appelle takeCommande(idTable)
 }
 public void commandeComplete(int idTable)
 {
     TableController.GetTableController().MyManualResetEvent.WaitOne(Timeout.Infinite);
     Console.WriteLine("commande complète pour la table :" + idTable);
     for (int i = 0; i < StaffController.GetStaffController().MylistStaff.Count; i++)
     {
         if (StaffController.GetStaffController().MylistStaff.ElementAt(i).ToString() == "ControleurRestaurant.Serveur")
         {
             StaffController.GetStaffController().MylistStaff.ElementAt(i).doStuff(idTable);
             break;
         }
     }
 }
        public void takeCommand(int idTable)
        {
            TableController.GetTableController().MyManualResetEvent.WaitOne(Timeout.Infinite);
            Console.WriteLine("le chef de rang prend la commande de la table " + idTable);
            Commande commande = new Commande();
            int      i        = 0;

            while (TableController.GetTableController().MylistTable.ElementAt(i).MyIdTable != idTable)
            {
                i++;
            }
            commande.setCommande(idTable, TableController.GetTableController().MylistTable.ElementAt(i).MyGroup.getDishList());
        }
예제 #11
0
        public void setCommande(int idTable, List <AbstractDish> dishList)
        {
            TableController.GetTableController().MyManualResetEvent.WaitOne(Timeout.Infinite);
            idTableCommande = idTable;
            int i = 0;

            while (i < dishList.Count)
            {
                listeIdPlat.Add(dishList.ElementAt(i).Id);
                time += dishList.ElementAt(i).PreparationTime;
                i++;
            }
            startPreparation(idTable);
        }
 public void groupLeaves(int idTable)
 {
     TableController.GetTableController().MyManualResetEvent.WaitOne(Timeout.Infinite);
     Console.WriteLine("le groupe de la table " + idTable + " part");
     for (int i = 0; i < StaffController.GetStaffController().MylistStaff.Count; i++)
     {
         if (StaffController.GetStaffController().MylistStaff.ElementAt(i).ToString() == "ControleurRestaurant.Serveur")
         {
             if (StaffController.GetStaffController().MylistStaff.ElementAt(i).getAvailability() == Availability.waiting)
             {
                 StaffController.GetStaffController().MylistStaff.ElementAt(i).doStuff2(idTable);
                 break;
             }
         }
     }
 }
        public void cleanTable(int idTable)
        {
            TableController.GetTableController().MyManualResetEvent.WaitOne(Timeout.Infinite);

            Console.WriteLine("le serveur va nettoyer la table : " + idTable);
            // il faut que cette méthode récupère le nombre de couverts et les libère en reremplissant la BDD
            // exemple table 4 places --> +4 fourchettes dans la BDD, +4 Couteaux, etc

            int k = 0;

            while (TableController.GetTableController().MylistTable.ElementAt(k).MyIdTable != idTable)
            {
                k++;
            }

            TableController.GetTableController().MylistTable.ElementAt(k).MyAvailable = true;
        }
        public void getPayment(int idTable)
        {
            TableController.GetTableController().MyManualResetEvent.WaitOne(Timeout.Infinite);
            int j     = 0;
            int price = 0;

            while (TableController.GetTableController().MylistTable.ElementAt(j).MyIdTable != idTable)
            {
                j++;
            }

            price = TableController.GetTableController().MylistTable.ElementAt(j).MyGroup.MyPrixTotal;
            Console.WriteLine("la table : " + idTable + "a payé : " + price + "€");
            MyTotalPrice += price;

            groupLeaves(idTable);
        }
        public void clientArrival()
        {
            TableController.GetTableController().MyManualResetEvent.WaitOne(Timeout.Infinite);
            Group groupe = new Group();

            Console.WriteLine("j'ai accueilli un groupe de :" + groupe.MySizeGroup);

            int i = 0;

            while (StaffController.GetStaffController().MylistStaff.ElementAt(i).ToString() != "ControleurRestaurant.MaitreHotel")
            {
                i++;
            }

            Thread thread = new Thread(() =>
            {
                StaffController.GetStaffController().MylistStaff.ElementAt(i).doStuff3(groupe);
            });

            thread.Start();
            appelClients();
        }
 public int returnID()
 {
     TableController.GetTableController().MyManualResetEvent.WaitOne(Timeout.Infinite);
     throw new NotImplementedException();
 }
 public int returnID()
 {
     TableController.GetTableController().MyManualResetEvent.WaitOne(Timeout.Infinite);
     return(MyId);
 }
 public void doStuff(int idTable)
 {
     TableController.GetTableController().MyManualResetEvent.WaitOne(Timeout.Infinite);
     dressTable(idTable);
 }
 public void doStuff3(Group group)
 {
     TableController.GetTableController().MyManualResetEvent.WaitOne(Timeout.Infinite);
     throw new NotImplementedException();
 }
 Availability IStaff.getAvailability()
 {
     TableController.GetTableController().MyManualResetEvent.WaitOne(Timeout.Infinite);
     return(MyAvailability);
 }
 public void doStuff3(Group group)
 {
     TableController.GetTableController().MyManualResetEvent.WaitOne(Timeout.Infinite);
     chooseTable(group);
 }
 public void doStuff2(int idTable)
 {
     TableController.GetTableController().MyManualResetEvent.WaitOne(Timeout.Infinite);
     getPayment(idTable);
 }