public void StartStore() { Console.ForegroundColor = ConsoleColor.White; UIDrawer homeDrawer = new UIDrawer(Console.WindowWidth - 4); homeDrawer.DrawHomeMenu(); while (true) { this.userInterface.ProcessInput(); } }
public static void Main() { Console.WindowWidth = 120; IUserInterface keyboard = new KeyboardInterface(); UIDrawer drawer = new UIDrawer(Console.WindowWidth - 4); Store myStore = new Store(keyboard); // Show home menu keyboard.OnHPressed += (sender, eventInfo) => { Console.Clear(); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine(drawer.DrawHomeMenu()); }; // Show store content of storage keyboard.OnActionPressed += (sender, eventInfo) => { Console.Clear(); Console.ForegroundColor = ConsoleColor.White; drawer.DrawBoxWithText("Storage content:"); Console.WriteLine(myStore.Show()); }; // Remove menu keyboard.OnRPressed += (sender, eventInfo) => { Console.ForegroundColor = ConsoleColor.White; // name input and validation drawer.DrawSingleLine(); Console.WriteLine("Enter 1 to remove a Movie"); Console.WriteLine("Enter 2 to remove a Game"); drawer.DrawSingleLine(); int productTypeChoice = 0; // choise validation while (!int.TryParse(Console.ReadLine(), out productTypeChoice) || (productTypeChoice != 1 && productTypeChoice != 2)) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Invalid input! Try again!"); drawer.ColorReset(); } if (productTypeChoice == 1) { // removeing opertaion try { drawer.DrawSingleLine(); Console.WriteLine("Enter 1 to remove 1 movie."); Console.WriteLine("Enter 2 to remove all stock for the current game."); drawer.DrawSingleLine(); // TODO: Make validation int methodChoise = 0; while (!int.TryParse(Console.ReadLine(), out methodChoise) || (methodChoise != 1 && methodChoise != 2)) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Invalid input! Try again!"); drawer.ColorReset(); } // main logic if (methodChoise == 1) { drawer.DrawBoxWithText("Enter Movie Name"); string name = Console.ReadLine(); // id input and validation drawer.DrawBoxWithText("Enter Movie ID"); int id = 0; while (!int.TryParse(Console.ReadLine(), out id)) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Incorect ID! Try again!"); drawer.ColorReset(); } myStore.RemoveObject(new Movie(name, id)); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Movie removed"); drawer.ColorReset(); } else if (methodChoise == 2) { drawer.DrawBoxWithText("Enter Movie Name"); string name = Console.ReadLine(); // id input and validation drawer.DrawBoxWithText("Enter Movie ID"); int id = 0; while (!int.TryParse(Console.ReadLine(), out id)) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Incorect ID! Try again!"); drawer.ColorReset(); } myStore.RemoveAll(new Movie(name, id)); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Movies removed"); drawer.ColorReset(); } else { Console.WriteLine("Wrong input! Try again!"); } } catch (ArgumentException ex) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine(ex.Message); } } else if (productTypeChoice == 2) { // removeing opertaion try { drawer.DrawSingleLine(); Console.WriteLine("Enter 1 to remove 1 game."); Console.WriteLine("Enter 2 to remove all stock for the current game."); drawer.DrawSingleLine(); var choise = int.Parse(Console.ReadLine()); if (choise == 1) { drawer.DrawBoxWithText("Enter Game Name"); string name = Console.ReadLine(); // id input and validation drawer.DrawBoxWithText("Enter Game ID"); int id = 0; while (!int.TryParse(Console.ReadLine(), out id)) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Incorect ID! Try again!"); Console.ForegroundColor = ConsoleColor.White; } myStore.RemoveObject(new Game(name, id)); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Game removed"); } else if (choise == 2) { drawer.DrawBoxWithText("Enter Game Name"); string name = Console.ReadLine(); // id input and validation drawer.DrawBoxWithText("Enter Game ID"); int id = 0; while (!int.TryParse(Console.ReadLine(), out id)) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Incorect ID! Try again!"); Console.ForegroundColor = ConsoleColor.White; } myStore.RemoveObject(new Game(name, id)); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Game removed"); myStore.RemoveAll(new Game(name, id)); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Product removed"); } else { Console.WriteLine("Wrong input! Try again!"); } } catch (NoProductsException ex) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine(ex.Message); } } else { Console.WriteLine("Wrong input! Try again!"); } }; // Add a product menu keyboard.OnAPressed += (sender, eventInfo) => { drawer.ColorReset(); drawer.DrawBoxWithText("Enter Product Name"); string name = Console.ReadLine(); string choise = string.Empty; Console.WriteLine("Enter | 1 | for Game."); Console.WriteLine("Press | 2 | for Movie"); int productTypeChoice = 0; // choise validation while (!int.TryParse(Console.ReadLine(), out productTypeChoice) || (productTypeChoice != 1 && productTypeChoice != 2)) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Invalid input! Try again!"); drawer.ColorReset(); } if (productTypeChoice == 1) { try { Console.WriteLine("If you want to Add additional information about this Movie Enter Y:"); choise = Console.ReadLine().ToLower(); if (choise != "y") { myStore.AddObject(new Game(name)); } else if (choise == "y") { int id = 0, year = 0; decimal price = 0; Console.Write("ID: "); // Validation while (!int.TryParse(Console.ReadLine(), out id)) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Incorect ID! Try again!"); Console.ForegroundColor = ConsoleColor.White; } Console.Write("Price: "); // Validation while (!decimal.TryParse(Console.ReadLine(), out price)) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Invalid price! Try again!"); Console.ForegroundColor = ConsoleColor.White; } Console.Write("Creator: "); string creator = Console.ReadLine(); Console.Write("Platform: "); string platform = Console.ReadLine(); Console.Write("Year: "); // Validation while (!int.TryParse(Console.ReadLine(), out year)) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Invalid Year! Try again!"); Console.ForegroundColor = ConsoleColor.White; } myStore.AddObject(new Game(name, id, price, creator, year, platform)); } else { myStore.AddObject(new Game(name)); } Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Product Added"); } catch (ArgumentException e) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Ivalid prdouct argumet! Try again! {0}", e.Message); drawer.ColorReset(); } } else { Console.Write("If you want to Add additional information about this Movie enter Y "); choise = Console.ReadLine().ToLower(); try { if (choise == "y") { int id = 0, year = 0, movieLength = 0; decimal price = 0; Console.Write("ID: "); // Validation while (!int.TryParse(Console.ReadLine(), out id)) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Incorect ID! Try again!"); Console.ForegroundColor = ConsoleColor.White; } Console.Write("Price: "); // Validation while (!decimal.TryParse(Console.ReadLine(), out price)) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Invalid price! Try again!"); Console.ForegroundColor = ConsoleColor.White; } Console.Write("Movie length: "); while (!int.TryParse(Console.ReadLine(), out movieLength)) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Invalid movie length! Try again!"); Console.ForegroundColor = ConsoleColor.White; } Console.Write("Actor: "); string actor = Console.ReadLine(); Console.Write("Year: "); while (!int.TryParse(Console.ReadLine(), out year)) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Incorect year! Try again!"); Console.ForegroundColor = ConsoleColor.White; } } else { myStore.AddObject(new Movie(name)); } Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Product Added"); } catch (ArgumentException e) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Ivalid prdouct argumet! Try again! {0}", e.Message); drawer.ColorReset(); } } }; // Search keyboard.OnSPressed += (sender, eventInfo) => { drawer.ColorReset(); drawer.DrawSingleLine(); Console.WriteLine("For search by ID press | 1 |"); Console.WriteLine("For search by Name press | 2 |"); drawer.DrawSingleLine(); // validation int searchChoice = 0; while (!int.TryParse(Console.ReadLine(), out searchChoice) || (searchChoice != 1 && searchChoice != 2)) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Invalid input! Try again!"); drawer.ColorReset(); } if (searchChoice == 1) { drawer.DrawBoxWithText("Enter a ID"); int id = 0; while (!int.TryParse(Console.ReadLine(), out id)) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Incorect ID! Try again!"); Console.ForegroundColor = ConsoleColor.White; } } else { drawer.DrawBoxWithText("Enter a Name"); string name = Console.ReadLine(); myStore.SearchByName(name); } }; // Show cash register content keyboard.OnCPressed += (sender, eventInfo) => { Console.Clear(); Console.ForegroundColor = ConsoleColor.Cyan; drawer.DrawBoxWithText("Cash register content"); Console.WriteLine(myStore.ShowCashRegister()); drawer.ColorReset(); }; // Add cash form reg keyboard.OnPlusPressed += (sender, eventInfo) => { drawer.DrawBoxWithText("Adding money to registry."); Console.WriteLine("Enter sum"); decimal sum = decimal.Parse(Console.ReadLine()); myStore.AddMoneyToCashReg(sum); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Money added!"); drawer.ColorReset(); }; keyboard.OnMinusPressed += (sender, eventInfo) => { drawer.DrawBoxWithText("Substarcting money to registry."); Console.WriteLine("Enter sum"); decimal sum = decimal.Parse(Console.ReadLine()); myStore.RemoveMoneyFromCashReg(sum); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Money substracted!"); drawer.ColorReset(); }; // start the store myStore.StartStore(); }