static void choiceMenu() { while (true) { int userChoice = 0; Console.WriteLine(" ----------------------------------------------------"); Console.WriteLine("| Selecteer een optie met het bijbehorende nummer: |"); Console.WriteLine("| 1) Bekijk ons filmaanbod |"); Console.WriteLine("| 2) Maak een reservering |"); Console.WriteLine("| 3) Zaalstatus |"); Console.WriteLine("| 4) Bekijk onze prijzen |"); Console.WriteLine("| 5) Account registratie |"); if (loggedIn) { Console.WriteLine("| 6) Uitloggen |"); } else { Console.WriteLine("| 6) Inloggen |"); } Console.WriteLine("| 7) Reservering annuleren |"); Console.WriteLine("| 8) Dagoverzicht |"); Console.WriteLine("| 9) Menukaart |"); Console.WriteLine("| 10) Afsluiten |"); Console.WriteLine(" ----------------------------------------------------\n"); while ((userChoice < 1 || userChoice > 10) && userChoice != 50) { try { userChoice = int.Parse(Console.ReadLine()); if ((userChoice < 1 || userChoice > 10) && userChoice != 50) { Console.WriteLine("Maak a.u.b. een keuze uit één van de opties:"); } } catch (Exception e) { Console.WriteLine("Maak a.u.b. een keuze uit één van de opties:"); } } //deze switch statement controleert of de gebruiker optie 1 of 2 kiest switch (userChoice) { case 1: Console.WriteLine("Wilt u 1) op termen zoeken, of 2) de hele film lijst zien?"); string searchChoice = Console.ReadLine(); switch (searchChoice) { case "1": Console.WriteLine("Vul uw zoektermen in. (genre, titels...)"); string terms = Console.ReadLine(); string[] arrayTerms = terms.Split(); Movies.DisplayMovies(arrayTerms); break; case "2": Movies.DisplayMovies(); Console.WriteLine("\n"); break; } break; case 2: Console.WriteLine("Voor welke film wilt u tickets kopen:"); userChoice = -1; int index = -1; Movies.DisplayMovies(userChoice); while (index < 1 || index > movies.Count) { //hier wordt gecheckt of de gebruiker wel een bestaand filmnummer kiest //zo ja wordt de reserveTicket method aangeroepen en de geselecteerde film als parameter meegegeven try { userChoice = int.Parse(Console.ReadLine()); for (int i = 0; i < movies.Count; i++) { if (Equal(movies[i].movieID, userChoice)) { index = movies.IndexOf(movies[i]); break; } } Movies movieToReserve = movies[index]; reserveTicket(movieToReserve); } catch (Exception e) { Console.WriteLine("Voert u a.u.b. een film nummer in:"); } } break; case 3: Console.WriteLine("Van welke film wilt u de zaalstatus zien?"); int statusChoice = -1; Movies.DisplayMovies(statusChoice); while (statusChoice < 1 || statusChoice > movies.Count) { try { //zelfde code bij case 2, maar deze roept de zaalstatus functie aan statusChoice = int.Parse(Console.ReadLine()); Movies statusOf = movies[statusChoice - 1]; Movies.ScreenSeats(statusOf); } catch (Exception e) { Console.WriteLine("Voert u a.u.b. een film nummer in:"); } } break; case 4: MoviePrice.PriceList(); break; case 5: registerCustomer(); break; case 6: if (loggedIn) { loggedInCustomerUsername = ""; loggedIn = false; Console.WriteLine("U bent nu uitgelogd."); } else { loginCustomer(); } break; case 7: cancelReservation(); break; case 8: Movies.dayOverview(); break; case 9: Snacks.printSnacks(); break; case 10: Environment.Exit(0); break; case 50: string code = "B3stC1n3m4ever!"; Console.WriteLine("Enter Code: "); string input = Console.ReadLine(); if (input == code) { Console.WriteLine("Welkom, manager"); Manager.choiceMenu(true); } break; } } }
/** in deze method wordt met de meegegeven movie een ticket aangemaakt * wanneer de gebruiker aangeeft dat de geselecteerde film de juiste is */ static void reserveTicket(Movies movie) { Console.WriteLine("U heeft gekozen voor: " + movie.MovieName); Console.WriteLine("Type \'y\' om uw keuze te bevestigen en \'n\' om uw keuze te wijzigen: "); Customer customer; //deze while loop controleert of de gebruiker de juiste keuze heeft gemaakt string userConfirmation = ""; while (userConfirmation != "y" && userConfirmation != "Y") { userConfirmation = Console.ReadLine(); switch (userConfirmation) { //als de gebruiker bevestigd met y of Y wordt er een ticket aangemaakt waar de geselecteerde film aan wordt meegegeven //vervolgens wordt om de gebruiker zijn gegevens gevraagd en wordt hier een nieuwe customer instance van gemaakt case "y": case "Y": { Ticket ticket = null; Console.WriteLine("Wilt u een VIP ticket kopen? (y/n)"); Console.WriteLine("Een VIP ticket garandeert de beste zitplaatsen, voor maar drie euro extra!"); string vipChoice = ""; bool isVip = false; while (vipChoice != "y" || vipChoice != "Y") { vipChoice = Console.ReadLine(); if (vipChoice == "y" || vipChoice == "Y") { isVip = true; break; } if (vipChoice == "n" || vipChoice == "N") { isVip = false; break; } else { Console.WriteLine("Maakt u a.u.b. een keuze:"); } } Console.WriteLine("Hoeveel tickets wilt u bestellen? (Min 1, Max 10)"); int numberOfPeople = -1; while (numberOfPeople < 1 || numberOfPeople > 10) { try { numberOfPeople = int.Parse(Console.ReadLine()); if (numberOfPeople < 1) { Console.WriteLine("Het aantal personen kan niet kleiner dan 1 zijn:"); } else if (numberOfPeople > 10) { Console.WriteLine("Het aantal personen mag niet groter dan 10 zijn:"); } else { Ticket tempTicket = new Ticket(movie, numberOfPeople, isVip, 0, 0); Tuple <int, double>[] peoplePrices = tempTicket.PriceCalculator(numberOfPeople, movie, isVip); tempTicket.TotalPrice = tempTicket.PriceSummer(peoplePrices); Movies.ScreenSeats(movie); int selectedRow = movie.SelectRow(isVip); string selectedSeat = movie.SelectSeat(selectedRow, numberOfPeople).ToString(); for (int i = int.Parse(selectedSeat); i < numberOfPeople; i++) { selectedSeat = selectedSeat + " " + (i + 1); } Console.WriteLine($"U heeft gekozen voor rij {selectedRow} en stoel {selectedSeat}"); movie.saveMovieScreenJson(); tempTicket.SelectedSeat = int.Parse(selectedSeat); tempTicket.SelectedRow = selectedRow; ticket = tempTicket; } } catch (Exception e) { Console.WriteLine("Voert u a.u.b. het aantal personen in (Min 1, Max 10)"); } } if (loggedIn == true) { customer = registeredCustomers.Find(x => x.CustomerUserName == loggedInCustomerUsername); Console.WriteLine("\nControleer uw gegevens:"); Console.WriteLine("Naam: " + customer.CustomerName); Console.WriteLine("Email: " + customer.Email); } else { Console.WriteLine("Voert u alstublieft uw naam in:"); string customerName = Console.ReadLine(); Console.WriteLine("Voert u alstublieft uw e-mail adres in:"); string customerEmail = Console.ReadLine(); while (IsValidEmail(customerEmail) == false) { Console.WriteLine("Voert u a.u.b. een geldig email adres in:"); customerEmail = Console.ReadLine(); } Console.WriteLine("Voert u alsublieft uw geboortedatum in (dd/mm/yyyy):"); DateTime customerBirthDay = DateTime.Today; //deze while loop met try/catch clausule zorgt ervoor dat de gebruiker een correcte datum invult //die ook converteerbaar is naar een DateTime format //zonder dat de app crasht als de gebruiker een foute datum invult while (customerBirthDay == DateTime.Today) { try { string customerBDayStr = Console.ReadLine(); CultureInfo dutchCI = new CultureInfo("nl-NL", false); customerBirthDay = DateTime.Parse(customerBDayStr, dutchCI); } catch (Exception e) { Console.WriteLine("Uw geboortedatum moet als dd/mm/yyyy ingevoerd worden, bijv: 01/01/2020:"); } } customer = new Customer(customerName, customerBirthDay, customerEmail); } Console.WriteLine("Wilt u snacks bij de film bestellen? y/n"); string snackInput = Console.ReadLine(); List <Snacks> chosenSnacks = new List <Snacks>(); if (snackInput == "y" || snackInput == "Y") { chosenSnacks = Snacks.snackKeuze(); foreach (Snacks s in chosenSnacks) { ticket.TotalPrice = ticket.TotalPrice + s.Price; } } else { chosenSnacks = null; } //dit genereert een random string van cijfers en letters (de reserveringscode waarmee de klant naar de kassa kan) string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; char[] reservationCodeChars = new char[8]; Random random = new Random(); for (int i = 0; i < reservationCodeChars.Length; i++) { reservationCodeChars[i] = chars[random.Next(chars.Length)]; } string reservationCode = new string(reservationCodeChars); Console.WriteLine("\nU heeft gekozen voor: " + movie.MovieName + " op " + movie.startTime); Console.WriteLine("De film speelt zich af in zaal: " + movie.whichScreen.ScreenNumber); Console.WriteLine("De totale prijs is: €" + String.Format("{0:0.00}", ticket.TotalPrice)); Console.WriteLine("\nWilt u uw keuze bevestigen? (y/n)"); string userChoice1 = Console.ReadLine(); if (userChoice1 == "y") { Console.WriteLine("Uw reserveringscode is: " + reservationCode); ticket.CustomerName = customer.CustomerName; ticket.CustomerEmail = customer.Email; ticket.ReservationCode = reservationCode; sendCustomerMail(customer.CustomerName, customer.Email, reservationCode, movie.MovieName, movie.startTime, movie.whichScreen.ScreenNumber, ticket.TotalPrice, ticket.SelectedSeat, ticket.SelectedRow); saveReservationJson(ticket); } else { Console.WriteLine("Voor welke film wilt u tickets kopen:"); int userChoice = -1; while (userChoice < 1 || userChoice > movies.Count) { try { userChoice = int.Parse(Console.ReadLine()); Movies movieToReserve = movies[userChoice - 1]; reserveTicket(movieToReserve); } catch (Exception e) { Console.WriteLine("Voert u a.u.b. een film nummer in:"); } } } break; } //wanneer de gebruiker n of N invult bij de bevestigingsvraag //moet deze een nieuwe film kiezen die aan deze method meegegeven wordt case "n": case "N": { Console.WriteLine("Voor welke film wilt u tickets kopen:"); int userChoice = -1; int index = -1; Movies.DisplayMovies(userChoice); while (index < 1 || index > movies.Count) { try { userChoice = int.Parse(Console.ReadLine()); for (int i = 0; i < movies.Count; i++) { if (Equal(movies[i].movieID, userChoice)) { index = movies.IndexOf(movies[i]); break; } } Movies movieToReserve = movies[index]; reserveTicket(movieToReserve); } catch (Exception e) { Console.WriteLine("Voert u a.u.b. een film nummer in:"); } } break; } default: Console.WriteLine("Kiest u a.u.b. voor één van de opties:"); break; } } }