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();
        }
Beispiel #3
0
        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();
        }
Beispiel #4
0
        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}");
 }