示例#1
0
        public void CanAddOrderToFile()
        {
            if (File.Exists(filepath))
            {
                File.Delete(filepath);
            }
            OrderManager manager  = OrderManagerFactory.Create();
            Order        newOrder = new Order();

            DateTime date = new DateTime(2018, 01, 01);

            newOrder.OrderDate    = date;
            newOrder.CustomerName = "Bill Johnson";
            newOrder.State        = "PA";
            newOrder.ProductType  = "Wood";
            newOrder.Area         = 300;

            manager.AddProductToOrder(newOrder);
            manager.AddStateToOrder(newOrder);

            manager.SaveOrder(newOrder);

            OrderLookupResponse response = manager.LookupOrders(newOrder.OrderDate);

            Assert.AreEqual(2, response.ListOfOrders.Count);
        }
示例#2
0
        public void CanEditOrderFromFile()
        {
            OrderManager manager     = OrderManagerFactory.Create();
            DateTime     date        = new DateTime(2018, 01, 01);
            Order        editedOrder = manager.GetSpecificOrder(date, 1);

            OrderLookupResponse response = manager.LookupOrders(date);

            Order check = response.ListOfOrders[1];

            Assert.AreEqual(1, check.OrderNumber);
            Assert.AreEqual("Bill Johnson", check.CustomerName);
            Assert.AreEqual("PA", check.State);
            Assert.AreEqual(6.75M, check.TaxRate);
            Assert.AreEqual("Wood", check.ProductType);
            Assert.AreEqual(300, check.Area);
            Assert.AreEqual(5.15M, check.CostPerSquareFoot);
            Assert.AreEqual(4.75M, check.LaborCostPerSquareFoot);
            Assert.AreEqual(1545, check.MaterialCost);
            Assert.AreEqual(1425, check.LaborCost);
            Assert.AreEqual(200.475m, check.Tax);
            Assert.AreEqual(3170.475m, check.Total);

            editedOrder.OrderDate    = date;
            editedOrder.CustomerName = "Jake";
            editedOrder.State        = "PA";
            editedOrder.Area         = 350;

            manager.AddProductToOrder(editedOrder);
            manager.AddStateToOrder(editedOrder);

            manager.SaveEditedOrder(editedOrder);
            response = manager.LookupOrders(editedOrder.OrderDate);

            Order check2 = response.ListOfOrders[1];

            Assert.AreEqual(1, check2.OrderNumber);
            Assert.AreEqual("Jake", check2.CustomerName);
            Assert.AreEqual("PA", check2.State);
            Assert.AreEqual(6.75M, check2.TaxRate);
            Assert.AreEqual("Wood", check2.ProductType);
            Assert.AreEqual(350, check2.Area);
            Assert.AreEqual(5.15M, check2.CostPerSquareFoot);
            Assert.AreEqual(4.75M, check2.LaborCostPerSquareFoot);
            Assert.AreEqual(1802.5, check2.MaterialCost);
            Assert.AreEqual(1662.5, check2.LaborCost);
            Assert.AreEqual(233.8875, check2.Tax);
            Assert.AreEqual(3698.8875, check2.Total);
        }
示例#3
0
        public void Execute()
        {
            OrderManager manager  = OrderManagerFactory.Create();
            Order        newOrder = new Order();
            DateTime     date;
            bool         isValid = false;

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

            while (!isValid)
            {
                Console.Clear();
                Console.Write("Enter the date (mm/dd/yyyy) that you would like to create the order for: ");
                //confirm date is valid and in the future.
                if (DateTime.TryParse(Console.ReadLine(), out date))
                {
                    isValid = true;
                }
                else
                {
                    isValid = false;
                }

                if (date > DateTime.Now)
                {
                    isValid            = true;
                    newOrder.OrderDate = date;
                }
                else
                {
                    Console.WriteLine("Error: Must be a valid future date\nPress any key to re enter date");
                    Console.ReadKey();
                    isValid = false;
                }
            }
            isValid = false;


            while (!isValid)
            {
                Console.Clear();
                Console.Write("Please enter the customer name: ");
                //confirm name is not blank
                newOrder.CustomerName = Console.ReadLine().Replace(",", "^");
                if (string.IsNullOrWhiteSpace(newOrder.CustomerName))
                {
                    Console.WriteLine("Error: Name entered is not valid.\nPress any key to re enter name");
                    Console.ReadKey();
                    isValid = false;
                }
                else
                {
                    isValid = true;
                }
            }
            isValid = false;

            while (!isValid)
            {
                Console.Clear();
                ConsoleIO.DisplayStateDetails(manager.ListStates());
                Console.WriteLine("From the list above, please enter the state the customer is located in: ");
                //confirm state exists within repo
                newOrder.State = Console.ReadLine();
                manager.AddStateToOrder(newOrder);
                if (manager.ListStates().Any(o => o.StateAbbreviation == newOrder.State || o.StateName == newOrder.State))
                {
                    isValid = true;
                }
                else
                {
                    Console.WriteLine("Error: State entered is not a valid state.\nPress any key to re enter state");
                    Console.ReadKey();
                    isValid = false;
                }
            }
            isValid = false;

            while (!isValid)
            {
                Console.Clear();
                ConsoleIO.DisplayProductDetails(manager.ListProducts());
                Console.WriteLine("From the list above, please enter the name of the product type you would like: ");
                //confirm product exists within repo
                newOrder.ProductType = Console.ReadLine();
                manager.AddProductToOrder(newOrder);
                if (manager.ListProducts().Any(p => p.ProductType == newOrder.ProductType))
                {
                    isValid = true;
                }
                else
                {
                    Console.WriteLine("Error: Product type entered is not valid.\nPress any key to re enter product type");
                    Console.ReadKey();
                    isValid = false;
                }
            }
            isValid = false;

            while (!isValid)
            {
                Console.Clear();
                Console.Write("please enter the area of your project space in sq feet (must be at least 100 sq. ft.): ");
                int input = 0;
                //confirm area is at least 100 sq ft
                int.TryParse(Console.ReadLine(), out input);
                newOrder.Area = input;
                if (newOrder.Area >= 100)
                {
                    isValid = true;
                }
                else
                {
                    Console.WriteLine("Error: Area entered is not valid.\nPress any key to re enter area");
                    Console.ReadKey();
                    isValid = false;
                }
            }
            isValid = false;

            while (!isValid)
            {
                ConsoleIO.DisplaySpecificOrder(newOrder);
                Console.WriteLine("Would you like to place this order? (Y/N)");
                string answer = Console.ReadLine().ToString();

                switch (answer.ToLower())
                {
                case "y":
                    manager.SaveOrder(newOrder);
                    isValid = true;
                    break;

                case "yes":
                    manager.SaveOrder(newOrder);
                    isValid = true;
                    break;

                case "n":
                    isValid = true;
                    break;

                case "no":
                    isValid = true;
                    break;

                default:
                    isValid = false;
                    break;
                }
            }
        }
示例#4
0
        public void Execute()
        {
            OrderManager manager     = OrderManagerFactory.Create();
            DateTime     orderDate   = new DateTime();
            Order        orderToEdit = new Order();
            int          orderNumber = 0;
            bool         isValid     = false;

            Console.Clear();
            Console.WriteLine("Edit an order");
            Console.WriteLine("*********************************");

            while (!isValid)
            {
                Console.Clear();
                Console.Write("Enter the date (mm/dd/yyyy) of the order to be edited: ");
                //confirm valid date
                if (DateTime.TryParse(Console.ReadLine(), out orderDate))
                {
                    isValid = true;
                }
                else
                {
                    Console.WriteLine("Error: Invalid date entered\nPress any key to re enter date");
                    Console.ReadKey();
                    isValid = false;
                }
            }
            isValid = false;

            Console.Write("Enter the order number of the order to be edited: ");
            int.TryParse(Console.ReadLine(), out orderNumber);

            orderToEdit = manager.GetSpecificOrder(orderDate, orderNumber);

            Console.Write($"Enter customer name (currently: {orderToEdit.CustomerName.Replace("^",",")}): ");
            string name = Console.ReadLine();

            if (!(string.IsNullOrWhiteSpace(name)))
            {
                orderToEdit.CustomerName = name;
            }

            while (!isValid)
            {
                List <Tax> stateList = manager.ListStates();
                ConsoleIO.DisplayStateDetails(stateList);
                Console.Write($"Enter the customer state (currently: {orderToEdit.State}):  ");
                string state = Console.ReadLine();
                if (!(string.IsNullOrWhiteSpace(state)))
                {
                    orderToEdit.State = state;
                    manager.AddStateToOrder(orderToEdit);
                    if (manager.ListStates().Any(o => o.StateAbbreviation == orderToEdit.State || o.StateName == orderToEdit.State))
                    {
                        isValid = true;
                    }
                    else
                    {
                        Console.WriteLine("Error: State entered is not a valid state.\nPress any key to re enter state");
                        Console.ReadKey();
                        isValid = false;
                    }
                }
                else
                {
                    isValid = true;
                }
            }
            isValid = false;

            while (!isValid)
            {
                List <Product> prodList = manager.ListProducts();
                ConsoleIO.DisplayProductDetails(prodList);
                Console.Write($"Enter the product type (currently: {orderToEdit.ProductType}):  ");
                string productType = Console.ReadLine();
                if (!(string.IsNullOrWhiteSpace(productType)))
                {
                    orderToEdit.ProductType = productType;
                    manager.AddProductToOrder(orderToEdit);
                    if (manager.ListProducts().Any(p => p.ProductType == orderToEdit.ProductType))
                    {
                        isValid = true;
                    }
                    else
                    {
                        Console.WriteLine("Error: Product type entered is not valid.\nPress any key to re enter product type");
                        Console.ReadKey();
                        isValid = false;
                    }
                }
                else
                {
                    isValid = true;
                }
            }
            isValid = false;

            while (!isValid)
            {
                Console.Write($"Enter the area (currently: {orderToEdit.Area}):  ");
                int area = 0;
                int.TryParse(Console.ReadLine(), out area);
                if (area != 0)
                {
                    orderToEdit.Area = area;
                    if (orderToEdit.Area >= 100)
                    {
                        isValid = true;
                    }
                    else
                    {
                        Console.WriteLine("Error: Area entered is not valid.\nPress any key to re enter area");
                        Console.ReadKey();
                        isValid = false;
                    }
                }
                else
                {
                    isValid = true;
                }
            }
            isValid = false;

            while (!isValid)
            {
                ConsoleIO.DisplaySpecificOrder(orderToEdit);
                Console.WriteLine("Would you like to save this order? Y/N");
                string answer = Console.ReadLine().ToString();

                switch (answer.ToLower())
                {
                case "y":
                    manager.SaveEditedOrder(orderToEdit);
                    isValid = true;
                    break;

                case "yes":
                    manager.SaveEditedOrder(orderToEdit);
                    isValid = true;
                    break;

                case "n":
                    isValid = true;
                    break;

                case "no":
                    isValid = true;
                    break;

                default:
                    isValid = false;
                    break;
                }
            }
        }