Exemplo n.º 1
0
        public static void Main(string[] args)
        {
            Screen.InitScreens();
            Snacks.FillSnackList();
            Movies.fillMovieList();
            fillReservationList();
            Ticket.fillRegisteredCustomerList();

            displayWelcomeMsg();
            choiceMenu();
        }
Exemplo n.º 2
0
        public static void FillSnackList()
        {
            string jsonText = File.ReadAllText("snacks.json");

            using (JsonDocument document = JsonDocument.Parse(jsonText))
            {
                JsonElement root      = document.RootElement;
                JsonElement snackList = root;
                foreach (JsonElement snack in snackList.EnumerateArray())
                {
                    if (snack.TryGetProperty("snackName", out JsonElement snackNameElement) &&
                        snack.TryGetProperty("nutritionInfo", out JsonElement nutritionInfoElement) &&
                        snack.TryGetProperty("Price", out JsonElement PriceElement))
                    {
                        string snackName     = snackNameElement.GetString();
                        string nutritionInfo = nutritionInfoElement.GetString();
                        double Price         = PriceElement.GetDouble();

                        Snacks fillSnacks = new Snacks(snackName, nutritionInfo, Price);
                        Program.snacks.Add(fillSnacks);
                    }
                }
            }
        }
Exemplo n.º 3
0
        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;
                }
            }
        }
Exemplo n.º 4
0
        /** 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;
                }
            }
        }