/// <summary> /// Koppelen van Tafels met ID /// </summary> /// <param name="aantalMensen">Hoeveelheid mensen die bij de reservering aanwezig zullen zijn</param> /// <param name="gereserveerdeTafels">Lijst met de tafels die al zijn gekoppeld aan de reservering</param> /// <param name="tijdEnDatum">De tijd en datum waarop de reservering plaatsvindt (string format)</param> /// <returns>Returns de vernieuwde lijst voor de reservering (als deze is aangepast)</returns> public List <Tafel> KoppelenDoorMedewerker(int aantalMensen, List <Tafel> gereserveerdeTafels, string tijdEnDatum) //Koppelen door medewerker heeft als input een int aantal mensen, en list van tafels die al gekoppeld zijn aan de reservering. { int checkTijd = TijdEnDatumNaarInt(tijdEnDatum); //De gegeven tijd in int (1200) string checkDatum = TijdEnDatumNaarDatum(tijdEnDatum); //De gegeven datum in string (Zaterdag 1 januari 2021) while (true) { Console.Clear(); Console.WriteLine(ASCIIART.TafelsKoppelenArt()); if (BerekenTafelsDieNogGekoppeldMoetenWorden(aantalMensen, gereserveerdeTafels) <= 0) //0 megenomen omdat dat aangeeft dat er precies genoeg tafels zijn gekoppeld. { Console.WriteLine("Er zijn genoeg tafels gekoppeld aan deze reservering. Klik op een toets om terug te gaan"); SaveTafels(this); Console.ReadKey(); return(gereserveerdeTafels); } Console.WriteLine("Voer het ID van een tafel in om hem toe te voegen aan de reservering (bijv: 1A)\n\n0: Terug"); string userInput = Console.ReadLine(); if (userInput == "0") { SaveTafels(this); return(gereserveerdeTafels); } bool succesvolGekoppeld = false; foreach (Tafel tafel in Tafels) { bool alGereserveerd = false; if (tafel.Gereserveerd == null) { tafel.Gereserveerd = new List <string>(); } if (userInput == tafel.ID) { foreach (string data in tafel.Gereserveerd) { if (TijdEnDatumNaarDatum(data) == checkDatum) //Als het op dezelfde dag plaats vind { if (TijdCheck(checkTijd, TijdEnDatumNaarInt(data), 200)) //checkt of de tafel al gereserveerd is ergens binnen 200 (2 uur) van tevoren of 2 uur daarna, zo ja, Is al gereserveerd. { alGereserveerd = true; } } } if (!alGereserveerd) { if (gereserveerdeTafels == null) { gereserveerdeTafels = new List <Tafel>(); } Console.Clear(); Console.WriteLine(ASCIIART.TafelsArt()); gereserveerdeTafels.Add(tafel); tafel.Gereserveerd.Add($"{TijdEnDatumNaarInt(tijdEnDatum)}{TijdEnDatumNaarDatum(tijdEnDatum)}"); //1200Zaterdag 1 januari 2021 succesvolGekoppeld = true; Console.WriteLine($"{tafel.ID} toegevoegd aan de reservering!\n\nKlik op een toets en klik enter om verder te gaan"); Console.ReadLine(); break; } } } if (!succesvolGekoppeld) { Console.Clear(); Console.WriteLine(ASCIIART.TafelsArt()); Console.WriteLine($"{userInput} is al gekoppeld voor deze tijd of bestaat niet als tafel in het systeem! Klik op een toets om door te gaan"); Console.ReadLine(); } } }
/// <summary> /// Koppelt automatisch tafels aan een reservering /// </summary> /// <param name="aantalMensen">Hoeveelheid mensen die bij de reservering aanwezig zullen zijn</param> /// <param name="gereserveerdeTafels">Lijst met de tafels die al zijn gekoppeld aan de reservering</param> /// <param name="tijdEnDatum">De tijd en datum waarop de reservering plaatsvindt (string format)</param> /// <param name="tochKoppelen">Boolean die op true wordt gezet wanneer er toch een inefficiente tafel gekoppeld moet worden (tafel van 4 voor mensen met minder dan 3)</param> /// <returns>Returns de vernieuwde lijst voor de reservering (als deze is aangepast)</returns> public List <Tafel> AutomatischKoppelen(int aantalMensen, List <Tafel> gereserveerdeTafels, string tijdEnDatum, bool tochKoppelen = false) { while (true) { Console.Clear(); Console.WriteLine(ASCIIART.TafelsKoppelenArt()); if (BerekenTafelsDieNogGekoppeldMoetenWorden(aantalMensen, gereserveerdeTafels) <= 0) //0 megenomen omdat dat aangeeft dat er precies genoeg tafels zijn gekoppeld. { Console.WriteLine("Er zijn al genoeg tafels gekoppeld aan deze reservering. Klik op een toets om terug te gaan"); ConsoleKeyInfo input = Console.ReadKey(); return(gereserveerdeTafels); } bool wrongInput = false; Console.WriteLine($"Er worden automatisch tafels toegevoegd die passen bij {aantalMensen} personen, weet u dit zeker?\n"); Console.WriteLine($"1: Ja\n"); Console.WriteLine($"0: Nee\n"); if (wrongInput) { Console.WriteLine("Wrong Input! Probeer 1 of 0"); } char userInput = Console.ReadKey().KeyChar; switch (userInput) { case '1': Console.Clear(); Console.WriteLine(ASCIIART.TafelsKoppelenArt()); int plekkenDieNogMoetenWordenGekoppeld = BerekenTafelsDieNogGekoppeldMoetenWorden(aantalMensen, gereserveerdeTafels); int checkTijd = TijdEnDatumNaarInt(tijdEnDatum); //De gegeven tijd in int (1200) string checkDatum = TijdEnDatumNaarDatum(tijdEnDatum); //De gegeven datum in string (Zaterdag 1 januari 2021) if (gereserveerdeTafels == null) { gereserveerdeTafels = new List <Tafel>(); } foreach (Tafel tafel in Tafels) { if (plekkenDieNogMoetenWordenGekoppeld > 0) { if (tafel.Gereserveerd == null) { tafel.Gereserveerd = new List <string>(); } bool alGereserveerd = false; bool geenGoedeTafel = false; foreach (string data in tafel.Gereserveerd) { if (isEenTafelAlGereserveerd(data, checkDatum, checkTijd)) { alGereserveerd = true; break; } } if (plekkenDieNogMoetenWordenGekoppeld <= 2 && tafel.Plekken != 2 && !alGereserveerd) //Als er nog maar 2 of minder mensen zijn die een tafel nodig heeft van een reservering, kijkt het systeem om de tafel 2 personen heeft om ruimte te besparen { geenGoedeTafel = true; } else if (!alGereserveerd && !geenGoedeTafel) { Console.WriteLine($"Tafel {tafel.ID} toegevoegd aan reservering, {tafel.Plekken} plekken"); plekkenDieNogMoetenWordenGekoppeld -= tafel.Plekken; gereserveerdeTafels.Add(tafel); tafel.Gereserveerd.Add($"{TijdEnDatumNaarInt(tijdEnDatum)}{TijdEnDatumNaarDatum(tijdEnDatum)}"); //1200Zaterdag 1 januari 2021 } } } if (plekkenDieNogMoetenWordenGekoppeld > 0 && tochKoppelen == false) { //Als er geen tafels van 2 zijn voor de laatste 2 of 1 persoon van een reservering dan laat het systeem dat weten. Console.WriteLine($"{plekkenDieNogMoetenWordenGekoppeld} Plekken zijn niet succesvol gekoppeld omdat er geen tafels van 2 personen meer vrij zijn, wilt u dat het systeem checkt of er nog tafels van 4 personen zijn en deze koppelen?\n\n1: Ja\n0: Nee"); char inputUser = Console.ReadKey().KeyChar; switch (inputUser) { case '1': AutomatischKoppelen(aantalMensen, gereserveerdeTafels, tijdEnDatum, true); return(gereserveerdeTafels); case '0': SaveTafels(this); return(gereserveerdeTafels); } } SaveTafels(this); Console.WriteLine("Toets op een knop om verder te gaan"); Console.ReadLine(); return(gereserveerdeTafels); case '0': return(gereserveerdeTafels); default: wrongInput = true; break; } } }