public void CanEdit(string OrderDate, string NameInput, string StateInput, string ProductInput, decimal AreaInput, string NameEdit, string StateEdit, string ProductEdit, decimal AreaEdit, bool success) { OrderManager manager = OrderManagerFactory.Create(); DateTime orderDate = DateTime.Parse(OrderDate); PlaceNewOrderResponse response = manager.NewOrder(orderDate, NameInput, StateInput, ProductInput, AreaInput); Order toEdit = new Order { OrderNumber = response.Order.OrderNumber, OrderDate = response.Order.OrderDate, CustomerName = NameEdit, State = StateEdit, ProductType = ProductEdit, Area = AreaEdit, CostPerSquareFoot = 2.25m, LaborCostPerSquareFoot = 2.10m, MaterialCost = 450.00m, LaborCost = 420.00m, TotalTax = 54.375m, Total = 924.375m }; EditExistingOrderResponse editResponse = manager.EditOrder(toEdit); OrderLookupResponse loadResponse = manager.OrderLookup(response.Order.OrderNumber, orderDate); Assert.AreEqual(success, response.Success); Assert.AreEqual(loadResponse.Order.CustomerName, NameEdit); Assert.AreEqual(loadResponse.Order.State, StateEdit); Assert.AreEqual(loadResponse.Order.ProductType, ProductEdit); Assert.AreEqual(loadResponse.Order.Area, AreaEdit); }
//Manager does not validate inputs for placing new order public void CanAddNew(string OrderDate, string NameInput, string StateInput, string ProductInput, decimal AreaInput, bool success) { OrderManager manager = OrderManagerFactory.Create(); DateTime orderDate = DateTime.Parse(OrderDate); PlaceNewOrderResponse response = manager.NewOrder(orderDate, NameInput, StateInput, ProductInput, AreaInput); OrderLookupResponse responseLookup = manager.OrderLookup(response.Order.OrderNumber, orderDate); Assert.AreEqual(success, response.Success); Assert.AreEqual(responseLookup.Order.CustomerName, NameInput); Assert.AreEqual(responseLookup.Order.State, StateInput); Assert.AreEqual(responseLookup.Order.ProductType, ProductInput); Assert.AreEqual(responseLookup.Order.Area, AreaInput); }
public void CanDelete(string OrderDate, string NameInput, string StateInput, string ProductInput, decimal AreaInput, bool success) { OrderManager manager = OrderManagerFactory.Create(); DateTime orderDate = DateTime.Parse(OrderDate); PlaceNewOrderResponse response = manager.NewOrder(orderDate, NameInput, StateInput, ProductInput, AreaInput); AllOrdersResponse preDeleteResponse = manager.AllOrderLookup(orderDate); int placedCount = preDeleteResponse.ListOfOrders.Count; DeleteOrderResponse responseDelete = manager.DeleteOrder(response.Order); AllOrdersResponse postDeleteResponse = manager.AllOrderLookup(orderDate); int deleteCount = postDeleteResponse.ListOfOrders.Count; Assert.AreEqual(success, responseDelete.Success); Assert.AreEqual(deleteCount, (placedCount - 1)); }
public void Execute() { OrderManager manager = OrderManagerFactory.Create(); Console.Clear(); Console.WriteLine("Enter a new order"); Console.WriteLine("-------------------"); DateTime dateInput = new DateTime(); bool dateVerify = false; do { Console.WriteLine("Enter the order date in the format MM/DD/YYYY"); string stringDate = Console.ReadLine(); try { dateInput = DateTime.Parse(stringDate); dateVerify = true; } catch { Console.WriteLine("Incorrect format"); Console.ReadKey(); Console.Clear(); } } while (!dateVerify); Order orderToAdd = new Order(); string nameInput; bool validName = false; do { Console.Write("Enter the customer's name: "); nameInput = Console.ReadLine(); validName = ValidateInput.CheckForInput(nameInput); } while (!validName); string productInput; bool validProduct = false; do { Console.Write("Enter the product material being purchased: "); productInput = Console.ReadLine(); validProduct = ValidateInput.CheckForInput(productInput); } while (!validProduct); string stateInput; bool validState = false; do { Console.Write("Enter the customer's two letter state abbreviation: "); stateInput = Console.ReadLine().ToUpper(); validState = ValidateInput.CheckForInput(stateInput); } while (!validState); decimal areaInput = -1.0m; do { Console.Write("Enter the square footage needed: "); string stringArea = Console.ReadLine(); areaInput = ValidateInput.CheckForDecimal(stringArea); if (areaInput < 100) { Console.WriteLine("Order minimum is 100 square feet"); areaInput = -1.0m; } } while (areaInput == -1.0m); PlaceNewOrderResponse response = manager.NewOrder(dateInput, nameInput, stateInput, productInput, areaInput); if (response.Success) { ConsoleIO.DisplayOrderDetails(response.Order); } else { Console.WriteLine("An error occurred"); Console.WriteLine(response.Message); } Console.WriteLine("\nPress any key to continue"); Console.ReadKey(); }
public PlaceNewOrderResponse NewOrder(DateTime DateInput, string NameInput, string StateInput, string ProductInput, decimal AreaInput) { PlaceNewOrderResponse response = new PlaceNewOrderResponse(); Order orderToAdd = new Order { OrderDate = DateInput, CustomerName = NameInput }; string stateInput = StateInput; string productInput = ProductInput; orderToAdd.Area = AreaInput; bool failState = false; Product product = _productRepo.GetProduct(ProductInput); if (product == null) { response.Message = $"{ProductInput} is not a valid product"; failState = true; } else { orderToAdd.ProductType = product.ProductType; orderToAdd.CostPerSquareFoot = product.CostPerSquareFoot; orderToAdd.LaborCostPerSquareFoot = product.LaborCostPerSquareFoot; } Tax taxInfo = null; if (!failState) { taxInfo = _taxRepo.GetState(StateInput); if (taxInfo == null) { response.Message = $"{StateInput} is not a valid state"; failState = true; } else { orderToAdd.State = taxInfo.StateAbbreviation; orderToAdd.TaxRate = taxInfo.TaxRate; } } if (!failState) { orderToAdd.CostPerSquareFoot = product.CostPerSquareFoot; orderToAdd.LaborCostPerSquareFoot = product.LaborCostPerSquareFoot; orderToAdd.TaxRate = taxInfo.TaxRate; } if (!failState) { orderToAdd.MaterialCost = orderToAdd.Area * orderToAdd.CostPerSquareFoot; orderToAdd.LaborCost = orderToAdd.Area * orderToAdd.LaborCostPerSquareFoot; orderToAdd.TotalTax = (orderToAdd.MaterialCost + orderToAdd.LaborCost) * (orderToAdd.TaxRate / 100); orderToAdd.Total = orderToAdd.MaterialCost + orderToAdd.LaborCost + orderToAdd.TotalTax; } if (!failState) { response.Order = _orderRepo.AddOrder(orderToAdd); } if (failState) { response.Success = false; } else if (response.Order == null) { response.Success = false; response.Message = "An error occurred while submitting the order"; } else { response.Success = true; } return(response); }