public void LookupTaxesTest(bool expectedSuccess) { OrderManager manager = OrderManagerFactory.Create(); TaxesLookupResponse taxeslookupresponse = manager.LookupTaxes(); Assert.AreEqual(expectedSuccess, taxeslookupresponse.Success); }
public TaxesLookupResponse LookupTaxes() { TaxesLookupResponse response = new TaxesLookupResponse(); response.Taxes = _orderTestRepository.LoadTaxFile(); return(response); }
public void Execute() { Console.Clear(); OrderManager manager = OrderManagerFactory.Create(); string orderdate = ConsoleIO.EnterOrderdate("Enter an order date in mm/dd/yyyy format, example 01/12/2015: "); int ordernumber = ConsoleIO.EnterOrderNumber("Enter an order number, example 5 or 10: "); OrderLookupResponse orderlookupresponse = manager.LookupOrder(orderdate, ordernumber); if (orderlookupresponse.Success) { Order order = orderlookupresponse.order; Console.WriteLine("Enter the new order information: "); string customername = ConsoleIO.EnterCustomerName($"Enter the Customer Name ({order.CustomerName}): ", OrderActionType.Edit); customername = customername == "" ? order.CustomerName : customername; TaxesLookupResponse taxeslookupresponse = manager.LookupTaxes(); string state = ConsoleIO.EnterState($"Enter the State(abbreviated form) ({order.State}): ", taxeslookupresponse.taxlist, OrderActionType.Edit); state = state == "" ? order.State : state; ProductsLookupResponse productslookupresponse = manager.LookupProducts(); string producttype = ConsoleIO.EnterProductType($"Enter the Product Type from the above ({order.ProductType}): ", productslookupresponse.productlist, OrderActionType.Edit); producttype = producttype == "" ? order.ProductType : producttype; decimal area = ConsoleIO.EnterArea($"Minimum order size is 100 square feet. Enter the area ({order.Area}): ", OrderActionType.Edit); area = area == 0.00M ? order.Area : area; order = manager.GenerateOrderInfo(ordernumber, customername, state, producttype, area); Console.WriteLine("Below is the updated order Summary: "); ConsoleIO.DisplayOrderDetails(order, orderdate); char confirmorder = ConsoleIO.UserchoiceYesorNo("Are you sure you want to update the order? Enter Y or N: "); if (char.ToUpper(confirmorder) == 'Y') { Response editorder = manager.ProcessOrder(order, orderdate, OrderActionType.Edit); if (editorder.Success) { Console.WriteLine("Order updated successfully!"); } else { Console.WriteLine("Order not updated. Please try again or contact IT!"); } } } else { Console.WriteLine(orderlookupresponse.Message); } Console.WriteLine("Press any key to continue..."); Console.ReadKey(); }
public Order AddOrderInformation(TaxesLookupResponse taxes, ProductLookupResponse products) { Order order = new Order(); order.Edit = false; order.OrderDate = GetDate(); order.CustomerName = GetName(order); order.State = GetState(taxes, order); order.ProductType = GetProduct(products, order); order.Area = GetArea(order); order = OrderCalculations(order, taxes, products); return(order); }
public TaxesLookupResponse LookupTaxes() { TaxesLookupResponse taxeslookupresponse = new TaxesLookupResponse(); taxeslookupresponse.taxlist = _taxRepository.LoadTaxes(); if (taxeslookupresponse.taxlist.Count > 0) { taxeslookupresponse.Success = true; } else { taxeslookupresponse.Success = false; taxeslookupresponse.Message = $"No tax information or Tax File doesn't exist. Please contact IT!"; } return(taxeslookupresponse); }
public Order EditOrderInformation(Order order, TaxesLookupResponse taxes, ProductLookupResponse products) { Console.Clear(); order.Edit = true; order.Recalculate = false; order.CustomerName = GetName(order); order.State = GetState(taxes, order); order.ProductType = GetProduct(products, order); order.Area = GetArea(order); if (order.Recalculate) { order = OrderCalculations(order, taxes, products); } return(order); }
public void Execute() { OrderManager manager = OrderManagerFactory.Create(); Console.Clear(); Console.WriteLine("Add an order"); Console.WriteLine("--------------------"); ProductLookupResponse products = manager.LookupProducts(); TaxesLookupResponse taxes = manager.LookupTaxes(); Order order = manager.AddOrderInformation(taxes, products); Console.Clear(); Console.WriteLine("Order details"); Console.WriteLine("--------------"); ConsoleIO.DisplayOrderDetails(order); Console.WriteLine("--------------"); Console.WriteLine("Save order? Enter Y/N"); while (true) { string prompt = Console.ReadLine(); if (prompt == "Y") { manager.AddNewOrder(order); Console.WriteLine("Order saved. Press any key to continue..."); Console.ReadKey(); return; } else if (prompt == "N") { Console.WriteLine("Order discarded. Press any key to continue..."); Console.ReadKey(); return; } else { Console.Write("Invalid input. Enter Y or N: "); } } }
public Order OrderCalculations(Order order, TaxesLookupResponse taxes, ProductLookupResponse products) { Taxes stateTax = taxes.Taxes.Where(x => x.StateAbbreviation == order.State).First(); Products productPrices = products.Product.Where(x => x.ProductType == order.ProductType).First(); if (!order.Edit) { order.OrderNumber = _orderTestRepository.LoadLastOrder(order.OrderDate).OrderNumber + 1; } else { order.TaxRate = stateTax.TaxRate; } order.CostPerSquareFoot = productPrices.CostPerSquareFoot; order.LaborCostPerSquareFoot = productPrices.LaborCostPerSquareFoot; order.MaterialCost = Math.Round(productPrices.CostPerSquareFoot * order.Area, 2); order.LaborCost = Math.Round(productPrices.LaborCostPerSquareFoot * order.Area, 2); order.Tax = Math.Round((order.LaborCost + order.MaterialCost) * (stateTax.TaxRate / 100), 2); order.Total = Math.Round(order.LaborCost + order.MaterialCost + order.Tax, 2); return(order); }
public string GetState(TaxesLookupResponse taxes, Order order) { Console.Write("Enter a state in XX format: "); while (true) { string state = Console.ReadLine(); if (order.Edit && state == "") { return(order.State); } if (taxes.Taxes.Any(x => x.StateAbbreviation == state)) { order.Recalculate = true; return(state); } else { Console.Write("Error: State does not exist in database. Enter another state: "); } } }
public void Execute() { Console.Clear(); OrderManager manager = OrderManagerFactory.Create(); Console.WriteLine("Enter the new order information: "); string orderdate = ConsoleIO.EnterFutureOrderdate("Enter a future order date in mm/dd/yyyy format, example 01/12/2020: "); string customername = ConsoleIO.EnterCustomerName("Enter the Customer Name: ", OrderActionType.Add); TaxesLookupResponse taxeslookupresponse = manager.LookupTaxes(); string state = ConsoleIO.EnterState("Enter the State(abbreviated form): ", taxeslookupresponse.taxlist, OrderActionType.Add); ProductsLookupResponse productslookupresponse = manager.LookupProducts(); string producttype = ConsoleIO.EnterProductType("Enter the Product Type from the above: ", productslookupresponse.productlist, OrderActionType.Add); decimal area = ConsoleIO.EnterArea("Minimum order size is 100 square feet. Enter the area: ", OrderActionType.Add); int ordernumber = manager.Generateordernumber(orderdate); Order order = manager.GenerateOrderInfo(ordernumber, customername, state, producttype, area); Console.WriteLine("Below is the New order Summary that you just entered: "); ConsoleIO.DisplayOrderDetails(order, orderdate); char confirmorder = ConsoleIO.UserchoiceYesorNo("Are you sure you want to place the order? Enter Y or N: "); if (char.ToUpper(confirmorder) == 'Y') { Response addorder = manager.ProcessOrder(order, orderdate, OrderActionType.Add); if (addorder.Success) { Console.WriteLine("New Order saved successfully!"); } else { Console.WriteLine("New Order not saved. Please try again or contact IT!"); } } Console.WriteLine("Press any key to continue..."); Console.ReadKey(); }
public void Execute() { OrderManager manager = OrderManagerFactory.Create(); Console.Clear(); Console.WriteLine("Edit an order"); Console.WriteLine("-------------------------------------"); Console.Write("Enter the order date: "); string date = Console.ReadLine(); OrderLookupResponse response; if (DateTime.TryParse(date, out DateTime orderDate)) { response = manager.LookupOrderDate(orderDate); if (!response.Success) { Console.Write("Error: "); Console.WriteLine(response.Message); Console.WriteLine("Press any key to continue..."); Console.ReadKey(); return; } } else { Console.WriteLine("Error: The date entered is not a valid date"); Console.WriteLine("Press any key to continue..."); Console.ReadKey(); return; } Console.Write("Enter the order number:"); string orderNumCheck = Console.ReadLine(); if (int.TryParse(orderNumCheck, out int orderNumber)) { response = manager.LookupOrderNumber(orderNumber); if (!response.Success) { Console.Write("Error: "); Console.WriteLine(response.Message); Console.WriteLine("Press any key to continue..."); Console.ReadKey(); return; } } else { Console.WriteLine("Error: Invalid input"); Console.WriteLine("Press any key to continue..."); Console.ReadKey(); return; } Order order = response.Order; ProductLookupResponse products = manager.LookupProducts(); TaxesLookupResponse taxes = manager.LookupTaxes(); Console.WriteLine("Order details"); Console.WriteLine("*******************"); ConsoleIO.DisplayOrderDetails(order); Console.WriteLine("*******************"); Console.WriteLine("Press any key to continue to the edit screen..."); Console.ReadKey(); Order orderEdit = manager.EditOrderInformation(order, taxes, products); Console.Clear(); Console.WriteLine("Edited order information"); ConsoleIO.DisplayOrderDetails(orderEdit); Console.Write("Save these changes? Y/N: "); while (true) { string userInput = Console.ReadLine(); if (userInput == "Y") { manager.SaveChanges(orderEdit); Console.WriteLine("Changes have been saved. Press any key to continue..."); Console.ReadKey(); return; } else if (userInput == "N") { Console.WriteLine("Changes have been discarded. Press any key to continue..."); Console.ReadKey(); return; } } }