public void CanGetStateTaxFromFile(string stateName, bool expected) { StateTaxManager taxManager = StateTaxManagerFactory.Create(); StateLookupResponse response = taxManager.GetStateTax(stateName); Assert.AreEqual(expected, response.Success); }
public void CanGetStateTaxObject(string state, bool expected) { StateTaxManager manager = new StateTaxManager(taxRepo); StateLookupResponse response = manager.GetStateTax(state); Assert.AreEqual(expected, response.Success); }
public AddOrderResponse AddOrder(Order order) { AddOrderResponse response = new AddOrderResponse(); //Validation if (order.OrderDate < DateTime.Now) { response.Success = false; response.Message = "Order date MUST be in the future!"; return(response); } if (order.Area < 100) { response.Success = false; response.Message = "Order area MUST be greater than 100sqft!"; return(response); } ProductManager productManager = ProductManagerFactory.Create(); ProductLookupResponse productResponse = productManager.GetProduct(order.ProductType); if (!productResponse.Success) { response.Success = false; response.Message = $"Product type: {order.ProductType} does not exist!"; return(response); } StateTaxManager stateTaxManager = StateTaxManagerFactory.Create(); StateLookupResponse taxResponse = stateTaxManager.GetStateTax(order.State); if (!taxResponse.Success) { response.Success = false; response.Message = $"No state tax data found for: {order.State}"; return(response); } bool duplicateOrder = _orderRepository.List(order.OrderDate) .Any(o => o.CustomerName == order.CustomerName && o.State == order.State && o.ProductType == order.ProductType && o.Area == order.Area ); if (duplicateOrder) { response.Success = false; response.Message = "Order entered already exists!"; } else { _orderRepository.AddOrder(order); response.Success = true; response.Order = order; } return(response); }
public void StateFileChoseTest() { StateManager manager = StateManagerFactory.Create(); StateLookupResponse response = manager.LookupState("OH"); Assert.IsNotNull(response.StateTax.State); Assert.IsTrue(response.Success); Assert.AreEqual("OH", response.StateTax.State); }
public StateLookupResponse LookupState(string State) { StateLookupResponse response = new StateLookupResponse(); response.StateTax = _stateTaxRepository.ChooseStateTax(State); if (response.StateTax == null) { response.Success = false; response.Message = $"{State} is not currently in our sales region."; } else { response.Success = true; } return(response); }
public SaveOrderResponse SaveOrder(Order order) { SaveOrderResponse response = new SaveOrderResponse(); //Validation if (order.Area < 100) { response.Success = false; response.Message = "Order area MUST be greater than 100sqft!"; return(response); } ProductManager productManager = ProductManagerFactory.Create(); ProductLookupResponse productResponse = productManager.GetProduct(order.ProductType); if (!productResponse.Success) { response.Success = false; response.Message = $"Product type: {order.ProductType} does not exist!"; return(response); } StateTaxManager stateTaxManager = StateTaxManagerFactory.Create(); StateLookupResponse taxResponse = stateTaxManager.GetStateTax(order.State); if (!taxResponse.Success) { response.Success = false; response.Message = $"No state tax data found for: {order.State}"; return(response); } //Save order _orderRepository.SaveOrder(order); if (!order.AreEqualOrders(order, _orderRepository.LoadOrder(order.OrderNumber, order.OrderDate))) { response.Success = false; response.Message = "Failed to save order!"; } else { response.Success = true; } return(response); }
public StateLookupResponse GetStateTax(string state) { StateLookupResponse response = new StateLookupResponse(); if (state == "") { response.Success = false; response.Message = ""; return(response); } response.StateTax = _stateTaxRepository.GetStateTax(state); if (response.StateTax == null) { response.Success = false; response.Message = $"State tax info does not exist for {state}"; return(response); } else { response.Success = true; } return(response); }
//Takes in an original order, makes a copy, assigns user edits from "editOrder" to the copy and returns copy to be saved public EditOrderResponse EditOrder(Order originalOrder, Order editOrder) { Order order = new Order(originalOrder); EditOrderResponse response = new EditOrderResponse(); //Assign order properties if not blank or different than the original order if (order.CustomerName != editOrder.CustomerName && editOrder.CustomerName != "") { order.CustomerName = editOrder.CustomerName; } if (order.State != editOrder.State && editOrder.State != null) { order.State = editOrder.State; order.TaxRate = editOrder.TaxRate; } if (order.Area != editOrder.Area && editOrder.Area != decimal.MinValue) { order.Area = editOrder.Area; } if (order.ProductType != editOrder.ProductType && editOrder.ProductType != null) { order.ProductType = editOrder.ProductType; order.CostPerSquareFoot = editOrder.CostPerSquareFoot; order.LaborCostPerSquareFoot = editOrder.LaborCostPerSquareFoot; } //Validation or the updated order if (order.OrderDate < DateTime.Now) { response.Success = false; response.Message = "Order date MUST be in the future!"; return(response); } if (order.Area < 100) { response.Success = false; response.Message = "Order area MUST be greater than 100sqft!"; return(response); } ProductManager productManager = ProductManagerFactory.Create(); ProductLookupResponse productResponse = productManager.GetProduct(order.ProductType); if (!productResponse.Success) { response.Success = false; response.Message = $"Product type: {order.ProductType} does not exist!"; return(response); } StateTaxManager stateTaxManager = StateTaxManagerFactory.Create(); StateLookupResponse taxResponse = stateTaxManager.GetStateTax(order.State); if (!taxResponse.Success) { response.Success = false; response.Message = $"No state tax data found for: {order.State}"; return(response); } //lookup order and check for changes OrderLookupResponse lookupResponse = LookupOrder(order.OrderNumber, order.OrderDate); if (lookupResponse.Success) { if (order.AreEqualOrders(lookupResponse.Order, order)) { response.Success = false; response.Message = $"No changes entered for Order: {order.OrderNumber} - {order.OrderDate:MM/dd/yyyy}."; } else { response.Success = true; response.Order = order; } } else { response.Success = false; response.Message = $"{lookupResponse.Message}\nOrder Number and Order Date cannot be changed!"; } return(response); }
public void Execute() { Console.Clear(); ConsoleIO.HeadingLable("Edit an Order"); //Get an order with an Order Number and Order Date int orderNumber = ConsoleIO.GetIntInputFromUser("Order Number: "); DateTime orderDate = ConsoleIO.GetDateFromUser("Order Date (MM/DD/YYYY): ", true); //Lookup Order and Begin editing or Error out OrderManager orderManager = OrderManagerFactory.Create(); OrderLookupResponse orderLookup = orderManager.LookupOrder(orderNumber, orderDate); if (orderLookup.Success) { //Create a new order for the user to fill in params Order editOrder = new Order(); //Display the order that will be edited ConsoleIO.HeadingLable($"Editing Order: {orderLookup.Order.OrderNumber} - {orderLookup.Order.OrderDate:MM/dd/yyyy}"); //Get new order name from user, display the old name editOrder.CustomerName = ConsoleIO.GetStringInputFromUser($"Customer Name ({orderLookup.Order.CustomerName}): ", true); //Create a state tax object to get correct input from user for new order state params StateTaxManager stateTaxManager = StateTaxManagerFactory.Create(); bool validInput = false; while (!validInput) { //Get a state tax object that matches the user input unless input is "" StateLookupResponse stateTaxResponse = stateTaxManager.GetStateTax(ConsoleIO.GetStringInputFromUser($"State (ex. MN, or Minnesota)({orderLookup.Order.State}): ", true)); if (!stateTaxResponse.Success && stateTaxResponse.Message == "") { validInput = true; } else if (stateTaxResponse.Success) { //If tax object exists assign new order state and tax params editOrder.State = stateTaxResponse.StateTax.StateAbbreviation; editOrder.TaxRate = stateTaxResponse.StateTax.TaxRate; validInput = true; } else { ConsoleIO.RedMessage($"An Error Occured: {stateTaxResponse.Message}"); } } //Create a product manager to get a product list ProductManager productManager = ProductManagerFactory.Create(); ProductListResponse productList = productManager.GetProductList(); //Print out product list or error out if (productList.Success) { ConsoleIO.HeadingLable("Product List"); foreach (Product p in productList.Products) { ConsoleIO.DisplayProducts(p); } } else { ConsoleIO.RedMessage($"An Error Occured: {productList.Message}"); Console.WriteLine("\nPress any key to continue..."); Console.ReadKey(); return; } //Get valid user input for new order product type bool validProduct = false; while (!validProduct) { ProductLookupResponse productResponse = productManager.GetProduct(ConsoleIO.GetStringInputFromUser($"Product Name ({orderLookup.Order.ProductType}): ", true)); //User enters nothing and nothing is assigned if (!productResponse.Success && productResponse.Message == "") { validProduct = true; } else if (productResponse.Success) { //Valid entry assigns new order product params editOrder.ProductType = productResponse.Product.ProductType; editOrder.CostPerSquareFoot = productResponse.Product.CostPerSquareFoot; editOrder.LaborCostPerSquareFoot = productResponse.Product.LaborCostPerSquareFoot; validProduct = true; } else { ConsoleIO.RedMessage($"An Error Occured: {productResponse.Message}"); } } //Get valid area for new order from user editOrder.Area = ConsoleIO.GetAreaFromUser($"Area ({orderLookup.Order.Area}): ", true); //Assign old order params to new order params EditOrderResponse editResponse = orderManager.EditOrder(orderLookup.Order, editOrder); //If the edit is successful ask to save order, otherwise error out if (editResponse.Success) { //Display ConsoleIO.HeadingLable("Updated Order"); ConsoleIO.DisplayOrderInformation(editResponse.Order, true); bool saveEdit = ConsoleIO.GetYesNoAnswerFromUser("Would you like to submit and save the updated order information?"); if (saveEdit) { SaveOrderResponse saveResponse = orderManager.SaveOrder(editResponse.Order); if (saveResponse.Success) { ConsoleIO.YellowMessage($"\nUpdated Order: {editResponse.Order.OrderNumber} - {editResponse.Order.OrderDate:MM/dd/yyyy}"); } else { ConsoleIO.RedMessage($"An Error Occured: {saveResponse.Message}"); } } } else { ConsoleIO.RedMessage($"An Error Occured: {editResponse.Message}"); } } else { ConsoleIO.RedMessage(orderLookup.Message); } Console.WriteLine("\nPress any key to continue..."); Console.ReadKey(); }
public void Execute() { Console.Clear(); ConsoleIO.HeadingLable("Add an Order"); Order newOrder = new Order(); newOrder.OrderDate = ConsoleIO.GetDateFromUser("Enter Order Date (ex. MM/DD/YYYY): "); newOrder.CustomerName = ConsoleIO.GetStringInputFromUser("Customer Name: "); StateTaxManager stateTaxManager = StateTaxManagerFactory.Create(); bool validState = false; while (!validState) { StateLookupResponse response = stateTaxManager.GetStateTax(ConsoleIO.GetStringInputFromUser("State (ex. MN, or Minnesota): ")); if (response.Success) { newOrder.State = response.StateTax.StateAbbreviation; newOrder.TaxRate = response.StateTax.TaxRate; validState = true; } else { ConsoleIO.RedMessage($"An Error Occured: {response.Message}"); } } ProductManager productManager = ProductManagerFactory.Create(); ProductListResponse productList = productManager.GetProductList(); if (productList.Success) { ConsoleIO.HeadingLable("Product List"); foreach (Product p in productList.Products) { ConsoleIO.DisplayProducts(p); } } else { ConsoleIO.RedMessage($"An Error Occured: {productList.Message}"); Console.WriteLine("\nPress any key to continue..."); Console.ReadKey(); return; } bool validProduct = false; while (!validProduct) { ProductLookupResponse response = productManager.GetProduct(ConsoleIO.GetStringInputFromUser("Product Name: ")); if (response.Success) { newOrder.ProductType = response.Product.ProductType; newOrder.CostPerSquareFoot = response.Product.CostPerSquareFoot; newOrder.LaborCostPerSquareFoot = response.Product.LaborCostPerSquareFoot; validProduct = true; } else { ConsoleIO.RedMessage($"An Error Occured: {response.Message}"); } } newOrder.Area = ConsoleIO.GetAreaFromUser("Area: "); ConsoleIO.HeadingLable($"{newOrder.CustomerName}'s New Order"); ConsoleIO.DisplayOrderInformation(newOrder, false); OrderManager orderManager = OrderManagerFactory.Create(); bool submit = ConsoleIO.GetYesNoAnswerFromUser("Would you like to submit this order?"); if (submit) { AddOrderResponse addResponse = orderManager.AddOrder(newOrder); if (addResponse.Success) { Console.Clear(); ConsoleIO.YellowMessage("Order Submitted!"); ConsoleIO.DisplayOrderInformation(addResponse.Order, true); } else { ConsoleIO.RedMessage($"An Error Occured: {addResponse.Message}"); } } else { ConsoleIO.RedMessage("Add order cancelled."); } Console.WriteLine("\nPress any key to continue..."); Console.ReadKey(); }