Esempio n. 1
0
        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);
                }
            }
        }
Esempio n. 2
0
        public void CanOnlyAssignValidProduct(string product, bool expected)
        {
            OrderManager       manager = OrderManagerFactory.Create();
            GetProductResponse actual  = manager.AssignProductInfo(product, FunctionType.AddOrder);

            Assert.AreEqual(expected, actual.Success);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
                }
            }
        }