static void OrderOrHistory(User u) { Console.WriteLine("--- Hello Returning User -- type 1 to view your order history or 0 to start a new order"); int.TryParse(System.Console.ReadLine(), out int input); if (input == 1) { _sql.ReadUsersPizzas(_sql.UsersOrders(u)); } else { var ThisOrder = new Order(); ThisOrder.UserEntityId = u.EntityId; PrintAllStoresEF(); Console.WriteLine("--- Type Store Name to select a store ---"); u.SelectedStore = _sql.SelectStore(); u.SelectedStore.CreateOrder(); u.Orders = u.SelectedStore.Orders; u.Orders.Add(u.SelectedStore.Orders.Last()); ThisOrder = u.SelectedStore.Orders.Last(); ThisOrder.DisplayPizzaOptions(); ThisOrder.AddPizza(); _sql.Update(); _sql.ReviewOrder(ThisOrder); u.SelectedStore.Revenue = u.SelectedStore.Revenue + ThisOrder.Total; _sql.Update(); Console.WriteLine(u); ViewStoreRev(u.SelectedStore); } }
static void UserView(User user) { System.Console.Clear(); var stay = true; do { System.Console.WriteLine("would you like to view your history (h), place an order (o), or logout (x)?"); var select = System.Console.ReadLine(); if (select.Equals("h")) { System.Console.Clear(); foreach (var o in user.Orders) { System.Console.WriteLine(o.ToString()); } } else if (select.Equals("o")) { System.Console.WriteLine("Please select a store by typing its name :"); PrintAllStoresWithEF(); var SelectedStore = _sql.SelectStore(); List <APizzaModel> SelectedPizzas = _client.SelectPizzas(); System.Console.Clear(); SelectedStore.CreateOrder(SelectedPizzas); user.Orders.Add(SelectedStore.Orders.Last()); _sql.SaveOrder(user.Orders.Last()); _sql.Update(); System.Console.WriteLine("Here are all the pizzas you ordered::"); System.Console.WriteLine(user.Orders.Last().ToString()); } else if (select.Equals("x")) { stay = false; System.Console.WriteLine("Have a nice day!"); } else { System.Console.WriteLine("No valid selection made, please try again"); } } while (stay); }
static void UserView(User user) { PrintAllStores(); user.SelectedStore = _sql.SelectStore(); user.SelectedStore.CreateOrder(); user.Orders.Add(user.SelectedStore.Orders.Last()); SelectPizza(user); _sql.Update(); System.Console.WriteLine("Order Successful!"); NewOrder(user); }
static void UserView() { Console.WriteLine("Please type 1 for Store, 2 for User"); string InitialChoice = Console.ReadLine(); if (InitialChoice == "1") { Console.WriteLine("Please enter the name of your store for orders (One, Two, Three)"); Store StoreChoice = _sql.SelectStore(); PrintOrdersOfStore(StoreChoice); Environment.Exit(0); } else if (InitialChoice == "2") { Console.WriteLine("Are you a returning (1) or new (2) user?"); string NewOrReturning = Console.ReadLine(); if (NewOrReturning == "1") { Console.WriteLine("Welcome back! Please enter your user name."); string ReturningName = Console.ReadLine(); Console.WriteLine($"Hi {ReturningName}! Would you like to view your previous orders (1) or create a new one (2)"); string Choice2 = Console.ReadLine(); if (Choice2 == "1") { User user = _sql.ReadUser(ReturningName); PrintOrdersOfUser(user); } else if (Choice2 == "2") { User user = _sql.ReadUser(ReturningName); Console.WriteLine("Please type the name of the store you wish to worder from."); PrintAllStoresWithEF(); user.SelectedStore = _sql.SelectStore(); user.SelectedStore.CreateOrder(); user.Orders.Add(user.SelectedStore.Orders.Last()); string UserChoice = null; do { _client.PrintPizzaChoice(); string AddPizza = Console.ReadLine(); switch (AddPizza) { case "1": user.Orders.Last().MakeMeatPizza(); break; case "2": user.Orders.Last().MakeVeggiePizza(); break; case "3": user.Orders.Last().MakeHawaiianPizza(); break; case "4": UserChoice = AddPizza; break; } }while (UserChoice != "4"); string UserChoice2 = null; do { Console.WriteLine("Here is your order and order total. To order, enter 4. To delete a pizza, enter 1 (MeaPizza), 2 (VeggiePizza), 3 (Hawaiian Pizza)"); System.Console.WriteLine(user); System.Console.WriteLine(user.SelectedStore.Orders.Last()); string RemovePizza = Console.ReadLine(); switch (RemovePizza) { case "1": user.Orders.Last().RemoveMeatPizza(); break; case "2": user.Orders.Last().RemoveVeggiePizza(); break; case "3": user.Orders.Last().RemoveHawaiianPizza(); break; case "4": UserChoice2 = RemovePizza; break; } }while (UserChoice2 != "4"); System.Console.WriteLine(user); System.Console.WriteLine(user.SelectedStore.Orders.Last()); _sql.Update(); } } else if (NewOrReturning == "2") { Console.WriteLine("Welcome! Please enter a username"); string name = Console.ReadLine(); User user = _sql.CreateUser(name); Console.WriteLine("Please type the name of the store you wish to worder from"); PrintAllStoresWithEF(); user.SelectedStore = _sql.SelectStore(); user.SelectedStore.CreateOrder(); user.Orders.Add(user.SelectedStore.Orders.Last()); string UserChoice = null; do { _client.PrintPizzaChoice(); string AddPizza = Console.ReadLine(); switch (AddPizza) { case "1": user.Orders.Last().MakeMeatPizza(); break; case "2": user.Orders.Last().MakeVeggiePizza(); break; case "3": user.Orders.Last().MakeHawaiianPizza(); break; case "4": UserChoice = AddPizza; break; } }while (UserChoice != "4"); string UserChoice2 = null; do { Console.WriteLine("Here is your order and order total. To order, enter 4. To delete a pizza, enter 1 (MeaPizza), 2 (VeggiePizza), 3 (Hawaiian Pizza)"); System.Console.WriteLine(user); System.Console.WriteLine(user.SelectedStore.Orders.Last()); string RemovePizza = Console.ReadLine(); switch (RemovePizza) { case "1": user.Orders.Last().RemoveMeatPizza(); break; case "2": user.Orders.Last().RemoveVeggiePizza(); break; case "3": user.Orders.Last().RemoveHawaiianPizza(); break; case "4": UserChoice2 = RemovePizza; break; } }while (UserChoice2 != "4"); System.Console.WriteLine(user); System.Console.WriteLine(user.SelectedStore.Orders.Last()); _sql.Update(); } } }
static void UserView() { PrintAllUsersWithEF(); Console.WriteLine("Please input the name of the user you want."); User user; try { user = _sql.SelectUser(); } catch { Console.WriteLine("That's not a valid user, fool!"); return; } PrintAllStoresWithEF(); Console.WriteLine("Please input the name of the store you want."); try { user.SelectedStore = _sql.SelectStore(); } catch { Console.WriteLine("That's not a valid store, fool!"); return; } Console.WriteLine("Please select the type of pizza you'd like to order."); Console.WriteLine("Basic: $19.99"); Console.WriteLine("Meat Lovers: $29.99"); Console.WriteLine("Vegetarian: $24.99"); Console.WriteLine("Custom: $9.99 before customization"); Console.WriteLine("Or, type 'userorder' to view your own order history."); Console.WriteLine("Or, type 'storeorder' to view the store's order history."); string input = Console.ReadLine().ToUpper(); switch (input) { case "BASIC": Console.WriteLine("You have selected the basic pizza."); user.SelectedStore.CreateOrder(); user.Orders.Add(user.SelectedStore.Orders.Last()); user.Orders.Last().MakePizza("NORMAL", "MEDIUM", "cheese", "pepperoni", "", "", ""); break; case "MEAT LOVERS": Console.WriteLine("You have selected the meat lovers pizza."); user.SelectedStore.CreateOrder(); user.Orders.Add(user.SelectedStore.Orders.Last()); user.Orders.Last().MakePizza("NORMAL", "MEDIUM", "cheese", "pepperoni", "bacon", "ham", ""); break; case "VEGETARIAN": Console.WriteLine("You have selected the vegetarian pizza."); user.SelectedStore.CreateOrder(); user.Orders.Add(user.SelectedStore.Orders.Last()); user.Orders.Last().MakePizza("NORMAL", "MEDIUM", "cheese", "pineapple", "onion", "", ""); break; case "CUSTOM": Console.WriteLine("You have decided to build your own pizza."); Console.WriteLine("Please select a size."); Console.WriteLine("Normal: No price change"); Console.WriteLine("Large: +$5.00"); Console.WriteLine("Small: -$5.00"); string size = Console.ReadLine().ToUpper(); switch (size) { case "NORMAL": Console.WriteLine("You have selected a normal pizza."); break; case "LARGE": Console.WriteLine("You have selected a large pizza."); break; case "SMALL": Console.WriteLine("You have selected a small pizza."); break; default: Console.WriteLine("That's not a valid size, fool!"); return; } Console.WriteLine("Please select a crust."); Console.WriteLine("Normal: No price change"); Console.WriteLine("Cheese: +$5.00"); string crust = Console.ReadLine().ToUpper(); switch (crust) { case "NORMAL": Console.WriteLine("You have selected a normal crust."); break; case "CHEESE": Console.WriteLine("You have selected a cheese crust."); break; default: Console.WriteLine("That's not a valid crust, fool!"); return; } bool exit = false; bool cheese = false; bool pepperoni = false; bool bacon = false; bool ham = false; bool pineapple = false; bool onion = false; int toppingCount = 0; string input2; while (exit == false) { Console.WriteLine("Please select two to five toppings (+$5.00 each)."); if (cheese == false) { Console.WriteLine("Extra Cheese: Off"); } else { Console.WriteLine("Extra Cheese: On"); } if (pepperoni == false) { Console.WriteLine("Pepperoni: Off"); } else { Console.WriteLine("Pepperoni: On"); } if (bacon == false) { Console.WriteLine("Bacon: Off"); } else { Console.WriteLine("Bacon: On"); } if (ham == false) { Console.WriteLine("Ham: Off"); } else { Console.WriteLine("Ham: On"); } if (pineapple == false) { Console.WriteLine("Pineapple: Off"); } else { Console.WriteLine("Pineapple: On"); } if (onion == false) { Console.WriteLine("Onion: Off"); } else { Console.WriteLine("Onion: On"); } if (toppingCount >= 2 && toppingCount <= 5) { Console.WriteLine("Type 'done' to finish."); } input2 = Console.ReadLine().ToUpper(); switch (input2) { case "CHEESE": if (cheese == true) { cheese = false; toppingCount--; } else { cheese = true; toppingCount++; } break; case "EXTRA CHEESE": if (cheese == true) { cheese = false; toppingCount--; } else { cheese = true; toppingCount++; } break; case "PEPPERONI": if (pepperoni == true) { pepperoni = false; toppingCount--; } else { pepperoni = true; toppingCount++; } break; case "BACON": if (bacon == true) { bacon = false; toppingCount--; } else { bacon = true; toppingCount++; } break; case "HAM": if (ham == true) { ham = false; toppingCount--; } else { ham = true; toppingCount++; } break; case "PINEAPPLE": if (pineapple == true) { pineapple = false; toppingCount--; } else { pineapple = true; toppingCount++; } break; case "ONION": if (onion == true) { onion = false; toppingCount--; } else { onion = true; toppingCount++; } break; case "DONE": if (toppingCount >= 2 && toppingCount <= 5) { exit = true; } else { Console.WriteLine("You must have between two and five toppings."); } break; default: Console.WriteLine("That's not a valid topping, fool!"); break; } } user.SelectedStore.CreateOrder(); user.Orders.Add(user.SelectedStore.Orders.Last()); string[] toppings = new string[5]; toppings[0] = ""; toppings[1] = ""; toppings[2] = ""; toppings[3] = ""; toppings[4] = ""; for (int i = 0; i < 5; i++) { if (cheese == true) { toppings[i] = "extra_cheese"; cheese = false; continue; } if (pepperoni == true) { toppings[i] = "pepperoni"; pepperoni = false; continue; } if (bacon == true) { toppings[i] = "bacon"; bacon = false; continue; } if (ham == true) { toppings[i] = "ham"; ham = false; continue; } if (pineapple == true) { toppings[i] = "pineapple"; pineapple = false; continue; } if (onion == true) { toppings[i] = "onion"; onion = false; continue; } } user.Orders.Last().MakePizza(crust, size, toppings[0], toppings[1], toppings[2], toppings[3], toppings[4]); break; case "USERORDER": Console.WriteLine("You have decided to view your own order history."); IEnumerable <Order> myOrders = _sql.ReadAllOrders(); IEnumerable <APizzaModel> myPizzas = _sql.ReadAllPizzas(); List <Order> listOfOrders = new List <Order>(); foreach (var o in myOrders) { if (o.UserEntityId == user.EntityId) { listOfOrders.Add(o); } } foreach (var p in myPizzas) { foreach (var o in listOfOrders) { if (p.OrderEntityId == o.EntityId) { Console.WriteLine(p + ", Price: " + o.Price); } } } break; case "STOREORDER": Console.WriteLine("You have decided to view the store's order history."); myOrders = _sql.ReadAllOrders(); myPizzas = _sql.ReadAllPizzas(); listOfOrders = new List <Order>(); foreach (var o in myOrders) { if (o.StoreEntityId1 == user.SelectedStore.EntityId) { listOfOrders.Add(o); } } foreach (var p in myPizzas) { foreach (var o in listOfOrders) { if (p.OrderEntityId == o.EntityId) { Console.WriteLine(p + ", Price: " + o.Price); } } } break; default: Console.WriteLine("That's not a valid option, fool!"); return; } _sql.Update(); }
private static void CreateAndProcessOrder(User user) // TODO: Thinking about having the list of parts be sent as params { user.SelectedStore.CreateOrder(); user.Orders.Add(user.SelectedStore.Orders.Last()); // last because the above line just created a new order List <Crust> availableCrusts = _sql.GetCrusts().ToList(); List <Size> availableSizes = _sql.GetSizes().ToList(); List <Topping> availableToppings = _sql.GetToppings().ToList(); Order currentOrder = user.Orders.Last(); string submitInput = ""; do { PrintMessage("Available Pizzas:"); PrintAvailablePizzaTypes(); PrintMessage("Enter a type of pizza to add to your order."); string typeInput = Console.ReadLine(); PrintMessage("Enter the size for your pizza"); string sizeInput = Console.ReadLine(); switch (typeInput) { case "Meat": currentOrder.MakeMeatPizza(availableCrusts, availableSizes, availableToppings); break; case "Pineapple": currentOrder.MakePineapplePizza(availableCrusts, availableSizes, availableToppings); break; case "Gumbo": currentOrder.MakeGumboPizza(availableCrusts, availableSizes, availableToppings); break; default: break; } currentOrder.ChangeLastPizzaSize(sizeInput, availableSizes); // Reason for no if - editing a pizza to small and then back to medium //currentOrder.PrintPriceOfLastPizza(); PrintTallyWithMsg("Current Order Total", currentOrder); do { System.Console.WriteLine("What would you like to do?"); System.Console.WriteLine("a) Add another pizza to your order"); if (!currentOrder.CheckIfZeroPizzas()) { System.Console.WriteLine("b) Edit the pizzas in your order"); System.Console.WriteLine("c) Checkout"); } else { System.Console.WriteLine("d) Cancel Order"); } submitInput = Console.ReadLine(); // Edit Pizza Area if (submitInput == "b") { currentOrder.PrintPizzas(); System.Console.WriteLine("Which pizza would you like to edit? (use numbers, starting from 1)"); int.TryParse(Console.ReadLine(), out int pizzaNumInput); pizzaNumInput = pizzaNumInput - 1; var selectedPizza = currentOrder.Pizzas.ElementAtOrDefault(pizzaNumInput); PrintMessage("What do you want to do with this pizza?"); DisplayOptions(new string[] { "a) Change the type of crust", "b) Change the size", "c) Remove it" }); string editOptionInput = Console.ReadLine(); switch (editOptionInput) { case "a": // TODO: Use one common method for this two cases PrintMessage(selectedPizza.ToString() + "'s Current Crust: " + selectedPizza.Crust.ToString()); PrintMessage("What do you want to change the Crust to"); foreach (var c in availableCrusts) { System.Console.WriteLine(c); } string crustChoiceInput = Console.ReadLine(); currentOrder.ChangePizzaCrust(pizzaNumInput, crustChoiceInput, availableCrusts); PrintTallyWithMsg("Updated Order Tally", currentOrder); break; case "b": PrintMessage(selectedPizza.ToString() + "'s Current Size: " + selectedPizza.Size.ToString()); PrintMessage("What do you want to change the Size to?"); foreach (var c in availableSizes) { System.Console.WriteLine(c); } string sizeChoiceInput = Console.ReadLine(); currentOrder.ChangePizzaSize(pizzaNumInput, sizeChoiceInput, availableSizes); PrintTallyWithMsg("Updated Order Tally", currentOrder); break; case "c": currentOrder.RemovePizza(pizzaNumInput); PrintTallyWithMsg("Updated Order Tally", currentOrder); break; default: break; } } } while (submitInput == "b"); } while (submitInput == "a"); if (submitInput == "c") { // Display final tally and associated message PrintTallyWithMsg("Final Order Total", currentOrder); _sql.Update(user.SelectedStore); //System.Console.WriteLine(user); do { System.Console.WriteLine("Thank you for your order. Will that be all?"); DisplayOptions(new string[] { "a) Yes", "b) Show order history", "c) Make another order" }); submitInput = Console.ReadLine(); switch (submitInput) { case "a": PrintMessage($"Thank you for choosing {user.SelectedStore}. Come again!"); break; case "b": _sql.DisplayUserOrderHistory(user); break; case "c": CreateAndProcessOrder(user); break; default: break; } } while (submitInput == "b"); } if (submitInput == "d") { user.SelectedStore.DeleteOrder(currentOrder); PrintMessage("Thank you. Come again!"); } }
static void UserView() { Console.WriteLine("\n\nWelcome to PizzaCo!"); if (u == null) { UserEntry(); } Console.WriteLine("\nHow may we help you today?"); int i = NewOrModify(); if (i == 1) //Create a new order { Console.WriteLine("\nWhat store would you like to order from?"); PrintAllStores(); u.SelectedStore = _sql.SelectStore(); u.SelectedStore.CreateOrder(); Order o = u.SelectedStore.Orders.Last(); u.Orders.Add(o); Payment(u, o); } else if (i == 2 | i == 3) //Modify/delete an old order { Console.WriteLine("\nWhat store was the order placed at?"); PrintAllStores(); u.SelectedStore = _sql.SelectStore(); if (i == 3) //modify { Console.WriteLine("\nWhat order would you like to modify? \n(Orders are displayed oldest to most recent) \n(You cannot modify orders that have already been delivered; they are not on the list)"); u.PrintUndeliveredOrders(); Order o = u.SelectOrder(); o = u.SelectedStore.ModifyOrder(o, u); Payment(u, o); } else //delete { Console.WriteLine("\nWhat order would you like to cancel? \n(Orders are displayed oldest to most recent) \n(You cannot cancel orders that have already been delivered; they are not on the list)"); u.PrintUndeliveredOrders(); Order o = u.SelectOrder(); u.SelectedStore.DeleteOrder(o, u); } } else if (i == 4) //Display all previous orders { u.PrintOrders(); Console.WriteLine("\nWould you also like to make, modify, or cancel an order? (Y/N)"); string s = Console.ReadLine().Trim().ToLower(); if (s == "y" | s == "yes") { UserView(); } while (s != "y" & s != "yes") { if (s == "y" | s == "yes") { UserView(); } else if (s == "n" | s == "no") { break; } else { Console.WriteLine("\nSorry, we didn't catch that. Could you please repeat it?"); s = Console.ReadLine().Trim().ToLower(); } } } else //If the input was invalid { Console.WriteLine("\nSorry, we didn't catch that. Could you please repeat it?"); NewOrModify(); } //Save this operation to the database and ask if the user wants another operation _sql.Update(u.SelectedStore, u); Console.WriteLine("\nThank you for using PizzaCo Online! \nIs there more you would like to do on our site? (Y/N)"); if (YesNo()) { UserView(); } else { Console.WriteLine("\nHave a lovely day!"); } }
static bool UserMakeOrder(User user) { bool addpizzas = true; if (user.OrderTimeLimitCheck()) { Console.WriteLine("Cannot place an order within two hours of another order"); return(false); } PrintAllStoresEF(); var store = _sql.SelectStore(); if (store == null) { Console.WriteLine("That store does not exist"); return(false); } if (!(user.SelectedStore == null)) { if (!user.SelectedStore.Equals(store)) { if (user.StoreChangeCheck()) { Console.WriteLine("Cannot changes stores within 24 hours of another order"); return(false); } } } user.SelectedStore = store; user.SelectedStore.CreateOrder(); user.Orders.Add(user.SelectedStore.Orders.Last()); while (addpizzas) { Console.WriteLine("Choose action (number)"); Console.WriteLine("" + "1. Order Summary\n" + "2. Order CustomPizza\n" + "3. Order MeatPizza\n" + "4. Order BuffaloChickenPizza\n" + "5. Order HawaiianPizza\n" + "6. Order PillyCheeseSteakPizza\n" + "7. Order GlutenFreePizza\n" + "8. Remove a Pizza\n" + "9. Finish Order"); int.TryParse(Console.ReadLine(), out int input); switch (input) { case 1: Console.WriteLine(user.OrderSummmary()); break; case 2: user.Orders.Last().MakeCustomPizza(); user.Orders.Last().LimitCheck(); break; case 3: user.Orders.Last().MakeMeatPizza(); user.Orders.Last().LimitCheck(); break; case 4: user.Orders.Last().MakeBuffaloChickenPizza(); user.Orders.Last().LimitCheck(); break; case 5: user.Orders.Last().MakeHawaiianPizza(); user.Orders.Last().LimitCheck(); break; case 6: user.Orders.Last().MakePillyCheeseSteakPizza(); user.Orders.Last().LimitCheck(); break; case 7: user.Orders.Last().MakeGlutenFreePizza(); user.Orders.Last().LimitCheck(); break; case 8: Console.WriteLine(user.OrderSummmary()); Console.WriteLine("Choose a pizza to remove (number)"); int.TryParse(Console.ReadLine(), out int pizzaSelect); user.Orders.Last().DeletePizza(pizzaSelect - 1); break; case 9: addpizzas = false; break; default: Console.WriteLine("Unknown input try again"); break; } } user.Orders.Last().OrderDate = DateTime.Now; _sql.Update(); Console.WriteLine(user.OrderSummmary()); return(true); }