//ContextStore public Logic.Store ContextStoreToLogicStore(Entities.Store contextStore) { Logic.Store LogicStore = new Logic.Store(); LogicStore.address.street = contextStore.Street; LogicStore.address.city = contextStore.City; LogicStore.address.state = contextStore.State; LogicStore.address.zip = contextStore.Zip; LogicStore.storeInventory.items.NumberofAriel = contextStore.Ariel; LogicStore.storeInventory.items.NumberofDownie = contextStore.Downie; LogicStore.storeInventory.items.NumberofSuavitel = contextStore.Suavitel; LogicStore.storeId = contextStore.StoreId; return(LogicStore); }
public async Task <ActionResult> UpdatedStoreDisplay(Models.UpdateStoreDisPlay viewModel) { try { int sto = 0; if (TempData["StorePicked"] != null) { sto = (int)TempData["StorePicked"]; } var storeInfo = await _repository.GetStoreInformation(sto); Logic.Store updatedStore = new Logic.Store() { address = new Address { city = storeInfo.address.city, street = storeInfo.address.street, state = storeInfo.address.state, zip = storeInfo.address.zip, }, storeInventory = new Inventory { items = new Product { NumberofAriel = viewModel.Ariel, NumberofDownie = viewModel.Downie, NumberofSuavitel = viewModel.Suavitel } } }; await _repository.UpdateStore(sto, updatedStore); return(RedirectToAction("Thankyou")); } catch (Exception ex) { Log.Error(ex.Message); return(View()); } }
/// <summary> /// Get Store Information ///</summary> ///<param name="int storeId"></param> public async Task <Logic.Store> GetStoreInformation(int StoreID) { try { var entityStore = await _context.Store.FirstAsync(s => s.StoreId == StoreID); Logic.Store store = new Logic.Store { storeId = entityStore.StoreId, address = new Address { street = entityStore.Street, city = entityStore.City, state = entityStore.State, zip = entityStore.Zip }, storeInventory = new Inventory { items = new Product { NumberofAriel = entityStore.Ariel, NumberofDownie = entityStore.Downie, NumberofSuavitel = entityStore.Suavitel } } }; return(store); } catch (InvalidOperationException) { throw new InvalidOperationException("Unable to get a store connected to the manager's ID"); } catch (Exception e) { throw new Exception("Something went wrong in getting the store's information: " + e.Message); } }
/// <summary> ///Update Inventory of A Store ///</summary> ///<param name="int storeId"></param> ///<param name="Logic.Store store"></param> public async Task UpdateStore(int storeID, Logic.Store store) { try { //send data from logic to entity var entityStore = await _context.Store.FirstAsync(s => s.StoreId == storeID); entityStore.Street = store.address.street; entityStore.City = store.address.city; entityStore.State = store.address.state; entityStore.Zip = store.address.zip; entityStore.Ariel = store.storeInventory.items.NumberofAriel; entityStore.Downie = store.storeInventory.items.NumberofDownie; entityStore.Suavitel = store.storeInventory.items.NumberofSuavitel; _context.Store.Update(entityStore); await _context.SaveChangesAsync(); } catch { throw new Exception("Failed to retrieve order information for store number: " + storeID); } }
public async Task <ActionResult> MakeAnOrder(Models.CustomerMakeAnOrder order) { try { int StoreId = order.StoreId; string username = null; if (TempData["Username"] != null) { username = TempData["Username"].ToString(); } if (StoreId != 1 && StoreId != 5) { TempData.Keep("Username"); throw new NullReferenceException(); } Logic.Customer cust = await _repository.GetCustomerInformationByUserName(username); Logic.Store store = await _repository.GetStoreInformation(StoreId); Logic.Order ord = new Logic.Order() { customer = new Logic.Customer { customerId = cust.customerId }, storeLocation = new Logic.Store { storeId = store.storeId }, cartItems = new Product { NumberofAriel = order.NumberofAriel, NumberofDownie = order.NumberofDownie, NumberofSuavitel = order.NumberofSuavitel, } }; await _repository.MakeAnOrder(StoreId, ord); return(RedirectToAction(nameof(Thankyou))); } catch (InvalidOperationException ex) { TempData.Keep("Username"); ModelState.AddModelError("", ex.Message); return(View()); } catch (NullReferenceException) { Log.Error("Store Id is Invalid"); ModelState.AddModelError("StoreId", "Invalid Location"); return(View(nameof(MakeAnOrder))); } catch (Exception ex) { TempData.Keep("Username"); ModelState.AddModelError("", ex.Message); return(View()); } }
public static void ManagerMenu(StoreAppContext context, int manager) { Logic.Customer newCust = new Logic.Customer(); GetDataHandler getDBHandler = new GetDataHandler(); InputDBHandler Inputhandler = new InputDBHandler(); Logic.Customer getCustomer = new Logic.Customer(); Logic.Store getStore = new Logic.Store(); Logic.Order order = new Logic.Order(); Logic.Product items = new Logic.Product(); List <Order> orderList = new List <Order>(); bool managerMenu = true; bool nextMenu = false; while (managerMenu) { switch (manager) { /// <summary> /// View Orders History of A Store /// </summary> case 1: Console.WriteLine("Please Choose A Store:"); Console.WriteLine("1. Arlington,TX\n5. Houston,TX\n3. Exit"); int storeId = Int32.Parse(Console.ReadLine()); if (storeId == 3) { Console.WriteLine("Manager's Options:"); Console.WriteLine("1. View Order History Of A Store\n2. Add New Items To Stores\n3. Switch To Customer Menu \n4. Stop"); manager = Int32.Parse(Console.ReadLine()); } nextMenu = true; while (nextMenu) { try { getStore = getDBHandler.GetStoreFromStoreId(storeId, context); Console.WriteLine("Store Address {0}, {1}, {2}, {3}", getStore.address.street, getStore.address.city, getStore.address.state, getStore.address.zip); Console.WriteLine("Ariel: {0}, Downie: {1}, Suavitel: {2}", getStore.storeInventory.items.NumberofAriel, getStore.storeInventory.items.NumberofDownie, getStore.storeInventory.items.NumberofSuavitel); var enityOrder = context.Orders.Where(order => order.StoreId == storeId).ToList(); foreach (var row in enityOrder) { var cust = getDBHandler.GetCustomerDataFromID(row.CustomerId, context); Console.WriteLine("------------------------------------------------------------"); Console.WriteLine("Order Id: {0} \nCustomer Id: {1}", row.OrderId, row.CustomerId); Console.WriteLine("Customer Name: " + cust.firstName + " " + cust.lastName); Console.WriteLine("Ariel: {0}, \nDownie: {1} \nSuavitel: {2}", row.Ariel, row.Downie, row.Suavitel); Console.WriteLine(); } nextMenu = false; Console.WriteLine("Manager's Options:"); Console.WriteLine("1. View Order History Of A Store\n2. Add New Items To Stores\n3. Search User Information By Name \n4. Exit Main Menu \n5.Stop"); manager = Int32.Parse(Console.ReadLine()); } catch (Exception e) { Console.WriteLine("Error finding store with input store"); //error handling Log.Warning("Invalid Store ID"); break; } } break; /// <summary> /// Add new Items /// </summary> case 2: Console.WriteLine("Please Choose A Store:"); Console.WriteLine("1. Arlington,TX\n5. Houston,TX\n3. Exit"); storeId = Int32.Parse(Console.ReadLine()); if (storeId == 3) { Console.WriteLine("Manager's Options:"); Console.WriteLine("1. View Order History Of A Store\n2. Add New Items To Stores\n3. Search User Information By Name \n4. Switch To Customer \n5.Stop"); manager = Int32.Parse(Console.ReadLine()); } try { getStore = getDBHandler.GetStoreFromStoreId(storeId, context); Console.WriteLine("Store Address {0}, {1}, {2}, {3}", getStore.address.street, getStore.address.city, getStore.address.state, getStore.address.zip); Console.WriteLine("Inventory:\nAriel: {0}, Downie: {1}, Suavitel: {2}", getStore.storeInventory.items.NumberofAriel, getStore.storeInventory.items.NumberofDownie, getStore.storeInventory.items.NumberofSuavitel); bool decided = false; int ariel; int downie; int suavitel; while (!decided) { try { Console.WriteLine("Ariel:"); string input = Console.ReadLine(); ariel = Int32.Parse(input); Console.WriteLine("Downie:"); input = Console.ReadLine(); downie = Int32.Parse(input); Console.WriteLine("Suavitels"); input = Console.ReadLine(); suavitel = Int32.Parse(input); Console.WriteLine("You added number of Ariel: {0} || Downie: {1} || Suavitel: {2}", ariel, downie, suavitel); Console.WriteLine("Ready To Add New Item? \n1.Yes 2.No"); string userInput = UserChoiceHandler.UserOptionHandler(Int32.Parse(Console.ReadLine()), 2); if (userInput == "1") { decided = true; Console.WriteLine(". . .\n"); { order = new Logic.Order(); //uses input handler to input order into DB var entityStore = context.Store.FirstOrDefault(i => i.StoreId == storeId); entityStore.Ariel += ariel; entityStore.Downie += downie; entityStore.Suavitel += suavitel; context.Store.Update(entityStore); context.SaveChanges(); try { nextMenu = false; Console.WriteLine("Added New Items Successfully!!!"); } catch (Exception e) { Console.WriteLine("Unable to perform the operation: \n" + e); //error handling Log.Error("Unknown Error"); } } } else if (userInput == "2") { Console.WriteLine("Please Enter The Amount of Items Again!!!"); } else { Console.WriteLine("Invalid input, please type one of the following options."); //error handling Log.Debug("Invalid Input"); } } catch (Exception e) { Console.WriteLine("Error! Please Try It Again"); } } nextMenu = true; break; } catch (Exception e) { Console.WriteLine("Error finding store with input ID" + e.Message); break; } /// <summary> /// Search Customer By Name /// </summary> case 3: Console.WriteLine("Enter First Name or Last Name To Search Information: "); string name = Console.ReadLine(); nextMenu = true; while (nextMenu) { try { getCustomer = getDBHandler.GetCustomerDataByName(name, context); var entityCustomer = context.Customer.FirstOrDefault(cust => cust.LastName == name || cust.FirstName == name); if (getCustomer != null) { Console.WriteLine("------------------------------------------------------------"); Console.WriteLine("Customer Id: {0} \nCustomer username: {1}", getCustomer.customerId, getCustomer.userName); Console.WriteLine("Name: {0} {1}", getCustomer.firstName, getCustomer.lastName); Console.WriteLine("Address"); Console.WriteLine("{0}, {1}, {2}, {3}", getCustomer.customerAddress.street, getCustomer.customerAddress.city, getCustomer.customerAddress.state.ToUpper(), getCustomer.customerAddress.zip); Console.WriteLine(); } if (getCustomer is null) { Console.WriteLine("No Customer Information"); } nextMenu = false; Console.WriteLine("Manager's Options:"); Console.WriteLine("1. View Order History Of A Store\n2. Add New Items To Stores\n3. Search User Information By Name \n4. Switch To Customer Menu \n5.Stop"); manager = Int32.Parse(Console.ReadLine()); } catch (Exception e) { Console.WriteLine("Error! Invalid Input. Please enter name of customer only" + e.Message); break; } } break; case 4: Console.Clear(); //Move To Customer's Menu Console.WriteLine("1. Sign Up \n2. Login \n3. Stop"); string userChoice = Console.ReadLine(); string customerChoice = UserChoiceHandler.UserOptionHandler(Int32.Parse(userChoice), 4); if (userChoice == "3") { Console.Clear(); Console.WriteLine("See You Later"); Environment.Exit(0); } else if (userChoice == "1" || userChoice == "2") { Menu.CustomerMenu(context, Int32.Parse(userChoice)); } else //Invalid input { Console.WriteLine("Invalid input, please type one of the following options"); //error handling Log.Error("Invalid Input"); } break; case 5: Console.WriteLine("Bye"); Environment.Exit(0); break; default: //error handling Log.Error("Invalid Input"); break; } } }
public static void CustomerMenu(StoreAppContext context, int cust) { Logic.Customer newCust = new Logic.Customer(); GetDataHandler getDBHandler = new GetDataHandler(); InputDBHandler Inputhandler = new InputDBHandler(); Logic.Customer getCustomer = new Logic.Customer(); Logic.Store getStore = new Logic.Store(); Logic.Order order = new Logic.Order(); Logic.Product items = new Logic.Product(); List <Order> orderList = new List <Order>(); string username = null; string userInput; bool customerMenu = true; bool nextMenu = false; switch (cust) { /// <summary> /// Sign Up New Account /// </summary> case 1: while (customerMenu) { if (newCust.IsCustomerNotNull() == false) { if (newCust.userName == null) { Console.WriteLine("What is your username"); newCust.userName = Console.ReadLine(); /// <summary> /// Check Username To Make Sure It's not Existing /// </summary> var check = getDBHandler.GetCustomerDataFromUsername(newCust.userName, context); if (check != null) { Console.WriteLine("Username Existing. Choose another one"); newCust.userName = Console.ReadLine(); } } else if (newCust.firstName == null) { Console.WriteLine("What is your first name?"); newCust.firstName = Console.ReadLine(); } else if (newCust.lastName == null) { Console.WriteLine("What is your last name?"); newCust.lastName = Console.ReadLine(); } else if (newCust.customerAddress.IsAddressNotNull() == false) { Console.WriteLine("What is your address?"); newCust.customerAddress.street = Console.ReadLine(); Console.WriteLine("Please enter a city"); newCust.customerAddress.city = Console.ReadLine(); Console.WriteLine("Please enter a state"); newCust.customerAddress.state = Console.ReadLine(); Console.WriteLine("Please enter a zip"); newCust.customerAddress.zip = Console.ReadLine(); } } else { /// <summary> /// Insert New Account Into DB /// </summary> try { Console.WriteLine("1.Yes 2.No"); userInput = UserChoiceHandler.UserOptionHandler(Int32.Parse(Console.ReadLine()), 2); Console.WriteLine("Added New Customer Successfully! Welcome, " + newCust.firstName + " " + newCust.lastName); Inputhandler.AddNewCustomer(newCust, context); Console.WriteLine("Please Login With Your Username To Continue"); CustomerMenu(context, 2); break; } catch (Exception e) { Console.WriteLine("Unknown exception thrown: " + e); } } } nextMenu = true; //resets menu true to go into next menu cust = 2; break; /// <summary> /// Logging Int User Account /// </summary> case 2: while (customerMenu) { Console.WriteLine("What is your username?"); username = Console.ReadLine(); if (getDBHandler.UsernameParser(username, context) == false) { Console.WriteLine("Your UserName is Incorrect. Please Try It Again"); break; } else { try { /// <summary> /// Get Customer Information From Logic.Customer /// </summary> getCustomer = getDBHandler.GetCustomerDataFromUsername(username, context); Console.WriteLine("Welcome " + getCustomer.firstName + " " + getCustomer.lastName); nextMenu = true; } catch (NullReferenceException e) { Console.WriteLine("NULL Error " + username + ": " + e.Message + "\n"); Log.Error("Null Value"); } catch (Exception e) { Console.WriteLine("Unknown exeption " + e); Log.Error("Unknown Error"); } } customerMenu = false; //resets menu true to go into next menu } break; } while (nextMenu) { Console.WriteLine("1. Place order\n2. View your order history\n3. Stop"); userInput = UserChoiceHandler.UserOptionHandler(Int32.Parse(Console.ReadLine()), 3); switch (userInput) { /// <summary> /// Place An Order /// </summary> case "1": Console.WriteLine("What is your favorite store?\n1.Arlington \n5.Houston"); string store = Console.ReadLine(); if (getDBHandler.CheckIDParsable(Int32.Parse(store)) == false) { Console.WriteLine("Please Choice Either 1 or 2"); break; } else //if the input only has numbers in it { int storeId = Int32.Parse(store); /// <summary> /// Display Store Information Retrieved From DB /// </summary> try { getStore = getDBHandler.GetStoreFromStoreId(storeId, context); Console.WriteLine("Store Address {0}, {1}, {2}, {3}", getStore.address.street, getStore.address.city, getStore.address.state, getStore.address.zip); Console.WriteLine("Ariel: {0}, Downie: {1}, Suavitel: {2}", getStore.storeInventory.items.NumberofAriel, getStore.storeInventory.items.NumberofDownie, getStore.storeInventory.items.NumberofSuavitel); bool decided = false; int ariel; int downie; int suavitel; while (!decided) { try { Console.WriteLine("Ariel:"); string input = Console.ReadLine(); ariel = Int32.Parse(input); Console.WriteLine("Downie:"); input = Console.ReadLine(); downie = Int32.Parse(input); Console.WriteLine("Suavitels"); input = Console.ReadLine(); suavitel = Int32.Parse(input); Console.WriteLine("You have an order of Ariel: {0} || Downie: {1} || Suavitel: {2}", ariel, downie, suavitel); Console.WriteLine("1.Yes 2.No"); userInput = UserChoiceHandler.UserOptionHandler(Int32.Parse(Console.ReadLine()), 2); if (userInput == "1") { decided = true; Console.WriteLine(". . .\n"); if (ariel > getStore.storeInventory.items.NumberofAriel || downie > getStore.storeInventory.items.NumberofDownie || suavitel > getStore.storeInventory.items.NumberofSuavitel) { Console.WriteLine("Not Enough--Available: "); Console.WriteLine("Ariel: {0} || Downie: {1} || Suavitel: {2}", getStore.storeInventory.items.NumberofAriel.ToString(), getStore.storeInventory.items.NumberofDownie.ToString(), getStore.storeInventory.items.NumberofSuavitel.ToString()); decided = false; } else { order = new Logic.Order(); //uses input handler to input order into DB var entityStore = context.Store.FirstOrDefault(i => i.StoreId == Int32.Parse(store)); if (entityStore != null) { order.customer = getCustomer; order.cartItems.NumberofAriel = ariel; order.cartItems.NumberofDownie = downie; order.cartItems.NumberofSuavitel = suavitel; order.ordererAddress = getCustomer.customerAddress; order.PlaceOrderTime(); /// <summary> /// Update Products' Quantities /// </summary> entityStore.Ariel -= ariel; entityStore.Downie -= downie; entityStore.Suavitel -= suavitel; order.storeLocation.address = getStore.address; order.storeLocation.storeInventory = getStore.storeInventory; order.storeLocation.storeId = getStore.storeId; } context.Store.Update(entityStore); context.SaveChanges(); try { /// <summary> /// Placed Order Successfully /// </summary> Inputhandler.PlaceOrder(order, context); nextMenu = false; Console.WriteLine("Order successfully created! Thank you for your business!\nReturning back to customer menue"); } catch (Exception e) { Console.WriteLine("Unable to perform the operation: \n" + e); Log.Error("Exception Error"); } } } else if (userInput == "2") { Console.WriteLine("Please make a new order again"); } else { Console.WriteLine("Invalid input, please type one of the following options."); Log.Error("Null Value"); } } catch (Exception e) { Console.WriteLine("Please Enter NUMBER ONLY."); Log.Error("Non Numerical Error"); } } nextMenu = true; break; } catch (Exception e) { Console.WriteLine("Error finding store with input ID: \n"); } } break; /// <summary> /// Display Order History of The customer /// </summary> case "2": var enityOrder = context.Orders.Where(user => user.CustomerId == getCustomer.customerId).ToList(); string storeInfo; foreach (var row in enityOrder) { if (row.StoreId == 1) { storeInfo = "Arlington,TX"; } else { storeInfo = "Houston, TX"; } Console.WriteLine("Your Order Id: {0} Store Location: {1}", row.OrderId, storeInfo); Console.WriteLine("Ariel: {0}, \nDownie: {1} \nSuavitel: {2}", row.Ariel, row.Downie, row.Suavitel); Console.WriteLine(); } break; case "3": Console.Clear(); Console.WriteLine("See You Later"); Environment.Exit(0); break; default: //error handling Log.Error("Invalid Input"); break; } } }
static void Main(string[] args) { /// <summary> /// Entity Framework Logger /// Used To store any runtime error of the app /// </summary> Log.Logger = new LoggerConfiguration().WriteTo.File(@"C:\revature\phat-project0\Project0-Log\Log.txt").CreateLogger(); Log.Information("Begin Program"); bool menu = true; //flag = true; StoreApp.Logic.Customer getCustomer = new Logic.Customer(); StoreApp.Logic.Store getStore = new Logic.Store(); StoreApp.Logic.Order inputOrder = new Logic.Order(); using var context = new StoreAppContext(); Console.WriteLine("Hello Welcome To The ABC's Grocery Store"); string userInput; string userChoice; Console.WriteLine("Are you:\n1. Manager\n2. Customer"); userInput = Console.ReadLine(); /// <summary> /// Try catch handle /// Used to catch non number error inputs /// </summary> try { userChoice = UserChoiceHandler.UserOptionHandler(Int32.Parse(userInput), 2); } catch (FormatException e) { Console.WriteLine(e.Message); Console.WriteLine("Are you:\n1. Manager\n2. Customer"); userChoice = Console.ReadLine(); } if (userChoice == null) { Console.WriteLine("Are you:\n1. Manager\n2. Customer"); userChoice = Console.ReadLine(); } while (menu == true) { if (userChoice == "1") //Manager { string managerID; Console.WriteLine("Enter Your Password (Number Only): "); managerID = Console.ReadLine(); StoreApp.Logic.Manager getManagerInfo = new Logic.Manager(); try { getManagerInfo = getDB.GetManagerDataFromId(Int32.Parse(managerID), context); } catch (FormatException e) { Console.WriteLine(e.Message + " Number ONLY"); menu = false; } if (getManagerInfo is null) { Console.WriteLine("Incorrect Password. Please Try It Again\n"); userChoice = "1"; } else { if (getDB.CheckIDParsable(getManagerInfo.managerID)) { try { Console.WriteLine("Welcome back, " + getManagerInfo.firstName + " " + getManagerInfo.lastName); Console.WriteLine("Manager's Options:"); Console.WriteLine("1. View Order History Of A Store\n2. Add New Items To Stores\n3. Search User Information By Name \n4. Switch To Customer Menu\n5.Stop"); int manOpt = Int32.Parse(Console.ReadLine()); string managerChoice = UserChoiceHandler.UserOptionHandler(manOpt, 5); if (managerChoice == null) { Console.WriteLine("1. View Order History Of A Store\n2. Add New Items To Stores\n3. Search User Information By Name \n4. Switch To Customer Menu \n5.Stop"); manOpt = Int32.Parse(Console.ReadLine()); managerChoice = UserChoiceHandler.UserOptionHandler(manOpt, 5); } if (manOpt == 1 || manOpt == 2 || manOpt == 3) { Menu.ManagerMenu(context, manOpt); } else if (manOpt == 4) { Console.WriteLine("Are you:\n1. Manager\n2. Customer"); userInput = Console.ReadLine(); userChoice = UserChoiceHandler.UserOptionHandler(Int32.Parse(userInput), 2); } else if (manOpt == 5) { Console.Clear(); Console.WriteLine("See You Later. Please Press Any Key To Stop"); menu = false; } } catch (Exception e) { Console.WriteLine("There Is An Error. Please Try It Again " + e.Message); } } } } else if (userChoice == "2") //Customer { //Will run code to make new customer, list of customer info, and place orders Console.WriteLine("1. Sign Up \n2. Login \n3. Exit to start menu \n4. Stop"); userChoice = Console.ReadLine(); try { userInput = UserChoiceHandler.UserOptionHandler(Int32.Parse(userChoice), 4); } catch (FormatException e) { Console.WriteLine(e.Message); Console.WriteLine("1. Sign Up \n2. Login \n3. Exit to start menu \n4. Stop"); userChoice = Console.ReadLine(); } if (userInput == null) { Console.WriteLine("1. Sign Up \n2. Login \n3. Exit to start menu \n4. Stop"); userChoice = Console.ReadLine(); } if (userChoice == "3") { Console.WriteLine("Are you:\n1. Manager\n2. Customer"); userInput = Console.ReadLine(); userChoice = UserChoiceHandler.UserOptionHandler(Int32.Parse(userInput), 2); } else if (userChoice == "4") { Console.Clear(); Console.WriteLine("See You Later. Please Press Any Key To Stop"); menu = false; } else if (userChoice == "1" || userChoice == "2") { Menu.CustomerMenu(context, Int32.Parse(userChoice)); } } } }