public Reservation trouveReservation(ServiceParJour Service, string NomClient, out int rangResa) { for (int i = 0; i < Service.reservations.Count; i++) { if (Service.reservations[i].nomClient == NomClient) { rangResa = i; return(Service.reservations[i]); } } Console.WriteLine("Ce client n'a pas réservé ce jour là ou est mal enregistré !"); rangResa = -1; return(null); }
public Reservation(Restaurant Restaurant, ServiceParJour ServiceParJour, string NomClient, string NumTelephone, DateTime JourResa, DateTime HoraireDebutResa, DateTime HoraireFinResa, int NbConvives, Formule FormuleRetenue, List <Table> TableAffectee) { restaurant = Restaurant; service = ServiceParJour; nomClient = NomClient; numTelephone = NumTelephone; jourResa = JourResa; horaireDebutResa = HoraireDebutResa; horaireFinResa = HoraireFinResa; nbConvives = NbConvives; formuleRetenue = FormuleRetenue; tableAffectee = TableAffectee; }
public void annulReservation() { Console.WriteLine("Quel est la date de cette réservation ?"); DateTime Date = DateTime.Parse(Console.ReadLine()); Console.WriteLine("Quel est le nom du client ?"); string nom = Console.ReadLine(); Console.WriteLine("Quel est le prénom du client ?"); nom += " " + Console.ReadLine(); ServiceParJour Service = trouveService(Date); int rang; Reservation Reservation = trouveReservation(Service, nom, out rang); if (Reservation == null) { Console.WriteLine("0 : Retourner au menu de gestion des réservations ?"); Console.WriteLine("1 : Recommencer la modification de réservation ?"); int frappe; do { Console.WriteLine("Entrez le numéro de la requête souhaitée s'il vous plait."); frappe = Program.gestErreurEntier(); }while (frappe < 0 && frappe > 1); switch (frappe) { case 0: Program.GererReservation(this); break; case 1: modifReservation(); break; } } else { Service.reservations.RemoveAt(rang); Console.WriteLine("Réservation annulée !"); } }
// Demande des informations nécessaires à la création d'une nouvelle réservation. public void ajoutReservation() { Reservation a; Console.WriteLine("Nom du Client ?"); string NomClient = Console.ReadLine(); Console.WriteLine("Prénom du Client ?"); NomClient += " " + Console.ReadLine(); Console.WriteLine("Date de Réservation (yyyy,mm,dd) ?"); DateTime JourResa = DateTime.Parse(Console.ReadLine()); Console.WriteLine("Heure de réservation (hh,mm,ss) ?"); DateTime HDR = DateTime.Parse(Console.ReadLine()); ServiceParJour Service = trouveService(JourResa); Console.WriteLine("Nombre de convives ?"); int NbConvives = Program.gestErreurEntier(); // Récupération des différentes formules du restaurant Console.WriteLine("Quelle Formule (entrez le numéro) ?"); for (int i = 0; i < listeFormules.Count; i++) { Console.WriteLine("" + i + " : " + listeFormules[i]); } int frappe; do { Console.WriteLine("Entrez le numéro de la formule souhaitée s'il vous plait."); frappe = Program.gestErreurEntier(); }while (frappe < 0 && frappe > (listeFormules.Count - 1)); Formule FormRet = listeFormules[frappe]; DateTime HFR = HDR + FormRet.dureeConsommation; List <Table> TableAffectee = new List <Table>(); string NumTel; // Si la réservation concerne une commande à emporter, pas besoin de table. if (FormRet.surPlace == false) { NumTel = Console.ReadLine(); a = new Reservation(this, Service, NomClient, NumTel, JourResa, HDR, HFR, NbConvives, FormRet, TableAffectee); } else { // Tente de trouver une table adéquate en jumelant ou non, sinon refus de la réservation. try { TableAffectee = Service.reservations[0].trouveTables(this, NbConvives, Service, HDR, HFR); } catch { // Reconduction quand la réservation est refusée. Console.WriteLine("La réservation est impossible, aucune table disponible pour ce nombre de convives !"); Console.WriteLine("0 : Annulez ?"); Console.WriteLine("1 : Autre réservation ?"); string frappe2; do { Console.WriteLine("Entrez le numéro de la requête souhaitée s'il vous plait."); frappe2 = Console.ReadLine(); }while (frappe2 != "0" && frappe2 != "1"); int choix = int.Parse(frappe2); switch (choix) { case 0: Program.GererReservation(this); break; case 1: ajoutReservation(); break; } } } Console.WriteLine("Numéro de téléphone ?"); NumTel = Console.ReadLine(); // Si tout est bon, création de la réservation a = new Reservation(this, Service, NomClient, NumTel, JourResa, HDR, HFR, NbConvives, FormRet, TableAffectee); }
public void modifReservation() { Console.WriteLine("Quel est la date de cette réservation ?"); DateTime Date = DateTime.Parse(Console.ReadLine()); Console.WriteLine("Quel est le nom du client ?"); string nom = Console.ReadLine(); Console.WriteLine("Quel est le prénom du client ?"); nom += " " + Console.ReadLine(); ServiceParJour Service = trouveService(Date); int rang; Reservation Reservation = trouveReservation(Service, nom, out rang); if (Reservation == null) { Console.WriteLine("0 : Retourner au menu de gestion des réservations ?"); Console.WriteLine("1 : Recommencer la modification de réservation ?"); int frappe; do { Console.WriteLine("Entrez le numéro de la requête souhaitée s'il vous plait."); frappe = Program.gestErreurEntier(); }while (frappe < 0 && frappe > 1); switch (frappe) { case 0: Program.GererReservation(this); break; case 1: modifReservation(); break; } } else { Service.reservations.RemoveAt(rang); Console.WriteLine("Début de la modification :"); ajoutReservation(); /*Console.WriteLine("+----------------------------------------------------------------------------+"); * Console.WriteLine("| QUE MODIFIER ? |"); * Console.WriteLine("+-----------+----------------------------------------------------------------+"); * Console.WriteLine("| TAPEZ 1 | Le jour ? |"); * Console.WriteLine("+-----------+----------------------------------------------------------------+"); * Console.WriteLine("| TAPEZ 2 | L'horaire ? |"); * Console.WriteLine("+-----------+----------------------------------------------------------------+"); * Console.WriteLine("| TAPEZ 3 | La formule ? |"); * Console.WriteLine("+-----------+----------------------------------------------------------------+"); * Console.WriteLine("| TAPEZ 4 | Le nombre de convives ? |"); * Console.WriteLine("+-----------+----------------------------------------------------------------+"); * Console.WriteLine("| Tapez 0 | Retourner au menu de gestion des réservations |"); * Console.WriteLine("+-----------+----------------------------------------------------------------+"); * * int frappe; * do * { * Console.WriteLine("Entrez le numéro de la requête souhaitée s'il vous plait."); * frappe = Program.gestErreurEntier(int.Parse(Console.ReadLine())); * } * while (frappe < 0 && frappe > 6); * switch(frappe) * { * case 0: * Program.GererReservation(this); * break; * case 1: * Console.WriteLine("Quel jour "); * break; * case 2: * break; * case 3: * break; * case 4: * break; * }*/ } }
} // A finir public List <Table> trouveTables(Restaurant R, int NbC, ServiceParJour S, DateTime HDR, DateTime HFR) { List <Table> res = new List <Table>(); // Tables qui seront affectées List <Table> tablesBonNombrePlaces = new List <Table>(); // Tables qui ont le bon nombre de places // Rempli la liste des tables au bon nombre de place. for (int i = 0; i < R.listeTables.Count; i++) { if (NbC == R.listeTables[i].nbMaxPlaces) { tablesBonNombrePlaces.Add(R.listeTables[i]); } } // Retire les tables qui sont déjà prise pour le service dans le tableau for (int j = 0; j < S.reservations.Count; j++) { for (int i = 0; i < tablesBonNombrePlaces.Count; i++) { if (tablesBonNombrePlaces[i].numeroTable == chercheNumTable(S.reservations[j].tableAffectee, NbC)) { if ((S.reservations[j].horaireDebutResa <HDR && S.reservations[j].horaireFinResa> HDR) || (S.reservations[j].horaireDebutResa <HFR && S.reservations[j].horaireFinResa> HFR) || (S.reservations[j].horaireDebutResa > HDR && S.reservations[j].horaireFinResa < HFR)) { tablesBonNombrePlaces.RemoveAt(i); } } } } // Affecte la première table de la liste des tables disponibles au bon nombre if (tablesBonNombrePlaces.Count != 0) { res.Add(tablesBonNombrePlaces[0]); return(res); } // Si pas de tables dispo au bon nombre // Tables de capacité inférieur et que l'on peut jumeler List <Table> tablesNombreInf = new List <Table>(); for (int i = 0; i < R.listeTables.Count; i++) { if (NbC > R.listeTables[i].nbMaxPlaces && R.listeTables[i].jumelable == true) { tablesNombreInf.Add(R.listeTables[i]); } } for (int j = 0; j < S.reservations.Count; j++) { for (int i = 0; i < tablesNombreInf.Count; i++) { if (tablesNombreInf[i].numeroTable == chercheNumTable(S.reservations[j].tableAffectee, NbC)) { if ((S.reservations[j].horaireDebutResa <HDR && S.reservations[j].horaireFinResa> HDR) || (S.reservations[j].horaireDebutResa <HFR && S.reservations[j].horaireFinResa> HFR) || (S.reservations[j].horaireDebutResa > HDR && S.reservations[j].horaireFinResa < HFR)) { tablesNombreInf.RemoveAt(i); } /*else * { * res.Add(tablesNombreInf[i]); * if (comptePlaces(res) >= NbC) * { * return res; * } * }*/ } } } while (comptePlaces(res) < NbC && tablesNombreInf.Count != 0) { res.Add(tablesBonNombrePlaces[0]); tablesNombreInf.RemoveAt(0); } if (comptePlaces(res) >= NbC) { return(res); } res.Clear(); // Si pas de jumelage possible, on peut prendre des tables plus grandes List <Table> tablesNombreSup = new List <Table>(); for (int i = 0; i < R.listeTables.Count; i++) { if (NbC < R.listeTables[i].nbMaxPlaces) { tablesNombreSup.Add(R.listeTables[i]); } } if (tablesNombreSup.Count == 0) { return(res); } int a = tablesNombreSup[0].nbMaxPlaces; Table b = tablesNombreSup[0]; for (int i = 1; i < tablesNombreSup.Count; i++) { if (tablesNombreSup[i].nbMaxPlaces < a) { a = tablesNombreSup[0].nbMaxPlaces; b = tablesNombreSup[i]; } } res.Add(b); return(res); }