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); }
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()); }
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); }