public void Execute() { ConsoleIO consoleIO = new ConsoleIO(); OrderManager manager = OrderManagerFactory.Create(); consoleIO.DisplayMessage("Edit Order"); DateTime orderDate = consoleIO.GetOrderDate(); bool orderDateExists = manager.OrderDateExists(orderDate); if (orderDateExists) { List <Order> tempList = manager.RequestOrdersByDate(orderDate); consoleIO.DisplayOrders(tempList); int orderNumber = consoleIO.GetOrderNumberTo("edit."); bool orderNumberExists = manager.CheckIfOrderNumberExists(orderDate, orderNumber); Order editedOrder = new Order(); if (orderNumberExists) { bool isAnEdit = true; editedOrder.OrderNumber = orderNumber; editedOrder.Date = orderDate; editedOrder.CustomerName = consoleIO.GetCustomerName(isAnEdit); consoleIO.DisplayStatesCurrentlyServiced(manager.GetListOfStateTaxes()); editedOrder.State = consoleIO.GetCustomerState(); consoleIO.DisplayProductTypes(manager.GetListOfAllProducts()); editedOrder.ProductType = consoleIO.GetProductFromCustomer(); editedOrder.Area = consoleIO.GetAreaFromCustomer(isAnEdit); ValidateOrderResponse response = manager.ValidateOrder(editedOrder, isAnEdit); if (response.Success) { bool placeOrder = consoleIO.ConfirmOrderPlacement(editedOrder); if (placeOrder) { manager.EditOrder(orderNumber, editedOrder); consoleIO.DisplayOrderReponseMessage(response); } else { consoleIO.DisplayOrderReponseMessage(response); } } else //response.success = false, displays a different message - order did not meet requirements { consoleIO.DisplayOrderReponseMessage(response); } } else { consoleIO.DisplayMessage("Order number was not found."); } } else { consoleIO.DisplayMessage("Order date was not found."); } consoleIO.PressAnyKeyToContinue(); }
public void Execute() { ConsoleIO consoleIO = new ConsoleIO(); OrderManager manager = OrderManagerFactory.Create(); consoleIO.DisplayMessage("Add Order"); DateTime orderDate = consoleIO.GetOrderDate(); Order newOrder = new Order(); newOrder.Date = orderDate; bool notAnEdit = false; newOrder.CustomerName = consoleIO.GetCustomerName(notAnEdit); consoleIO.DisplayStatesCurrentlyServiced(manager.GetListOfStateTaxes()); newOrder.State = consoleIO.GetCustomerState(); consoleIO.DisplayProductTypes(manager.GetListOfAllProducts()); newOrder.ProductType = consoleIO.GetProductFromCustomer(); newOrder.Area = consoleIO.GetAreaFromCustomer(notAnEdit); ValidateOrderResponse response = manager.ValidateOrder(newOrder, notAnEdit); if (response.Success) { consoleIO.DisplayOrderDetails(newOrder); bool placeOrder = consoleIO.ReturnYesOrNo("Would you like to add this order?"); if (placeOrder) { manager.AddOrder(response.Order); consoleIO.DisplayOrderReponseMessage(response); } else { consoleIO.DisplayMessage("Order has been cancelled"); } } else //response.success = false, displays a different message - order did not meet requirements { consoleIO.DisplayOrderReponseMessage(response); } consoleIO.PressAnyKeyToContinue(); }
public void Execute() { ConsoleIO consoleIO = new ConsoleIO(); OrderManager manager = OrderManagerFactory.Create(); consoleIO.DisplayMessage("Delete Order"); DateTime orderDate = consoleIO.GetOrderDate(); bool orderDateExists = manager.OrderDateExists(orderDate); if (orderDateExists) { List <Order> tempList = manager.RequestOrdersByDate(orderDate); consoleIO.DisplayOrders(tempList); int orderNumber = consoleIO.GetOrderNumberTo("delete."); bool orderNumberExists = manager.CheckIfOrderNumberExists(orderDate, orderNumber); if (orderNumberExists) { bool placeOrder = consoleIO.ReturnYesOrNo("Enter Y/N to delete order."); if (placeOrder) { ValidateOrderResponse response = new ValidateOrderResponse(); manager.DeleteOrder(orderNumber, orderDate); consoleIO.DisplayOrderReponseMessage(response); } else { consoleIO.DisplayMessage($"Your order is still in place for {orderDate}"); } } else { consoleIO.DisplayMessage("Order number was not found."); } } else { consoleIO.DisplayMessage("Order date was not found."); } consoleIO.PressAnyKeyToContinue(); }
public ValidateOrderResponse ValidateOrder(Order order, bool isEdit) { ValidateOrderResponse response = new ValidateOrderResponse(); bool orderDateExists = OrderDateExists(order.Date); if (orderDateExists && !isEdit) { order.OrderNumber = _ordersRepository.LoadOrders(order.Date).Max(x => x.OrderNumber) + 1; } else if (!orderDateExists) { order.OrderNumber = 1; } else //order must be edit { order = EditValuesForEmptyStrings(response.Order, order);//set values to original order if empty string was entered if (order.Area == 0) { order.Area = response.Order.Area; } } if (order.Area < 100) { response.Success = false; response.Message = "Error, a valid number was not entered or number was less than 100sqft."; return(response); } if (order.Date < DateTime.Now) { response.Success = false; response.Message = "Order must be in the future"; return(response); } if (!productManager.CheckForProduct(order.ProductType)) { response.Success = false; response.Message = "We do not carry this product at this time."; return(response); } if (!IsStateServiced(order.State)) { response.Success = false; response.Message = "We do not service this state at this time."; return(response); } Regex allowCharacter = new Regex("^[0-9A-Za-z.,]*$"); if (!allowCharacter.IsMatch(order.CustomerName)) { response.Success = false; response.Message = "Name is only allowed to contain [a-z][0-9] as well as periods and comma characters."; return(response); } var setTaxRate = GetListOfStateTaxes().Where(x => x.StateAbbreviation == order.State).Select(y => y.TaxRate); order.TaxRate = setTaxRate.First(); var setCostPerSqFt = GetListOfAllProducts().Where(x => x.ProductType == order.ProductType).Select(y => y.CostPerSqFt); order.CostPerSqFt = setCostPerSqFt.FirstOrDefault(); var setLaborCostPerSqFt = GetListOfAllProducts().Where(x => x.ProductType == order.ProductType).Select(y => y.LaborCostPerSqFt); order.LaborCostPerSqFt = setLaborCostPerSqFt.FirstOrDefault(); SetPrice(order); response.Order = order; response.Success = true; return(response); }
public void DisplayOrderReponseMessage(ValidateOrderResponse response) { Console.WriteLine($"{response.Message}"); }