/// <summary> /// Get type of product from user. Checks if product already exist in invetory /// </summary> /// <param name="salesperson"></param> /// <param name="notInStock"></param> /// <returns></returns> public Product.ProductType GetTypeOfProduct(Salesperson salesperson, string buyOrSell, out bool inStock) { Product.ProductType productType; inStock = false; ConsoleUtil.DisplayPromptMessage("Enter the type of product you wish to " + buyOrSell + ":"); // new variable for product type if (Enum.TryParse <Product.ProductType>(UppercaseFirst(Console.ReadLine()), out productType)) { foreach (Product product in salesperson.CurrentStock) { if (product.Type == productType) { inStock = true; } } } else { // sets type of current stock to "none" product type ConsoleUtil.DisplayMessage("It appears you are having difficulty selecting a product."); ConsoleUtil.DisplayMessage("By default, no items will be added."); productType = Product.ProductType.None; DisplayContinuePrompt(); } return(productType); }
/// <summary> /// setup the new salesperson object with the initial data /// Note: To maintain the pattern of only the Controller changing the data this method should /// return a Salesperson object with the initial data to the controller. For simplicity in /// this demo, the ConsoleView object is allowed to access the Salesperson object's properties. /// </summary> public Salesperson DisplaySetupAccount() { Salesperson salesperson = new Salesperson(); ConsoleUtil.HeaderText = "Account Setup"; ConsoleUtil.DisplayReset(); ConsoleUtil.DisplayMessage("Setup your account now."); ConsoleUtil.DisplayMessage(""); ConsoleUtil.DisplayPromptMessage("Enter your first name: "); salesperson.FirstName = Console.ReadLine(); ConsoleUtil.DisplayMessage(""); ConsoleUtil.DisplayPromptMessage("Enter your last name: "); salesperson.LastName = Console.ReadLine(); ConsoleUtil.DisplayMessage(""); ConsoleUtil.DisplayPromptMessage("Enter your account ID: "); salesperson.AccountID = Console.ReadLine(); ConsoleUtil.DisplayMessage(""); ConsoleUtil.DisplayMessage(""); ConsoleUtil.DisplayReset(); ConsoleUtil.DisplayMessage("Your account is setup"); DisplayContinuePrompt(); return(salesperson); }
/// <summary> /// setup the new salesperson object with the initial data /// </summary> public Salesperson DisplaySetupAccount(out City city) { // instantiate a new salesperson object Salesperson salesperson = new Salesperson(); // instantiayte a new city object city = new City(); city.SalesInfo = new List <Product>(); ConsoleUtil.HeaderText = "Account Setup"; ConsoleUtil.DisplayReset(); ConsoleUtil.DisplayMessage("Setup your account now."); ConsoleUtil.DisplayMessage(""); ConsoleUtil.DisplayPromptMessage("Enter your first name: "); salesperson.FirstName = Console.ReadLine(); ConsoleUtil.DisplayMessage(""); ConsoleUtil.DisplayPromptMessage("Enter your last name: "); salesperson.LastName = Console.ReadLine(); ConsoleUtil.DisplayMessage(""); ConsoleUtil.DisplayPromptMessage("Enter your account ID: "); salesperson.AccountID = Console.ReadLine(); ConsoleUtil.DisplayMessage(""); ConsoleUtil.DisplayPromptMessage("Enter your starting city: "); city.CityName = Console.ReadLine(); // get products from user DisplayAvailableProducts(); ConsoleUtil.DisplayMessage(""); salesperson.CurrentStock = DisplayGetProducts(salesperson); foreach (Product item in salesperson.CurrentStock) { city.SalesInfo.Add(new Product(item.Type, item.NumberOfUnits, 0)); } // add city object to salesperson salesperson.CitiesVisited.Add(city); ConsoleUtil.DisplayMessage("Your account is setup"); ConsoleUtil.DisplayMessage(""); // display account details to user DisplayAccountDetail(salesperson); ConsoleUtil.DisplayMessage("Starting city: " + city.CityName); ConsoleUtil.DisplayMessage("Your current inventory:"); ConsoleUtil.DisplayMessage(""); CurrentInventory(salesperson); DisplayContinuePrompt(); return(salesperson); }
/// <summary> /// get the next city to travel to from the user /// </summary> /// <returns>string City</returns> public string DisplayGetNextCity() { string nextCity = ""; ConsoleUtil.DisplayReset(); ConsoleUtil.DisplayPromptMessage("Enter the name of the next city:"); nextCity = Console.ReadLine(); return(nextCity); }
/// <summary> /// helper method to get a valid string response from the user /// based on John Velis' GetYesNoFromUser method /// </summary> /// <param name="maxAttempts">maximum number of attempts</param> /// <param name="userPrompt">user prompt</param> /// <param name="maxAttemptsExceeded">indicates whether maximum number of attempts has been reached</param> /// <returns></returns> public static string TestForEmpty(int maxAttempts, string userPrompt, out bool maxAttemptsExceeded) { bool validInput = false; maxAttemptsExceeded = false; string userResponse = ""; int attempts = 1; while (!validInput && !maxAttemptsExceeded) { //Console.Write(userPrompt); ConsoleUtil.DisplayPromptMessage(userPrompt); userResponse = Console.ReadLine(); ConsoleUtil.DisplayMessage(""); // // input is valid // if (!string.IsNullOrEmpty(userResponse)) { validInput = true; } // // input is invalid, but more attempts available // else { // // more attempts available // if (attempts < maxAttempts) { ConsoleUtil.DisplayMessage("Please enter a non-empty value."); ConsoleUtil.DisplayMessage("Press any key to try again."); } // // all attempts used // else { ConsoleUtil.DisplayMessage("It appears you have exceeded the maximum number of attempts allowed."); ConsoleUtil.DisplayMessage("Press any key to continue."); maxAttemptsExceeded = true; } Console.ReadKey(); Console.Clear(); } attempts++; } return(userResponse); }
/// <summary> /// get the next city to travel to from the user /// </summary> /// <returns>string nextCity</returns> public string DisplayGetNextCity(Salesperson salesperson) { string nextCity = ""; ConsoleUtil.HeaderText = "Travel"; ConsoleUtil.DisplayReset(); ConsoleUtil.DisplayPromptMessage("Where would you like to travel to?"); salesperson.CitiesVisited.Add(Console.ReadLine()); return(nextCity); }
/// <summary> /// helper method to get a valid decimal response from the user /// based on John Velis's GetYesNoFromUser method /// </summary> /// <param name="maxAttempts">maximum number of attempts</param> /// <param name="userPrompt">user prompt</param> /// <param name="maxAttemptsExceeded">indicates whether maximum number of attempts has been reached</param> /// <returns>double</returns> public static double TestForDouble(int maxAttempts, string userPrompt, out bool maxAttemptsExceeded) { bool validInput = false; maxAttemptsExceeded = false; double dub = 0.00; string userResponse; int attempts = 1; while (!validInput && !maxAttemptsExceeded) { ConsoleUtil.DisplayPromptMessage(userPrompt); userResponse = Console.ReadLine(); ConsoleUtil.DisplayMessage(""); // // input is valid // if (double.TryParse(userResponse, out dub)) { validInput = true; } else { // // more attempts available // if (attempts < maxAttempts) { ConsoleUtil.DisplayMessage("Please enter a monetary value without a currency symbol"); ConsoleUtil.DisplayMessage("Press any key to try again."); } // // all attempts used // else { ConsoleUtil.DisplayMessage("It appears you have exceeded the maximum number of attempts allowed."); ConsoleUtil.DisplayMessage("Press any key to continue."); maxAttemptsExceeded = true; } Console.ReadKey(); Console.Clear(); } attempts++; } return(dub); }
/// <summary> /// setup the new salesperson object with the initial data /// Note: To maintain the pattern of only the Controller changing the data this method should /// return a Salesperson object with the initial data to the controller. For simplicity in /// this demo, the ConsoleView object is allowed to access the Salesperson object's properties. /// </summary> public Salesperson DisplaySetupAccount() { Salesperson salesperson = new Salesperson(); ConsoleUtil.HeaderText = "Account Setup"; ConsoleUtil.DisplayReset(); ConsoleUtil.DisplayPromptMessage("First Name:"); salesperson.FirstName = Console.ReadLine(); ConsoleUtil.DisplayPromptMessage("Last Name:", 2); salesperson.LastName = Console.ReadLine(); ConsoleUtil.DisplayPromptMessage("Account ID:"); salesperson.AccountID = Console.ReadLine(); ConsoleUtil.DisplayPromptMessage("City: "); salesperson.CitiesVisited.Add(Console.ReadLine()); return(salesperson); }
/// <summary> /// method displays menu system that allow the user to update account info of their choosing /// </summary> /// <param name="salesperson"></param> /// <returns></returns> public Salesperson DisplayUpdateAccount(Salesperson salesperson) { bool usingMenu = true; ConsoleUtil.HeaderText = "Update Account"; ConsoleUtil.DisplayReset(); while (usingMenu) { // display account details to user DisplayAccountDetail(salesperson); ConsoleUtil.DisplayMessage(""); ConsoleUtil.DisplayMessage("Type the number for which info you wish to update: "); ConsoleUtil.DisplayMessage(""); Console.Write( "\t" + "1. First Name" + Environment.NewLine + "\t" + "2. Last Name" + Environment.NewLine + "\t" + "3. Account ID" + Environment.NewLine + "\t" + "E. Main Menu" + Environment.NewLine); // // get and process the user's response ConsoleKeyInfo userResponse = Console.ReadKey(true); switch (userResponse.KeyChar) { case '1': ConsoleUtil.DisplayReset(); ConsoleUtil.DisplayMessage(""); ConsoleUtil.DisplayPromptMessage("Update your first name:"); salesperson.FirstName = Console.ReadLine(); ConsoleUtil.DisplayReset(); break; case '2': ConsoleUtil.DisplayReset(); ConsoleUtil.DisplayMessage(""); ConsoleUtil.DisplayPromptMessage("Update your last name:"); salesperson.LastName = Console.ReadLine(); ConsoleUtil.DisplayReset(); break; case '3': ConsoleUtil.DisplayReset(); ConsoleUtil.DisplayMessage(""); ConsoleUtil.DisplayPromptMessage("Update your account ID name:"); salesperson.AccountID = Console.ReadLine(); ConsoleUtil.DisplayReset(); break; case 'E': case 'e': usingMenu = false; break; default: ConsoleUtil.DisplayMessage( "It appears you have selected an incorrect choice." + Environment.NewLine + "Press any key to return to continue"); userResponse = Console.ReadKey(true); break; } } DisplayContinuePrompt(); return(salesperson); }
/// <summary> /// helper method to get a valid integer from the user within a range /// </summary> /// <param name="minValue">inclusive minimum value</param> /// <param name="maxValue">inclusive maximum value</param> /// <param name="maxAttempts">maximum number of attempts</param> /// <param name="pluralName">plural name of item</param> /// <param name="validInput">indicates valid user input</param> /// <returns></returns> public static bool TryGetIntegerFromUser(int minValue, int maxValue, int maxAttempts, string pluralName, out int userInteger) { bool validInput = false; bool maxAttemptsExceeded = false; string userResponse; string feedbackMessage = ""; int attempts = 1; userInteger = 0; while (!validInput && !maxAttemptsExceeded) { // // more attempts available // if (attempts <= maxAttempts) { ConsoleUtil.DisplayPromptMessage($"Enter the number, between {minValue} and {maxValue}, of {pluralName}:"); userResponse = Console.ReadLine(); ConsoleUtil.DisplayMessage(""); // // input is an Integer // if (int.TryParse(userResponse, out userInteger)) { // // input is in range // if (userInteger >= minValue && userInteger <= maxValue) { validInput = true; } // // input is not in range // else { feedbackMessage = $"The number {userInteger} is not in the specified range."; } } // // input is not an Integer // else { feedbackMessage = $"{userResponse} is not an integer."; } if (!validInput && attempts <= maxAttempts) { ConsoleUtil.DisplayMessage($"You entered: {userResponse}"); ConsoleUtil.DisplayMessage(feedbackMessage); if (attempts < maxAttempts) { ConsoleUtil.DisplayMessage($"Please enter an integer between {minValue} and {maxValue}."); ConsoleUtil.DisplayMessage("Press any key to try again."); Console.ReadKey(); } else { ConsoleUtil.DisplayMessage("It appears you have exceeded the maximum number of attempts allowed."); ConsoleUtil.DisplayMessage("Press any key to continue."); Console.ReadKey(); } Console.Clear(); } else { ConsoleUtil.DisplayMessage(""); } attempts++; } else { maxAttemptsExceeded = true; } } return(validInput); }