public static NewOrderResponse NewOrder(DateTime dateTime, string state, string productType) { NewOrderResponse response = new NewOrderResponse(); IFileOrderRepo orderRepo = new FileOrderRepo(dateTime.Day.ToString() + dateTime.Month.ToString() + dateTime.Year.ToString()); List <Taxes> taxes = FileTaxRepo.LoadTaxes(); List <Products> products = FileProductsRepo.LoadProducts(); if (dateTime <= DateTime.Now) { response.Success = false; response.Message = "Error: New Orders must be set in the future"; return(response); } bool stateVerification = taxes.Any(t => state.Contains(t.StateAbbreviation)); if (stateVerification == false) { response.Success = false; response.Message = "Error: We do not sell in inputed state"; return(response); } bool productVerification = products.Any(p => productType.Contains(p.ProductsType)); if (productVerification == false) { response.Success = false; response.Message = "Error: Input for products was invalid"; return(response); } else { response.Success = true; response.OrderNumber = orderRepo.NextOrderNumber(); response.Date = dateTime; response.StringDate = dateTime.ToString(); response.State = state; response.Tax = taxes.FirstOrDefault(t => t.StateAbbreviation == response.State).TaxRate; response.Product = productType; response.CostPerSquareFoot = products.FirstOrDefault(p => p.ProductsType == response.Product).CostPerSquareFoot; response.LaborCostPerSquareFoot = products.FirstOrDefault(p => p.ProductsType == response.Product).LaborCostPerSquareFoot; return(response); } }
public void Execute() { Console.Clear(); IFileOrderRepo fileOrderRepo; Orders newOrder = new Orders(); Products products = new Products(); Console.WriteLine("New Order Form"); Console.WriteLine("----------------------"); Console.WriteLine("Enter a date (New orders must be set in future dates): "); var userInput = Console.ReadLine(); var path = ConsoleIO.UserDateValidateToString(userInput); var userDate = ConsoleIO.UserDateToDateTime(userInput); newOrder.CustomerName = ConsoleIO.ValidateCompanyName("Enter company name: "); ConsoleIO.DisplayStateAbbreviation(FileTaxRepo.LoadTaxes()); newOrder.State = ConsoleIO.ValidateStateFormat("Enter a State: (States must be abbreviated)"); Console.WriteLine("Select A Product: "); ConsoleIO.DisplayProducts(FileProductsRepo.LoadProducts()); newOrder.ProductType = Console.ReadLine(); newOrder.Area = ConsoleIO.ValidateAreaFormat("What's the Area? (Must be minimum of 100 square feet): "); NewOrderResponse response = new NewOrderResponse(); response = NewOrderRules.NewOrder(userDate, newOrder.State, newOrder.ProductType); if (response.Success == false) { Console.WriteLine(response.Message); Console.ReadKey(); } else { newOrder.TaxRate = response.Tax; newOrder.CostPerSquareFoot = response.CostPerSquareFoot; newOrder.LaborCostPerSquareFoot = response.LaborCostPerSquareFoot; newOrder.OrderNumber = response.OrderNumber; Console.Clear(); Console.WriteLine("Summary"); Console.WriteLine("-------------------------------------------------------------"); ConsoleIO.DisplayOrderDetails(new List <Orders> { newOrder }, path); if (ConsoleIO.Exit("Do you want to SAVE new order? [Y/N]") == false) { return; } else { fileOrderRepo = new FileOrderRepo(path); if (!File.Exists(path)) { File.Create(path).Dispose(); fileOrderRepo.Create(newOrder); } else { fileOrderRepo.Create(newOrder); } } Console.WriteLine("Press any key to continue..."); Console.ReadKey(); } }
public void Execute() { Console.Clear(); IFileOrderRepo fileOrderRepo; Orders newOrder = new Orders(); Console.WriteLine("Edit Order Form"); Console.WriteLine("--------------------------"); Console.WriteLine("Enter a date: "); string userInputDate = Console.ReadLine(); if (string.IsNullOrEmpty(userInputDate)) { Console.WriteLine("Error: User input was invalid...Hit any key to return to menu..."); Console.ReadKey(); return; } var path = ConsoleIO.UserDateValidateToString(userInputDate); OrderManager manager = OrderManagerFactory.Create(path); OrderLookupResponse respose = manager.LookupOrders(path); if (respose.Success) { ConsoleIO.DisplayOrderDetails(respose.orders, path); } else { Console.WriteLine("An error has occurred: "); Console.WriteLine(respose.Message); } int orderNumber = ConsoleIO.StringToInt("Which order would you like to edit? (Choose order by it's ORDER NUMBER): "); Console.Clear(); fileOrderRepo = new FileOrderRepo(path); fileOrderRepo.LoadOrder(); Orders oldOrder = fileOrderRepo.ReadByOrderNumber(orderNumber); ConsoleIO.DisplayOrderDetails(new List <Orders> { oldOrder }, path); string newName = ConsoleIO.ValidateCompanyName("Enter new NAME or hit enter to continue: "); if (string.IsNullOrEmpty(newName)) { newOrder.CustomerName = oldOrder.CustomerName; } else { newOrder.CustomerName = newName; } ConsoleIO.DisplayStateAbbreviation(FileTaxRepo.LoadTaxes()); Console.WriteLine("Enter new STATE or hit enter to continue:"); Console.WriteLine("REMINDER: States MUST be abbreviated!!"); string newState = Console.ReadLine(); if (string.IsNullOrEmpty(newState)) { newOrder.State = oldOrder.State; } else { newOrder.State = newState; } ConsoleIO.DisplayProducts(FileProductsRepo.LoadProducts()); Console.WriteLine("Enter new PRODUCT TYPE or hit enter to continue:"); string newProduct = Console.ReadLine(); if (string.IsNullOrEmpty(newProduct)) { newOrder.ProductType = oldOrder.ProductType; } else { newOrder.ProductType = newProduct; } Console.WriteLine("Enter new AREA or hit enter to continue:"); Console.WriteLine("REMINDER: Area MUST be at minimum 100"); string newArea = Console.ReadLine(); if (string.IsNullOrEmpty(newArea)) { newOrder.Area = oldOrder.Area; } else { newOrder.Area = ConsoleIO.StringToDecimal(newArea); } DateTime.TryParse(userInputDate, CultureInfo.GetCultureInfo("en-us"), DateTimeStyles.NoCurrentDateDefault, out DateTime dateTime); NewOrderResponse response = new NewOrderResponse(); response = NewOrderRules.NewOrder(dateTime, newOrder.State, newOrder.ProductType); if (response.Success == false) { Console.WriteLine(response.Message); Console.ReadKey(); } else { newOrder.TaxRate = response.Tax; newOrder.CostPerSquareFoot = response.CostPerSquareFoot; newOrder.LaborCostPerSquareFoot = response.LaborCostPerSquareFoot; newOrder.OrderNumber = response.OrderNumber; Console.Clear(); Console.WriteLine("Summary"); Console.WriteLine("-------------------------------------------------------------"); Console.WriteLine("OLD ORDER"); Console.WriteLine("*************************************************************"); ConsoleIO.DisplayOrderDetails(new List <Orders> { oldOrder }, path); Console.WriteLine("*************************************************************"); Console.WriteLine("NEW ORDER"); Console.WriteLine("-------------------------------------------------------------"); ConsoleIO.DisplayOrderDetails(new List <Orders> { newOrder }, path); Console.WriteLine("-------------------------------------------------------------"); if (ConsoleIO.Exit("Do you want to SAVE edited order? [Y/N]") == false) { return; } else { fileOrderRepo.Delete(oldOrder.OrderNumber, oldOrder); fileOrderRepo.Create(newOrder); } } Console.WriteLine("Press any key to continue..."); Console.ReadKey(); }