public void QueryUserEditProducts(OrderManager manager, List <Order> orders, int index) { bool divider = false; orders[index].DynamicDisplayFormat(); Instructions.EditingInstructions(); Prompt.PressKeyToContinue(); while (!divider) { string product = Query.GetProductFromUser(); GetProductResponse productResponse = new GetProductResponse(); productResponse = manager.AssignProductInfo(product, FunctionType.EditOrder); if (productResponse.Success) { if (productResponse.Edited) { orders[index].CalculateOrderValues(orders[index].CustomerName, orders[index].Area, productResponse.Product, orders[index].Taxes); divider = true; } else { divider = true; } } else { Alert.AlertUserInvalidInput(productResponse); } } }
public void CanOnlyAssignValidProduct(string product, bool expected) { OrderManager manager = OrderManagerFactory.Create(); GetProductResponse actual = manager.AssignProductInfo(product, FunctionType.AddOrder); Assert.AreEqual(expected, actual.Success); }
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); } } }