Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        public void CanOnlyAssignValidTaxInfo(string state, bool expected)
        {
            OrderManager     manager = OrderManagerFactory.Create();
            GetTaxesResponse actual  = manager.AssignTaxInfo(state, FunctionType.AddOrder);

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