public bool DisplaySaveAccountInfo(Salesperson salesperson, out bool maxAttemptsExceeded) { string userResponse; maxAttemptsExceeded = false; ConsoleUtil.HeaderText = "Save Account"; ConsoleUtil.DisplayReset(); ConsoleUtil.DisplayMessage("The current account information."); DisplayAccountDetail(salesperson); ConsoleUtil.DisplayMessage(""); userResponse = ConsoleValidator.GetYesNoFromUser(MAXIMUM_ATTEMPTS, "Save the account information?", out maxAttemptsExceeded); if (maxAttemptsExceeded) { ConsoleUtil.DisplayMessage("It appears you are having difficulty. You will return to the main menu."); return(false); } else { return(userResponse == "YES" ? true : false); } }
/// <summary> /// display the welcome screen /// </summary> public void DisplayWelcomeScreen() { StringBuilder sb = new StringBuilder(); ConsoleUtil.HeaderBackgroundColor = ConsoleColor.DarkGray; ConsoleUtil.HeaderForegroundColor = ConsoleColor.Gray; Console.Clear(); ConsoleUtil.DisplayReset(); ConsoleUtil.DisplayMessage("Written by Shawn Lewin"); ConsoleUtil.DisplayMessage("Northwestern Michigan College"); ConsoleUtil.DisplayMessage(""); sb.Clear(); sb.AppendFormat("You are a traveling salesperson buying and selling fidgets "); sb.AppendFormat("around the country. You will be prompted regarding which city "); sb.AppendFormat("you wish to travel to and will then be asked whether you wish to buy "); sb.AppendFormat("or sell fidgets."); ConsoleUtil.DisplayMessage(sb.ToString()); ConsoleUtil.DisplayMessage(""); sb.Clear(); sb.AppendFormat("Your first task will be to set up your account details."); ConsoleUtil.DisplayMessage(sb.ToString()); DisplayContinuePrompt(); }
/// <summary> /// display the current account information /// </summary> public void DisplayAccountInfo(Salesperson salesperson) { ConsoleUtil.HeaderText = "Account Info"; ConsoleUtil.DisplayReset(); DisplayAccountDetail(salesperson); DisplayContinuePrompt(); }
/// <summary> /// display a closing screen when the user quits the application /// </summary> public void DisplayClosingScreen() { ConsoleUtil.DisplayReset(); ConsoleUtil.DisplayMessage("Thank you for using The Traveling Salesperson Application."); DisplayContinuePrompt(); }
public void DisplayConfirmSaveAccountInfo() { ConsoleUtil.HeaderText = "Save Account"; ConsoleUtil.DisplayReset(); ConsoleUtil.DisplayMessage("Account information saved."); DisplayContinuePrompt(); }
public void DisplayConfirmLoadAccountInfo(Salesperson salesperson) { ConsoleUtil.HeaderText = "Load Account"; ConsoleUtil.DisplayReset(); ConsoleUtil.DisplayMessage("Account information loaded."); DisplayAccountDetail(salesperson); DisplayContinuePrompt(); }
public void DisplayInventory(Product product) { ConsoleUtil.HeaderText = "Current Inventory"; ConsoleUtil.DisplayReset(); ConsoleUtil.DisplayMessage("Product type: " + product.Type.ToString()); ConsoleUtil.DisplayMessage("Number of units: " + product.NumberOfUnits.ToString()); ConsoleUtil.DisplayMessage(""); DisplayContinuePrompt(); }
/// <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> /// load the current account info /// </summary> public void DisplayLoadAccountInfo(string displayMessage) { // // set up the console // ConsoleUtil.HeaderText = "Loading Account Info"; ConsoleUtil.DisplayReset(); ConsoleUtil.DisplayMessage(displayMessage); DisplayContinuePrompt(); }
/// <summary> /// Displays a notification warning about the amount of products being put on backorder /// </summary> /// <param name="product"></param> /// <param name="numberOfUnitsSold"></param> public void DisplayBackorderNotification(Product product) { // // set up the console // ConsoleUtil.HeaderText = "Backorder Notification"; ConsoleUtil.DisplayReset(); ConsoleUtil.DisplayMessage($"{-product.NumberOfUnits} {product.Type.ToString()}s have been put on back order"); DisplayContinuePrompt(); }
/// <summary> /// initialize all console settings /// </summary> private void InitializeConsole() { ConsoleUtil.WindowTitle = "Traveling Car Salesperson"; ConsoleUtil.HeaderText = "The Traveling Car Salesperson Application"; ConsoleUtil.BodyBackgroundColor = ConsoleColor.White; ConsoleUtil.BodyForegroundColor = ConsoleColor.Black; ConsoleUtil.HeaderBackgroundColor = ConsoleColor.Blue; ConsoleUtil.HeaderForegroundColor = ConsoleColor.White; ConsoleUtil.WindowHeight = 30; ConsoleUtil.DisplayReset(); }
/// <summary> /// display the Exit prompt on a clean screen /// </summary> public void DisplayExitPrompt() { ConsoleUtil.DisplayReset(); Console.CursorVisible = false; ConsoleUtil.DisplayMessage(""); ConsoleUtil.DisplayMessage("Thank you for using the application. Press any key to Exit."); Console.ReadKey(); System.Environment.Exit(1); }
/// <summary> /// display a list of the cities traveled /// </summary> public void DisplayCitiesTraveled(Salesperson salesperson) { ConsoleUtil.DisplayReset(); ConsoleUtil.DisplayMessage("You have traveled to the following cities."); ConsoleUtil.DisplayMessage(""); foreach (string city in salesperson.CitiesVisited) { ConsoleUtil.DisplayMessage(city); } DisplayContinuePrompt(); }
public void DisplayBackorderNotification(Product product, int numberOfUnitsSold) { ConsoleUtil.HeaderText = "Inventory Backorder Notification"; ConsoleUtil.DisplayReset(); int numberOfUnitsBackordered = Math.Abs(product.NumberOfUnits); int numberOfUnitsShipped = numberOfUnitsSold - numberOfUnitsBackordered; ConsoleUtil.DisplayMessage("Products Sold: " + numberOfUnitsSold); ConsoleUtil.DisplayMessage("Products Shipped: " + numberOfUnitsShipped); ConsoleUtil.DisplayMessage("Products on Backorder: " + numberOfUnitsBackordered); DisplayContinuePrompt(); }
/// <summary> /// display the current account information /// </summary> public void DisplayAccountInfo(Salesperson salesperson) { // // set up the console // ConsoleUtil.HeaderText = "Account Information"; ConsoleUtil.DisplayReset(); ConsoleUtil.DisplayMessage($"First Name: {ConsoleUtil.UppercaseFirst(salesperson.FirstName)}"); ConsoleUtil.DisplayMessage($"Last Name: {ConsoleUtil.UppercaseFirst(salesperson.LastName)}"); ConsoleUtil.DisplayMessage($"Age: {salesperson.Age}"); ConsoleUtil.DisplayMessage($"Account ID: {salesperson.AccountID}"); ConsoleUtil.DisplayMessage($"Rank: {salesperson.Rank}"); DisplayContinuePrompt(); }
/// <summary> /// display a list of the cities traveled /// </summary> public void DisplayCitiesTraveled(Salesperson salesperson) { // // set up the console // ConsoleUtil.HeaderText = "Cities Traveled"; ConsoleUtil.DisplayReset(); // // go through the list, and display each city // foreach (City city in salesperson.CitiesVisited) { ConsoleUtil.DisplayMessage(city.Name); if (city.Departed()) { ConsoleUtil.DisplayMessage($"Spent {city.DaysSpent()} days"); } if (city.ProductsBought > 0) { ConsoleUtil.DisplayMessage($"Bought {city.ProductsBought} units"); } if (city.ProductsSold > 0) { ConsoleUtil.DisplayMessage($"Sold {city.ProductsSold} units"); } if (city.CompaniesVisited.Count > 0) { ConsoleUtil.DisplayMessage("\nVisited Companies: "); } foreach (string company in city.CompaniesVisited) { ConsoleUtil.DisplayMessage("\t" + company); } Console.WriteLine(); } DisplayContinuePrompt(); }
/// <summary> /// Displays the type, amount, and backorder flag of the product passed as an argument /// </summary> /// <param name="product"></param> public void DisplayInventory(Dictionary <Product.ProductType, Product> products) { // // set up console // ConsoleUtil.HeaderText = "Current Inventory"; ConsoleUtil.DisplayReset(); // // display product // foreach (var product in products) { ConsoleUtil.DisplayMessage($"Product type : {product.Value.Color} {product.Key.ToString()}"); ConsoleUtil.DisplayMessage($"Product model : {product.Value.ModelName} at {product.Value.Price.ToString("C2")}"); ConsoleUtil.DisplayMessage($"Product amount : {product.Value.NumberOfUnits}"); ConsoleUtil.DisplayMessage($"Product is " + (product.Value.OnBackOrder ? "" : "not ") + "on back order"); Console.WriteLine(); } DisplayContinuePrompt(); }
/// <summary> /// get the next city to travel to from the user /// </summary> /// <returns>string City</returns> public string DisplayGetNextCity() { // // initialize variables // string nextCity = ""; // // set up the console // ConsoleUtil.HeaderText = "Input City"; ConsoleUtil.DisplayReset(); // // get user input // ConsoleUtil.DisplayPromptMessage("City:"); nextCity = Console.ReadLine(); DisplayContinuePrompt(); return(nextCity); }
/// <summary> /// Gets a company name from the user /// </summary> /// <param name="product"></param> /// <returns></returns> public string DisplayGetCompanyVisited() { // // initialize variable // string companyName; // // set up the console // ConsoleUtil.HeaderText = "Visiting Company"; ConsoleUtil.DisplayReset(); // // get the company name // ConsoleUtil.DisplayPromptMessage("What company did you visit? "); companyName = Console.ReadLine(); DisplayContinuePrompt(); return(companyName); }
public int DisplayGetNumberOfUnitsToSell(Product product) { ConsoleUtil.HeaderText = "Sell Inventory"; ConsoleUtil.DisplayReset(); ConsoleUtil.DisplayMessage("Selling " + product.Type.ToString() + " products."); ConsoleUtil.DisplayMessage(""); if (!ConsoleValidator.TryGetIntegerFromUser(MINIMUM_BUYSELL_AMOUNT, MAXIMUM_BUYSELL_AMOUNT, MAXIMUM_ATTEMPTS, "products", out int numberOfUnitsToSell)) { ConsoleUtil.DisplayMessage("It appears you are having difficulty setting the number of products to sell."); ConsoleUtil.DisplayMessage("By default, the number of products to sell will be set to zero."); numberOfUnitsToSell = 0; DisplayContinuePrompt(); } ConsoleUtil.DisplayReset(); ConsoleUtil.DisplayMessage(numberOfUnitsToSell + " " + product.Type.ToString() + " products have been subtracted from the inventory."); DisplayContinuePrompt(); return(numberOfUnitsToSell); }
/// <summary> /// display the welcome screen /// </summary> public void DisplayWelcomeScreen() { StringBuilder sb = new StringBuilder(); ConsoleUtil.DisplayReset(); ConsoleUtil.DisplayMessage("Written by Nathaniel Carson"); ConsoleUtil.DisplayMessage("Northwestern Michigan College"); ConsoleUtil.DisplayMessage(""); sb.Clear(); sb.AppendFormat("You are a traveling car salesperson. "); sb.AppendFormat("You travel around the country looking for cars to flip and "); sb.AppendFormat("people to buy them. "); sb.AppendFormat("This application will help facilitate tracking your sales and purchases. "); ConsoleUtil.DisplayMessage(sb.ToString()); ConsoleUtil.DisplayMessage(""); sb.Clear(); sb.AppendFormat("Your first task will be to set up your account details."); ConsoleUtil.DisplayMessage(sb.ToString()); DisplayContinuePrompt(); }
/// <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 enterCancelsOut = false) { 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(); if (enterCancelsOut && userResponse == "") { return(false); } 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(); } ConsoleUtil.DisplayReset(); } else { ConsoleUtil.DisplayMessage(""); } attempts++; } else { maxAttemptsExceeded = true; } } return(validInput); }
/// <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() { // // initialize variables // bool validResponse; int userAge; int productAmount; Product.ProductType productType; Salesperson salesperson = new Salesperson(); // // set up the console // ConsoleUtil.HeaderText = "Account Setup"; ConsoleUtil.DisplayReset(); // // get new account info // ConsoleUtil.DisplayPromptMessage("First name: "); salesperson.FirstName = Console.ReadLine(); Console.WriteLine(""); ConsoleUtil.DisplayPromptMessage("Last name: "); salesperson.LastName = Console.ReadLine(); Console.WriteLine(""); ConsoleUtil.DisplayMessage("Age"); validResponse = ConsoleValidator.TryGetIntegerFromUser(10, 90, MAXIMUM_ATTEMPTS, "years old", out userAge); if (validResponse) { salesperson.Age = userAge; } ConsoleUtil.DisplayPromptMessage("Account ID: "); salesperson.AccountID = Console.ReadLine(); Console.WriteLine(""); // // validate user input // ConsoleUtil.DisplayMessage("Setting up inventory.."); ConsoleUtil.DisplayMessage(""); if (!ConsoleValidator.GetEnumValueFromUser <Product.ProductType>(MAXIMUM_ATTEMPTS, "Body Style:", out productType)) { ConsoleUtil.DisplayMessage("Maximum attempts exceeded, returning to main menu."); } if (!ConsoleValidator.TryGetIntegerFromUser(MINIMUM_BUYSELL_AMOUNT, MAXIMUM_BUYSELL_AMOUNT, MAXIMUM_ATTEMPTS, $"{productType.ToString()}s", out productAmount)) { ConsoleUtil.DisplayMessage("Max attempts exceeded, returning to main menu with default value of 0 vehicles."); } // // set salesman product object // salesperson.CurrentStock[productType].NumberOfUnits = productAmount; salesperson.Rank = Salesperson.Ranks.Beginner; DisplayContinuePrompt(); return(salesperson); }
/// <summary> /// get the menu choice from the user /// </summary> public MenuOption DisplayGetUserMenuChoice() { MenuOption userMenuChoice = MenuOption.None; bool usingMenu = true; while (usingMenu) { // // set up display area // ConsoleUtil.HeaderText = "Main Menu"; ConsoleUtil.DisplayReset(); Console.CursorVisible = false; // // display the menu // ConsoleUtil.DisplayMessage("Please type the number of your menu choice."); ConsoleUtil.DisplayMessage(""); Console.Write( "\t" + "1. Setup Account" + Environment.NewLine + "\t" + "2. Travel" + Environment.NewLine + "\t" + "3. Buy" + Environment.NewLine + "\t" + "4. Sell" + Environment.NewLine + "\t" + "5. Display Inventory" + Environment.NewLine + "\t" + "6. Display Cities" + Environment.NewLine + "\t" + "7. Display Account Info" + Environment.NewLine + "\t" + "8. Edit Account Info" + Environment.NewLine + "\t" + "9. Visit Company" + Environment.NewLine + "\t" + "Q. Save Account Info" + Environment.NewLine + "\t" + "W. Load Account Info" + Environment.NewLine + "\t" + "E. Exit" + Environment.NewLine); // // get and process the user's response // note: ReadKey argument set to "true" disables the echoing of the key press // ConsoleKeyInfo userResponse = Console.ReadKey(true); switch (userResponse.KeyChar) { case '1': userMenuChoice = MenuOption.SetupAccount; usingMenu = false; break; case '2': userMenuChoice = MenuOption.Travel; usingMenu = false; break; case '3': userMenuChoice = MenuOption.Buy; usingMenu = false; break; case '4': userMenuChoice = MenuOption.Sell; usingMenu = false; break; case '5': userMenuChoice = MenuOption.DisplayInventory; usingMenu = false; break; case '6': userMenuChoice = MenuOption.DisplayCities; usingMenu = false; break; case '7': userMenuChoice = MenuOption.DisplayAccountInfo; usingMenu = false; break; case '8': userMenuChoice = MenuOption.EditAccountInfo; usingMenu = false; break; case '9': userMenuChoice = MenuOption.VisitCompany; usingMenu = false; break; case 'q': userMenuChoice = MenuOption.SaveAccountInfo; usingMenu = false; break; case 'w': userMenuChoice = MenuOption.LoadAccountInfo; usingMenu = false; break; case 'E': case 'e': userMenuChoice = MenuOption.Exit; usingMenu = false; break; default: ConsoleUtil.DisplayMessage( "It appears you have selected an incorrect choice." + Environment.NewLine + "Press any key to continue or the E key to quit the application."); userResponse = Console.ReadKey(true); if (userResponse.Key == ConsoleKey.Escape) { usingMenu = false; } break; } } Console.CursorVisible = true; return(userMenuChoice); }
/// <summary> /// Edits the salesperson's account information /// </summary> /// <param name="salesperson"></param> public void DisplayEditAccountInfo(Salesperson salesperson) { bool validResponse = false; int userAge = 0; string userResponse; Salesperson.Ranks rank; // // set up the console // ConsoleUtil.HeaderText = "Account Editing"; ConsoleUtil.DisplayReset(); // // get new account info // ConsoleUtil.DisplayMessage("Just press enter if you wish to skip the current field"); ConsoleUtil.DisplayMessage(""); ConsoleUtil.DisplayMessage($"First Name: {salesperson.FirstName}"); userResponse = Console.ReadLine(); if (userResponse != "") { salesperson.FirstName = userResponse; } Console.WriteLine(""); ConsoleUtil.DisplayMessage($"Last Name: {salesperson.LastName}"); userResponse = Console.ReadLine(); if (userResponse != "") { salesperson.LastName = userResponse; } Console.WriteLine(""); ConsoleUtil.DisplayMessage($"Age: {salesperson.Age}"); validResponse = ConsoleValidator.TryGetIntegerFromUser(10, 90, MAXIMUM_ATTEMPTS, "years old", out userAge, true); if (validResponse) { salesperson.Age = userAge; } ConsoleUtil.DisplayMessage($"Account ID: {salesperson.AccountID}"); if (userResponse != "") { salesperson.AccountID = userResponse; } Console.WriteLine(""); ConsoleUtil.DisplayMessage($"Rank: {salesperson.Rank}"); if (ConsoleValidator.GetEnumValueFromUser <Salesperson.Ranks>(MAXIMUM_ATTEMPTS, "Rank:", out rank, true)) { salesperson.Rank = rank; } DisplayContinuePrompt(); }
/// <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.DisplayPromptMessage("Product Types: "); ConsoleUtil.DisplayMessage(""); foreach (string productTypeName in Enum.GetNames(typeof(ProductType))) { if (productTypeName != ProductType.None.ToString()) { ConsoleUtil.DisplayMessage(productTypeName); } } ConsoleUtil.DisplayMessage(""); ConsoleUtil.DisplayPromptMessage("Enter the product type: "); ProductType productType; if (Enum.TryParse <ProductType>(UppercaseFirst(Console.ReadLine()), out productType)) { salesperson.CurrentStock.Type = productType; } else { salesperson.CurrentStock.Type = ProductType.None; } if (ConsoleValidator.TryGetIntegerFromUser(0, 100, 3, "products", out int numberOfUnits)) { salesperson.CurrentStock.AddProducts(numberOfUnits); } else { ConsoleUtil.DisplayMessage("It appears you are having difficulty setting the number of products in your stock."); ConsoleUtil.DisplayMessage("By default, the number of products in your inventory are now set to zero."); salesperson.CurrentStock.AddProducts(0); DisplayContinuePrompt(); } ConsoleUtil.DisplayReset(); ConsoleUtil.DisplayMessage("Your account is setup"); DisplayContinuePrompt(); return(salesperson); }