Exemplo n.º 1
0
        static async Task Main(string[] args)
        {
            //Current directory och Backend.cfg ligger på olika ställen. För att byta backend så får flytta # i bin-foldern i admin.
            #region Read configfile and populate lists
            rep = Helpers.GetSelectedBackend();
            #endregion

            while (ProgramState.Running)
            {
                switch (ProgramState.CURRENT_MENU)
                {
                    #region // Case: Login
                case ProgramState.PROGRAM_MENUES.LOGIN_SCREEN:
                {
                    ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.MAIN_MENU;
                    Console.Clear();
                    Console.WriteLine("~ VÄLKOMMEN TILL ADMINPANELEN ~");
                    bool CorrectLogin = (await Menus.PrintAndReturnStateOfLogin(rep, "admin")).Item1;

                    if (CorrectLogin == true)
                    {
                        ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.MAIN_MENU;
                    }
                    else
                    {
                        await Menus.PrintAndReturnStateOfLogin(rep, "admin");
                    }
                }
                break;
                    #endregion

                    #region // Case: Main Menu
                case ProgramState.PROGRAM_MENUES.MAIN_MENU:
                {
                    var UserChoice = await Menus.PrintMenuAndCheckChoice(Menus.MenuChoices[0]);

                    {
                        if (UserChoice.Item1 == true)
                        {
                            if (UserChoice.Item2 == 1)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.EMPLOYEES;
                            }
                            else if (UserChoice.Item2 == 2)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.PIZZAS;
                            }
                            else if (UserChoice.Item2 == 3)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.INGREDIENTS;
                            }
                            else if (UserChoice.Item2 == 4)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.EXTRAS;
                            }
                            else if (UserChoice.Item2 == 5)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.OLD_ORDERS;
                            }
                            else if (UserChoice.Item2 == 6)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.LOGIN_SCREEN;
                            }
                            else
                            {
                                await Menus.MessageIfChoiceIsNotRight("Ditt val är felaktigt.", "Valet finns inte.");
                            }
                        }
                        else
                        {
                            await Menus.MessageIfChoiceIsNotRight("Ditt val är felaktigt.");
                        }
                    }
                }
                break;
                    #endregion

                    #region // Employees
                case ProgramState.PROGRAM_MENUES.EMPLOYEES:
                {
                    var UserChoice = await Menus.PrintMenuAndCheckChoice(Menus.MenuChoices[1]);

                    {
                        if (UserChoice.Item1 == true)
                        {
                            if (UserChoice.Item2 == 1)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.ADD_EMPLOYEE;
                            }
                            else if (UserChoice.Item2 == 2)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.UPDATE_EMPLOYEE;
                            }
                            else if (UserChoice.Item2 == 3)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.SHOW_EMPLOYEE;
                            }
                            else if (UserChoice.Item2 == 4)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.DELETE_EMPLOYEE;
                            }
                            else if (UserChoice.Item2 == 5)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.MAIN_MENU;
                            }
                            else
                            {
                                await Menus.MessageIfChoiceIsNotRight("Ditt val är felaktigt.", "Valet finns inte.");
                            }
                        }
                        else
                        {
                            await Menus.MessageIfChoiceIsNotRight("Ditt val är felaktigt.");
                        }
                    }
                }
                break;

                case ProgramState.PROGRAM_MENUES.ADD_EMPLOYEE:
                {
                    Employee newEmployee = await Menus.AddEmployeeMenu();

                    if (newEmployee.Password == null || newEmployee.Role == null)           // Om något av värdena returnerats som null så innebär det att ESC klickats och då skickas användaren tillbaka
                    {
                        ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.EMPLOYEES;
                    }
                    else
                    {                                                       // Annars läggs den nya användaren till i databasen
                        await rep.AddEmployee(newEmployee);

                        await Menus.ConfirmationScreen("Den anställde är tillagd.");
                    }
                }
                break;

                case ProgramState.PROGRAM_MENUES.UPDATE_EMPLOYEE:
                {
                    Employee employeeToUpdate = await Menus.CheckEmployeeIDMenu(rep);

                    if (employeeToUpdate.Password == null)                                      // kontrollerar om ESC klickats
                    {
                        ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.EMPLOYEES;
                    }
                    else
                    {
                        employeeToUpdate = await Menus.UpdateEmployeeMenu(employeeToUpdate);

                        if (employeeToUpdate.Password == null || employeeToUpdate.Role == null)
                        {
                            ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.EMPLOYEES;
                        }
                        else
                        {
                            await rep.UpdateEmployee(employeeToUpdate);

                            await Menus.ConfirmationScreen("Anställd uppdaterad.");

                            ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.EMPLOYEES;
                        }
                    }
                }
                break;

                case ProgramState.PROGRAM_MENUES.SHOW_EMPLOYEE:
                {
                    bool wantToGoBack = false;

                    while (wantToGoBack == false)
                    {
                        Console.Clear();
                        Console.WriteLine("~~ SAMTLIGA ANSTÄLLDA ~~");
                        Console.WriteLine();
                        //var employees = await rep.GetAllEmployees().Result.OrderBy
                        foreach (var employees in (await rep.GetAllEmployees()).ToList().OrderBy(e => e.UserID))
                        {
                            Console.WriteLine(employees);
                        }

                        Console.WriteLine();
                        Console.WriteLine("Klicka på ESC för att gå tillbaka");
                        if (Console.ReadKey(true).Key == ConsoleKey.Escape)
                        {
                            ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.EMPLOYEES;
                            break;
                        }
                    }
                }
                break;

                case ProgramState.PROGRAM_MENUES.DELETE_EMPLOYEE:
                {
                    Employee employeeToDelete = await Menus.DeleteEmployeeMenu(rep);

                    if (employeeToDelete.Password == null)
                    {
                        ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.EMPLOYEES;
                    }
                    else
                    {
                        await rep.DeleteEmployee(employeeToDelete);

                        await Menus.ConfirmationScreen("Anställd borttagen.");
                    }
                }
                break;
                    #endregion

                    #region// Pizzas
                case ProgramState.PROGRAM_MENUES.PIZZAS:
                {
                    var UserChoice = await Menus.PrintMenuAndCheckChoice(Menus.MenuChoices[2]);

                    {
                        if (UserChoice.Item1 == true)
                        {
                            if (UserChoice.Item2 == 1)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.ADD_PIZZA;
                            }
                            else if (UserChoice.Item2 == 2)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.UPDATE_PIZZA;
                            }
                            else if (UserChoice.Item2 == 3)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.SHOW_PIZZA;
                            }
                            else if (UserChoice.Item2 == 4)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.DELETE_PIZZA;
                            }
                            else if (UserChoice.Item2 == 5)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.MAIN_MENU;
                            }
                            else
                            {
                                await Menus.MessageIfChoiceIsNotRight("Ditt val är felaktigt.", "Valet finns inte.");
                            }
                        }
                        else
                        {
                            await Menus.MessageIfChoiceIsNotRight("Ditt val är felaktigt.");
                        }
                    }
                }
                break;

                case ProgramState.PROGRAM_MENUES.ADD_PIZZA:
                {
                    Pizza newPizza = new Pizza();
                    newPizza = await Menus.AddPizzaMenu(rep);

                    if (newPizza.Type == null || newPizza.PizzabaseID == 0 || newPizza.Price <= 0)
                    {
                        ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.PIZZAS;
                    }
                    else
                    {
                        //using (IDbTransaction transaction = await rep.Transaction())
                        //{
                        newPizza = await rep.AddPizza(newPizza);

                        newPizza.PizzaIngredients = await Menus.AddCondimentToPizzaMenu(rep, newPizza);

                        if (newPizza.PizzaIngredients.Count < 1)
                        {
                            await rep.DeletePizza(newPizza);

                            ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.PIZZAS;
                        }
                        else
                        {
                            await rep.AddCondimentToPizza(newPizza);

                            await Menus.ConfirmationScreen("Pizzan tillagd.");

                            ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.PIZZAS;
                        }
                        //}
                    }
                }
                break;

                case ProgramState.PROGRAM_MENUES.UPDATE_PIZZA:
                {
                    Console.Clear();
                    Console.WriteLine("~~ UPPDATERA Pizza ~~");
                    Console.WriteLine("Klicka ESC för att gå tillbaka.");

                    Console.Write("\nAnge ID för den pizza du vill ändra: ");
                    string pizzaIDToBeUpdated = await Menus.ReadLineWithOptionToGoBack();

                    if (pizzaIDToBeUpdated == null)
                    {
                        ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.PIZZAS;
                    }
                    else
                    {
                        bool correctInput = int.TryParse(pizzaIDToBeUpdated, out int IDOfPizzaToBeUpdated);
                        if (correctInput == true)
                        {
                            bool checkIfPizzaExists = await rep.CheckIfPizzaIDExists(IDOfPizzaToBeUpdated);

                            if (checkIfPizzaExists == true)
                            {
                                Console.Clear();
                                Pizza pizzaToBeUpdated = new Pizza();
                                pizzaToBeUpdated = await rep.GetSinglePizza(IDOfPizzaToBeUpdated);

                                pizzaToBeUpdated = await Menus.UpdatePizzaMenu(rep, pizzaToBeUpdated);

                                if (pizzaToBeUpdated.PizzabaseID == 0 || pizzaToBeUpdated.PizzaIngredients == null || pizzaToBeUpdated.Type == null || pizzaToBeUpdated.Price == 0)
                                {
                                    ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.PIZZAS;
                                }
                                else
                                {
                                    await rep.UpdatePizza(pizzaToBeUpdated);

                                    await Menus.ConfirmationScreen("Pizzan uppdaterad.");

                                    ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.PIZZAS;
                                }
                            }
                            else
                            {
                                await Menus.MessageIfChoiceIsNotRight("Angiven pizza finns inte.");
                            }
                        }
                        else
                        {
                            await Menus.MessageIfChoiceIsNotRight("Felaktig inmatning.");
                        }
                    }
                }
                break;

                case ProgramState.PROGRAM_MENUES.SHOW_PIZZA:
                {
                    Console.Clear();
                    Console.WriteLine("~~ SAMTLIGA PIZZOR ~~");
                    Console.WriteLine();
                    foreach (Pizza pizza in Helpers.LoadPizzasAsList(rep))
                    {
                        Console.WriteLine($"{pizza.PizzaID}. {pizza.Type}  {pizza.Price} kr");
                        for (int index = 0; index < pizza.PizzaIngredients.Count; index++)
                        {
                            if (index == 0)
                            {
                                Console.Write($"{pizza.PizzaIngredients[index].Type}");
                            }
                            else
                            {
                                Console.Write($", {pizza.PizzaIngredients[index].Type}");
                            }
                        }

                        Console.WriteLine("\n");
                    }

                    Console.WriteLine();
                    Console.WriteLine("Klicka på ESC för att gå tillbaka");
                    if (Console.ReadKey(true).Key == ConsoleKey.Escape)
                    {
                        ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.PIZZAS;
                        break;
                    }
                    else
                    {
                        await Menus.MessageIfChoiceIsNotRight("Vänligen klicka på ESC för att återgå.");
                    }
                }
                break;

                case ProgramState.PROGRAM_MENUES.DELETE_PIZZA:
                {
                    Pizza pizzaToDelete = await Menus.DeletePizzaMenu(rep);

                    if (pizzaToDelete == null)
                    {
                        ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.PIZZAS;
                    }
                    else
                    {
                        await rep.DeletePizza(pizzaToDelete);

                        await Menus.ConfirmationScreen("Pizzan raderad.");

                        ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.PIZZAS;
                    }
                }
                break;
                    #endregion

                    #region// Ingredients
                case ProgramState.PROGRAM_MENUES.INGREDIENTS:
                {
                    var UserChoice = await Menus.PrintMenuAndCheckChoice(Menus.MenuChoices[3]);

                    {
                        if (UserChoice.Item1 == true)
                        {
                            if (UserChoice.Item2 == 1)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.ADD_INGREDIENT;
                            }
                            else if (UserChoice.Item2 == 2)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.UPDATE_INGREDIENT;
                            }
                            else if (UserChoice.Item2 == 3)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.SHOW_INGREDIENT;
                            }
                            else if (UserChoice.Item2 == 4)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.DELETE_INGREDIENT;
                            }
                            else if (UserChoice.Item2 == 5)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.MAIN_MENU;
                            }
                            else
                            {
                                await Menus.MessageIfChoiceIsNotRight("Ditt val är felaktigt.", "Valet finns inte.");
                            }
                        }
                        else
                        {
                            await Menus.MessageIfChoiceIsNotRight("Ditt val är felaktigt.");
                        }
                    }
                }
                break;

                case ProgramState.PROGRAM_MENUES.ADD_INGREDIENT:
                {
                    Condiment newCondiment = await Menus.AddCondimentMenu(rep);

                    if (newCondiment == null)
                    {
                        ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.INGREDIENTS;
                    }
                    else
                    {
                        await rep.AddCondiment(newCondiment);

                        await Menus.ConfirmationScreen("Ingrediens tillagd.");

                        ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.INGREDIENTS;
                    }
                }
                break;

                case ProgramState.PROGRAM_MENUES.UPDATE_INGREDIENT:
                {
start:
                    Console.Clear();
                    Console.WriteLine("~~ UPPDATERA INGREDIENS ~~");
                    Console.WriteLine("Klicka ESC för att gå tillbaka.");

                    Console.Write("\nAnge ID för den ingrediens du vill ändra: ");
                    string IDOfCondimentToUpdate = await Menus.ReadLineWithOptionToGoBack();

                    if (IDOfCondimentToUpdate == null)
                    {
                        ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.INGREDIENTS;
                    }
                    else
                    {
                        bool correctInput = int.TryParse(IDOfCondimentToUpdate, out int IDToCheck);
                        if (correctInput == true)
                        {
                            bool checkIfIDExists = await rep.CheckIfCondimentIDExists(IDToCheck);

                            if (checkIfIDExists == true)
                            {
                                Condiment condimentToUpdate = await rep.GetSingleCondiment(IDToCheck);

                                condimentToUpdate = await Menus.UpdateCondimentMenu(rep, condimentToUpdate);

                                if (condimentToUpdate == null)
                                {
                                    ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.INGREDIENTS;
                                }
                                else
                                {
                                    await rep.UpdateCondiment(condimentToUpdate);

                                    await Menus.ConfirmationScreen("Ingrediens uppdaterad.");

                                    ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.INGREDIENTS;
                                }
                            }
                            else
                            {
                                await Menus.MessageIfChoiceIsNotRight("Angivet ID finns inte.");

                                goto start;
                            }
                        }
                        else
                        {
                            await Menus.MessageIfChoiceIsNotRight("Felaktig inmatning."); goto start;
                        }
                    }
                }
                break;

                case ProgramState.PROGRAM_MENUES.SHOW_INGREDIENT:
                {
                    Console.Clear();
                    Console.WriteLine($"~~ SAMTLIGA INGREDIENSER ~~\n");

                    foreach (var ingredient in (await rep.GetAllCondiments()).ToList().OrderBy(c => c.CondimentID))
                    {
                        Console.WriteLine($"{ingredient.CondimentID}. {ingredient.Type}, {ingredient.Price} kr");
                    }

                    Console.WriteLine($"\nKlicka på ESC för att gå tillbaka");
                    if (Console.ReadKey(true).Key == ConsoleKey.Escape)
                    {
                        ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.INGREDIENTS;
                        break;
                    }
                    else
                    {
                        await Menus.MessageIfChoiceIsNotRight("Vänligen klicka på ESC för att återgå.");
                    }
                }
                break;

                case ProgramState.PROGRAM_MENUES.DELETE_INGREDIENT:
                {
                    Condiment condimentToDelete = await Menus.DeleteCondimentMenu(rep);

                    if (condimentToDelete == null)
                    {
                        ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.INGREDIENTS;
                    }
                    else
                    {
                        await rep.DeleteCondiment(condimentToDelete);

                        await Menus.ConfirmationScreen("Ingrediensen borttagen.");

                        ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.INGREDIENTS;
                    }
                }
                break;
                    #endregion

                    #region// Extras
                case ProgramState.PROGRAM_MENUES.EXTRAS:
                {
                    var UserChoice = await Menus.PrintMenuAndCheckChoice(Menus.MenuChoices[4]);

                    {
                        if (UserChoice.Item1 == true)
                        {
                            if (UserChoice.Item2 == 1)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.ADD_EXTRAS;
                            }
                            else if (UserChoice.Item2 == 2)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.UPDATE_EXTRAS;
                            }
                            else if (UserChoice.Item2 == 3)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.SHOW_EXTRAS;
                            }
                            else if (UserChoice.Item2 == 4)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.DELETE_EXTRAS;
                            }
                            else if (UserChoice.Item2 == 5)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.MAIN_MENU;
                            }
                            else
                            {
                                await Menus.MessageIfChoiceIsNotRight("Ditt val är felaktigt.", "Valet finns inte.");
                            }
                        }
                        else
                        {
                            await Menus.MessageIfChoiceIsNotRight("Ditt val är felaktigt.");
                        }
                    }
                }
                break;

                case ProgramState.PROGRAM_MENUES.ADD_EXTRAS:
                {
                    Extra newExtra = await Menus.AddExtraMenu(rep);

                    if (newExtra == null)
                    {
                        ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.EXTRAS;
                    }
                    else
                    {
                        await rep.AddExtra(newExtra);

                        await Menus.ConfirmationScreen("Tillbehör tillagt.");

                        ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.EXTRAS;
                    }
                }
                break;

                case ProgramState.PROGRAM_MENUES.UPDATE_EXTRAS:
                {
start:

                    Console.Clear();
                    Console.WriteLine("~~ UPPDATERA TILLBEHÖR ~~\n");
                    Console.WriteLine("Klicka på ESC för att gå tillbaka.");

                    Console.Write("\n\nAnge ID på det tillbehör som ska ändras: ");
                    string IDOfExtraToUpdate = await Menus.ReadLineWithOptionToGoBack();

                    if (IDOfExtraToUpdate == null)
                    {
                        ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.EXTRAS;
                    }
                    else
                    {
                        bool correctInput = int.TryParse(IDOfExtraToUpdate, out int IDOfExtra);
                        if (correctInput == true)
                        {
                            bool checkIfIDExists = await rep.CheckIfProductIDExists(IDOfExtra);

                            if (checkIfIDExists == true)
                            {
                                //Tillagt för att ha ett objekt att skicka in.
                                Extra extraToUpdate = await rep.GetSingleExtra(IDOfExtra);

                                extraToUpdate = await Menus.UpdateExtraMenu(rep, extraToUpdate);

                                if (extraToUpdate == null)
                                {
                                    ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.EXTRAS;
                                }
                                else
                                {
                                    await rep.UpdateExtra(extraToUpdate);

                                    await Menus.ConfirmationScreen("Tillbehöret uppdaterat.");

                                    ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.EXTRAS;
                                }
                            }
                            else
                            {
                                await Menus.MessageIfChoiceIsNotRight("Det angivna ID:t finns inte."); goto start;
                            }
                        }
                        else
                        {
                            await Menus.MessageIfChoiceIsNotRight("Felaktig inmatning."); goto start;
                        }
                    }
                }
                break;

                case ProgramState.PROGRAM_MENUES.SHOW_EXTRAS:
                {
                    Console.Clear();
                    Console.WriteLine($"~~ SAMTLIGA TILLBEHÖR ~~\n");

                    foreach (var extra in (await rep.GetAllExtras()).ToList().OrderBy(e => e.ProductID))
                    {
                        Console.WriteLine($"{extra.ProductID}. {extra.Type}, {extra.Price} kr");
                    }

                    Console.WriteLine($"\nKlicka på ESC för att gå tillbaka");
                    if (Console.ReadKey(true).Key == ConsoleKey.Escape)
                    {
                        ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.EXTRAS;
                        break;
                    }
                    else
                    {
                        await Menus.MessageIfChoiceIsNotRight("Vänligen klicka på ESC för att återgå.");
                    }
                }
                break;

                case ProgramState.PROGRAM_MENUES.DELETE_EXTRAS:
                {
                    Extra extraToDelete = await Menus.DeleteExtraMenu(rep);

                    if (extraToDelete == null)
                    {
                        ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.EXTRAS;
                    }
                    else
                    {
                        await rep.DeleteExtra(extraToDelete);

                        await Menus.ConfirmationScreen("Tillbehöret borttaget.");

                        ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.EXTRAS;
                    }
                }
                break;
                    #endregion

                    #region // Old orders
                case ProgramState.PROGRAM_MENUES.OLD_ORDERS:
                {
                    var UserChoice = await Menus.PrintMenuAndCheckChoice(Menus.MenuChoices[5]);

                    {
                        if (UserChoice.Item1 == true)
                        {
                            if (UserChoice.Item2 == 1)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.SHOW_OLD_ORDERS;
                            }
                            else if (UserChoice.Item2 == 2)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.DELETE_OLD_ORDERS;
                            }
                            else if (UserChoice.Item2 == 3)
                            {
                                ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.MAIN_MENU;
                            }
                            else
                            {
                                await Menus.MessageIfChoiceIsNotRight("Ditt val är felaktigt.", "Valet finns inte.");
                            }
                        }
                        else
                        {
                            await Menus.MessageIfChoiceIsNotRight("Ditt val är felaktigt.");
                        }
                    }
                }
                break;

                case ProgramState.PROGRAM_MENUES.SHOW_OLD_ORDERS:     // Fungerar. Visar bara ordrar som gått igenom utlämning och är därmed gamla
                {
                    Console.Clear();
                    Console.WriteLine("~~ VISA GAMLA ORDRAR ~~");
                    Console.WriteLine();

                    var result = (await rep.GetOrderByStatus(3)).ToList().OrderBy(o => o.OrderID);

                    foreach (var order in result)
                    {
                        Console.WriteLine();
                        Console.WriteLine();
                        Console.WriteLine($"ID: {order.OrderID} Pris: {order.Price}");
                        Console.Write($"Pizzor: ");

                        foreach (var item in order.PizzaList)
                        {
                            Console.Write($"{item.Type}, ");
                        }

                        Console.WriteLine();
                        Console.Write("Tillbehör: ");

                        foreach (var item in order.ExtraList)
                        {
                            Console.Write($"{item.Type}, ");
                        }
                    }

                    Console.WriteLine();
                    Console.WriteLine("\nKlicka på ESC för att gå tillbaka");
                    if (Console.ReadKey(true).Key == ConsoleKey.Escape)
                    {
                        ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.OLD_ORDERS;
                        break;
                    }
                }
                break;

                case ProgramState.PROGRAM_MENUES.DELETE_OLD_ORDERS:     // Fungerar. Gör koll mot databasen för att försäkra om att man inte skriver in en aktiv order.
                {
                    {
                        Order orderToDelete = await Menus.DeleteOldOrderMenu(rep);

                        if (orderToDelete == null)
                        {
                            ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.OLD_ORDERS;
                        }
                        else
                        {
                            await rep.DeleteOldOrder(orderToDelete);

                            await Menus.ConfirmationScreen("Ordern borttagen.");

                            ProgramState.CURRENT_MENU = ProgramState.PROGRAM_MENUES.OLD_ORDERS;
                        }
                    }
                }
                break;
                    #endregion

                default:
                    ProgramState.Running = false;
                    break;
                }
            }
        }