Exemplo n.º 1
0
        public void LookupTaxesTest(bool expectedSuccess)
        {
            OrderManager        manager             = OrderManagerFactory.Create();
            TaxesLookupResponse taxeslookupresponse = manager.LookupTaxes();

            Assert.AreEqual(expectedSuccess, taxeslookupresponse.Success);
        }
Exemplo n.º 2
0
        public TaxesLookupResponse LookupTaxes()
        {
            TaxesLookupResponse response = new TaxesLookupResponse();

            response.Taxes = _orderTestRepository.LoadTaxFile();

            return(response);
        }
        public void Execute()
        {
            Console.Clear();
            OrderManager manager = OrderManagerFactory.Create();

            string orderdate   = ConsoleIO.EnterOrderdate("Enter an order date in mm/dd/yyyy format, example 01/12/2015: ");
            int    ordernumber = ConsoleIO.EnterOrderNumber("Enter an order number, example 5 or 10: ");

            OrderLookupResponse orderlookupresponse = manager.LookupOrder(orderdate, ordernumber);

            if (orderlookupresponse.Success)
            {
                Order order = orderlookupresponse.order;
                Console.WriteLine("Enter the new order information: ");

                string customername = ConsoleIO.EnterCustomerName($"Enter the Customer Name ({order.CustomerName}): ", OrderActionType.Edit);
                customername = customername == "" ? order.CustomerName : customername;

                TaxesLookupResponse taxeslookupresponse = manager.LookupTaxes();
                string state = ConsoleIO.EnterState($"Enter the State(abbreviated form) ({order.State}): ", taxeslookupresponse.taxlist, OrderActionType.Edit);
                state = state == "" ? order.State : state;

                ProductsLookupResponse productslookupresponse = manager.LookupProducts();
                string producttype = ConsoleIO.EnterProductType($"Enter the Product Type from the above ({order.ProductType}): ", productslookupresponse.productlist, OrderActionType.Edit);
                producttype = producttype == "" ? order.ProductType : producttype;

                decimal area = ConsoleIO.EnterArea($"Minimum order size is 100 square feet. Enter the area ({order.Area}): ", OrderActionType.Edit);
                area = area == 0.00M ? order.Area : area;

                order = manager.GenerateOrderInfo(ordernumber, customername, state, producttype, area);
                Console.WriteLine("Below is the updated order Summary: ");
                ConsoleIO.DisplayOrderDetails(order, orderdate);

                char confirmorder = ConsoleIO.UserchoiceYesorNo("Are you sure you want to update the order? Enter Y or N: ");
                if (char.ToUpper(confirmorder) == 'Y')
                {
                    Response editorder = manager.ProcessOrder(order, orderdate, OrderActionType.Edit);
                    if (editorder.Success)
                    {
                        Console.WriteLine("Order updated successfully!");
                    }
                    else
                    {
                        Console.WriteLine("Order not updated. Please try again or contact IT!");
                    }
                }
            }
            else
            {
                Console.WriteLine(orderlookupresponse.Message);
            }
            Console.WriteLine("Press any key to continue...");
            Console.ReadKey();
        }
Exemplo n.º 4
0
        public Order AddOrderInformation(TaxesLookupResponse taxes, ProductLookupResponse products)
        {
            Order order = new Order();

            order.Edit = false;

            order.OrderDate    = GetDate();
            order.CustomerName = GetName(order);
            order.State        = GetState(taxes, order);
            order.ProductType  = GetProduct(products, order);
            order.Area         = GetArea(order);

            order = OrderCalculations(order, taxes, products);

            return(order);
        }
        public TaxesLookupResponse LookupTaxes()
        {
            TaxesLookupResponse taxeslookupresponse = new TaxesLookupResponse();

            taxeslookupresponse.taxlist = _taxRepository.LoadTaxes();
            if (taxeslookupresponse.taxlist.Count > 0)
            {
                taxeslookupresponse.Success = true;
            }
            else
            {
                taxeslookupresponse.Success = false;
                taxeslookupresponse.Message = $"No tax information or Tax File doesn't exist. Please contact IT!";
            }
            return(taxeslookupresponse);
        }
Exemplo n.º 6
0
        public Order EditOrderInformation(Order order, TaxesLookupResponse taxes, ProductLookupResponse products)
        {
            Console.Clear();
            order.Edit        = true;
            order.Recalculate = false;

            order.CustomerName = GetName(order);
            order.State        = GetState(taxes, order);
            order.ProductType  = GetProduct(products, order);
            order.Area         = GetArea(order);

            if (order.Recalculate)
            {
                order = OrderCalculations(order, taxes, products);
            }

            return(order);
        }
Exemplo n.º 7
0
        public void Execute()
        {
            OrderManager manager = OrderManagerFactory.Create();

            Console.Clear();
            Console.WriteLine("Add an order");
            Console.WriteLine("--------------------");

            ProductLookupResponse products = manager.LookupProducts();
            TaxesLookupResponse   taxes    = manager.LookupTaxes();
            Order order = manager.AddOrderInformation(taxes, products);

            Console.Clear();
            Console.WriteLine("Order details");
            Console.WriteLine("--------------");
            ConsoleIO.DisplayOrderDetails(order);
            Console.WriteLine("--------------");
            Console.WriteLine("Save order? Enter Y/N");
            while (true)
            {
                string prompt = Console.ReadLine();
                if (prompt == "Y")
                {
                    manager.AddNewOrder(order);
                    Console.WriteLine("Order saved. Press any key to continue...");
                    Console.ReadKey();
                    return;
                }
                else if (prompt == "N")
                {
                    Console.WriteLine("Order discarded. Press any key to continue...");
                    Console.ReadKey();
                    return;
                }
                else
                {
                    Console.Write("Invalid input. Enter Y or N: ");
                }
            }
        }
Exemplo n.º 8
0
        public Order OrderCalculations(Order order, TaxesLookupResponse taxes, ProductLookupResponse products)
        {
            Taxes    stateTax      = taxes.Taxes.Where(x => x.StateAbbreviation == order.State).First();
            Products productPrices = products.Product.Where(x => x.ProductType == order.ProductType).First();

            if (!order.Edit)
            {
                order.OrderNumber = _orderTestRepository.LoadLastOrder(order.OrderDate).OrderNumber + 1;
            }
            else
            {
                order.TaxRate = stateTax.TaxRate;
            }
            order.CostPerSquareFoot      = productPrices.CostPerSquareFoot;
            order.LaborCostPerSquareFoot = productPrices.LaborCostPerSquareFoot;
            order.MaterialCost           = Math.Round(productPrices.CostPerSquareFoot * order.Area, 2);
            order.LaborCost = Math.Round(productPrices.LaborCostPerSquareFoot * order.Area, 2);
            order.Tax       = Math.Round((order.LaborCost + order.MaterialCost) * (stateTax.TaxRate / 100), 2);
            order.Total     = Math.Round(order.LaborCost + order.MaterialCost + order.Tax, 2);

            return(order);
        }
Exemplo n.º 9
0
        public string GetState(TaxesLookupResponse taxes, Order order)
        {
            Console.Write("Enter a state in XX format: ");
            while (true)
            {
                string state = Console.ReadLine();

                if (order.Edit && state == "")
                {
                    return(order.State);
                }
                if (taxes.Taxes.Any(x => x.StateAbbreviation == state))
                {
                    order.Recalculate = true;
                    return(state);
                }
                else
                {
                    Console.Write("Error: State does not exist in database. Enter another state: ");
                }
            }
        }
Exemplo n.º 10
0
        public void Execute()
        {
            Console.Clear();
            OrderManager manager = OrderManagerFactory.Create();

            Console.WriteLine("Enter the new order information: ");
            string orderdate    = ConsoleIO.EnterFutureOrderdate("Enter a future order date in mm/dd/yyyy format, example 01/12/2020: ");
            string customername = ConsoleIO.EnterCustomerName("Enter the Customer Name: ", OrderActionType.Add);
            TaxesLookupResponse taxeslookupresponse = manager.LookupTaxes();
            string state = ConsoleIO.EnterState("Enter the State(abbreviated form): ", taxeslookupresponse.taxlist, OrderActionType.Add);
            ProductsLookupResponse productslookupresponse = manager.LookupProducts();
            string  producttype = ConsoleIO.EnterProductType("Enter the Product Type from the above: ", productslookupresponse.productlist, OrderActionType.Add);
            decimal area        = ConsoleIO.EnterArea("Minimum order size is 100 square feet. Enter the area: ", OrderActionType.Add);

            int   ordernumber = manager.Generateordernumber(orderdate);
            Order order       = manager.GenerateOrderInfo(ordernumber, customername, state, producttype, area);

            Console.WriteLine("Below is the New order Summary that you just entered: ");
            ConsoleIO.DisplayOrderDetails(order, orderdate);

            char confirmorder = ConsoleIO.UserchoiceYesorNo("Are you sure you want to place the order? Enter Y or N: ");

            if (char.ToUpper(confirmorder) == 'Y')
            {
                Response addorder = manager.ProcessOrder(order, orderdate, OrderActionType.Add);
                if (addorder.Success)
                {
                    Console.WriteLine("New Order saved successfully!");
                }
                else
                {
                    Console.WriteLine("New Order not saved. Please try again or contact IT!");
                }
            }
            Console.WriteLine("Press any key to continue...");
            Console.ReadKey();
        }
Exemplo n.º 11
0
        public void Execute()
        {
            OrderManager manager = OrderManagerFactory.Create();

            Console.Clear();
            Console.WriteLine("Edit an order");
            Console.WriteLine("-------------------------------------");
            Console.Write("Enter the order date: ");
            string date = Console.ReadLine();

            OrderLookupResponse response;

            if (DateTime.TryParse(date, out DateTime orderDate))
            {
                response = manager.LookupOrderDate(orderDate);

                if (!response.Success)
                {
                    Console.Write("Error: ");
                    Console.WriteLine(response.Message);
                    Console.WriteLine("Press any key to continue...");
                    Console.ReadKey();
                    return;
                }
            }
            else
            {
                Console.WriteLine("Error: The date entered is not a valid date");
                Console.WriteLine("Press any key to continue...");
                Console.ReadKey();
                return;
            }

            Console.Write("Enter the order number:");
            string orderNumCheck = Console.ReadLine();

            if (int.TryParse(orderNumCheck, out int orderNumber))
            {
                response = manager.LookupOrderNumber(orderNumber);

                if (!response.Success)
                {
                    Console.Write("Error: ");
                    Console.WriteLine(response.Message);
                    Console.WriteLine("Press any key to continue...");
                    Console.ReadKey();
                    return;
                }
            }
            else
            {
                Console.WriteLine("Error: Invalid input");
                Console.WriteLine("Press any key to continue...");
                Console.ReadKey();
                return;
            }

            Order order = response.Order;
            ProductLookupResponse products = manager.LookupProducts();
            TaxesLookupResponse   taxes    = manager.LookupTaxes();

            Console.WriteLine("Order details");
            Console.WriteLine("*******************");
            ConsoleIO.DisplayOrderDetails(order);
            Console.WriteLine("*******************");
            Console.WriteLine("Press any key to continue to the edit screen...");
            Console.ReadKey();

            Order orderEdit = manager.EditOrderInformation(order, taxes, products);

            Console.Clear();

            Console.WriteLine("Edited order information");
            ConsoleIO.DisplayOrderDetails(orderEdit);
            Console.Write("Save these changes? Y/N: ");
            while (true)
            {
                string userInput = Console.ReadLine();
                if (userInput == "Y")
                {
                    manager.SaveChanges(orderEdit);
                    Console.WriteLine("Changes have been saved. Press any key to continue...");
                    Console.ReadKey();
                    return;
                }
                else if (userInput == "N")
                {
                    Console.WriteLine("Changes have been discarded. Press any key to continue...");
                    Console.ReadKey();
                    return;
                }
            }
        }