static void Main(string [] args) { var product = string.Empty; var productStockRepository = new ProductStockRepository(); //var orderManager = new OrderManager // ( // productStockRepository, // new PaymentProcessor(), // new ShippingProcessor(productStockRepository) // ); var orderManager = Container.GetService <IOrderManager>(); while (product != "exit") { Console.WriteLine(@"Enter a Product: Keyboard = 0, Mouse = 1, Mic = 2, Speaker = 3 "); product = Console.ReadLine(); try { if (Enum.TryParse(product, out Product productEnum)) { Console.WriteLine("Please enter a valid payment method: XXXXXXXXXXXXXXXXXXXX;MMYY"); var paymentMethod = Console.ReadLine(); if (string.IsNullOrEmpty(paymentMethod) || paymentMethod.Split(";").Length != 2) { throw new Exception("Invalid Payment Method"); } orderManager.Submit(productEnum, paymentMethod.Split(";")[0], paymentMethod.Split(";")[1]); Console.WriteLine($"{productEnum.ToString()} has been shipped"); } else { Console.WriteLine("Invalid Product"); } } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.WriteLine(Environment.NewLine); } }
static void Main(string[] args) { var product = string.Empty; var productStockRepository = new ProductStockRepository(); var orderManager = Container.GetService <IOrderManager>(); while (product != "exit") { Console.WriteLine(@"Enter a Product: Keyboard = 0, Mouse = 1, Mic = 2, Speaker = 3" ); product = Console.ReadLine(); try { if (Enum.TryParse(product, out Product productEnum)) { Console.WriteLine("Please enter a valid payment method: XXXXXXXXXXXXXXXX;MMYY"); var paymentMethod = Console.ReadLine(); if (string.IsNullOrEmpty(paymentMethod) || paymentMethod.Split(";").Length != 2) { throw new Exception("Invalid Payment Method"); } string creditCardNumber = paymentMethod.Split(";")[0]; string expiryDate = paymentMethod.Split(";")[1]; orderManager.Submit(productEnum, creditCardNumber, expiryDate); Console.WriteLine("DONE"); } else { Console.WriteLine("Invalid Product"); } } catch (Exception e) { Console.WriteLine(e.Message); } Console.WriteLine(Environment.NewLine); } }