public GetTaxesResponse GetTaxes(string state) { GetTaxesResponse response = new GetTaxesResponse(); response.Success = false; ITaxesRepository repo = TaxesRepositoryFactory.Create(); List <Taxes> allTaxes = repo.LoadTaxes(); foreach (Taxes tax in allTaxes) { if (state.Equals(tax.StateAbbreviation, StringComparison.CurrentCultureIgnoreCase)) { response.Success = true; response.Taxes = tax; } else if (state.Equals(tax.StateName, StringComparison.CurrentCultureIgnoreCase)) { response.Success = true; response.Taxes = tax; } } if (!response.Success) { response.Message = $"{state} is either not a state we sell in OR not a valid state input"; } return(response); }
public void CanOnlyAssignValidTaxInfo(string state, bool expected) { OrderManager manager = OrderManagerFactory.Create(); GetTaxesResponse actual = manager.AssignTaxInfo(state, FunctionType.AddOrder); Assert.AreEqual(expected, actual.Success); }
public void QueryUserEditTaxes(OrderManager manager, List <Order> orders, int index) { bool divider = false; orders[index].DynamicDisplayFormat(); Instructions.EditingInstructions(); Prompt.PressKeyToContinue(); while (!divider) { string state = Query.GetTaxesFromUser(); GetTaxesResponse taxesResponse = new GetTaxesResponse(); taxesResponse = manager.AssignTaxInfo(state, FunctionType.EditOrder); if (taxesResponse.Success) { if (taxesResponse.Edited) { orders[index].CalculateOrderValues(orders[index].CustomerName, orders[index].Area, orders[index].Product, taxesResponse.Taxes); divider = true; } else { divider = true; } } else { Alert.AlertUserInvalidInput(taxesResponse); } } }
public GetTaxesResponse AssignTaxInfo(string state, FunctionType type) { GetTaxesResponse response = new GetTaxesResponse(); IGetTaxes getTaxes = GetTaxesRuleFactory.Create(type); response = getTaxes.GetTaxes(state); return(response); }
public SaveOrderResponse SaveOrder(Order order) { SaveOrderResponse finalResponse = new SaveOrderResponse(); AddNameRule nameRule = new AddNameRule(); GetNameResponse nameResponse = new GetNameResponse(); nameResponse = nameRule.GetName(order.CustomerName); AddAreaRule areaRule = new AddAreaRule(); GetAreaResponse areaResponse = new GetAreaResponse(); areaResponse = areaRule.GetArea(order.Area.ToString()); AddProductRule productRule = new AddProductRule(); GetProductResponse productResponse = new GetProductResponse(); productResponse = productRule.GetProduct(order.ProductType); AddTaxesRule taxesRule = new AddTaxesRule(); GetTaxesResponse taxesResponse = new GetTaxesResponse(); taxesResponse = taxesRule.GetTaxes(order.State); finalResponse.NameIsOkay = nameResponse.Success; finalResponse.AreaIsOkay = areaResponse.Success; finalResponse.ProductIsOkay = productResponse.Success; finalResponse.TaxIsOkay = taxesResponse.Success; if (finalResponse.NameIsOkay && finalResponse.AreaIsOkay && finalResponse.ProductIsOkay && finalResponse.TaxIsOkay) { finalResponse.EverythingIsAlright = true; } else { finalResponse.EverythingIsAlright = false; } return(finalResponse); }
public Order CreateNewOrder() { OrderManager manager = OrderManagerFactory.Create(); Order newOrder = new Order(); bool validName = false; string finalName = null; while (!validName) { string name = Query.GetNameFromUser(); GetNameResponse response = new GetNameResponse(); response = manager.AssignCustomerName(name, FunctionType.AddOrder); if (response.Success) { finalName = response.Name; validName = true; } else { Alert.AlertUserInvalidInput(response); } } bool validState = false; Taxes finalTaxes = null; while (!validState) { string state = Query.GetTaxesFromUser(); GetTaxesResponse response = new GetTaxesResponse(); response = manager.AssignTaxInfo(state, FunctionType.AddOrder); if (response.Success) { finalTaxes = response.Taxes; validState = true; } else { Alert.AlertUserInvalidInput(response); } } bool validProduct = false; Product finalProduct = null; while (!validProduct) { string product = Query.GetProductFromUser(); GetProductResponse response = new GetProductResponse(); response = manager.AssignProductInfo(product, FunctionType.AddOrder); if (response.Success) { finalProduct = response.Product; validProduct = true; } else { Alert.AlertUserInvalidInput(response); } } bool validArea = false; decimal finalArea = decimal.MinValue; while (!validArea) { string area = Query.GetAreaFromUser(); GetAreaResponse response = new GetAreaResponse(); response = manager.AssignArea(area, FunctionType.AddOrder); if (response.Success) { finalArea = response.Area; validArea = true; } else { Alert.AlertUserInvalidInput(response); } } newOrder.CalculateOrderValues(finalName, finalArea, finalProduct, finalTaxes); return(newOrder); }
public void Execute() { OrderManager manager = OrderManagerFactory.Create(); bool validInput = false; GetDateResponse dateResponse = null; while (!validInput) { string date = Query.GetDateFromUser(); dateResponse = manager.FindOrdersOnDate(date, FunctionType.EditOrder); if (dateResponse.Success) { validInput = true; } else { Alert.AlertUserInvalidInput(dateResponse); } } if (dateResponse.FileExists) { List <Order> orders = manager.RetrieveOrdersOnDate(dateResponse); foreach (Order o in orders) { GetProductResponse fillInProducts = manager.AssignProductInfo(o.ProductType, FunctionType.EditOrder); GetTaxesResponse fillInTaxes = manager.AssignTaxInfo(o.State, FunctionType.EditOrder); o.Product = fillInProducts.Product; o.Taxes = fillInTaxes.Taxes; } GetOrderNumberResponse orderNumberResponse = null; bool validOrderNumber = false; int index = int.MinValue; while (!validOrderNumber) { string orderNumber = Query.GetOrderNumberFromUser(); orderNumberResponse = manager.SelectOrderWithOrderNumber(orderNumber); if (orderNumberResponse.Success) { if (orders.Exists(o => o.OrderNumber == orderNumberResponse.OrderNumber)) { index = orders.FindIndex(o => o.OrderNumber == orderNumberResponse.OrderNumber); validOrderNumber = true; } else { Alert.OrderNumberNotOnList(orderNumberResponse.OrderNumber); } } else { Alert.AlertUserInvalidInput(orderNumberResponse); } } QueryUserEditName(manager, orders, index); QueryUserEditTaxes(manager, orders, index); QueryUserEditProducts(manager, orders, index); QueryUserEditArea(manager, orders, index); bool confirmingSave = true; bool willSave = false; while (confirmingSave) { Console.Clear(); orders[index].DynamicDisplayFormat(); willSave = Prompt.ConfirmChanges(2); if (!willSave) { confirmingSave = Prompt.IsUserSure(); } else { confirmingSave = false; } } if (willSave) { manager.SaveOrdersToFile(orders, dateResponse.FilePath); } } }