Пример #1
0
        public void TestingOrderRules(int orderNumber, string customerName, string stateAbbreviation, decimal taxrate, string productType, decimal area, decimal costPerSquareFoot, decimal laborCostPerSquareFoot, bool expectedResult)
        {
            DateTime dateTime  = DateTime.Parse("01/01/2020");
            Orders   testOrder = new Orders()
            {
                State = stateAbbreviation, ProductType = productType
            };
            NewOrderResponse response = new NewOrderResponse();

            response = NewOrderRules.NewOrder(dateTime, testOrder.State, testOrder.ProductType);

            Assert.AreEqual(response.Success, expectedResult);
        }
Пример #2
0
        public void Execute()
        {
            Console.Clear();

            IFileOrderRepo fileOrderRepo;
            Orders         newOrder = new Orders();
            Products       products = new Products();

            Console.WriteLine("New Order Form");
            Console.WriteLine("----------------------");

            Console.WriteLine("Enter a date (New orders must be set in future dates): ");
            var userInput = Console.ReadLine();
            var path      = ConsoleIO.UserDateValidateToString(userInput);
            var userDate  = ConsoleIO.UserDateToDateTime(userInput);

            newOrder.CustomerName = ConsoleIO.ValidateCompanyName("Enter company name: ");

            ConsoleIO.DisplayStateAbbreviation(FileTaxRepo.LoadTaxes());
            newOrder.State = ConsoleIO.ValidateStateFormat("Enter a State: (States must be abbreviated)");

            Console.WriteLine("Select A Product: ");
            ConsoleIO.DisplayProducts(FileProductsRepo.LoadProducts());
            newOrder.ProductType = Console.ReadLine();

            newOrder.Area = ConsoleIO.ValidateAreaFormat("What's the Area? (Must be minimum of 100 square feet): ");

            NewOrderResponse response = new NewOrderResponse();

            response = NewOrderRules.NewOrder(userDate, newOrder.State, newOrder.ProductType);

            if (response.Success == false)
            {
                Console.WriteLine(response.Message);
                Console.ReadKey();
            }
            else
            {
                newOrder.TaxRate                = response.Tax;
                newOrder.CostPerSquareFoot      = response.CostPerSquareFoot;
                newOrder.LaborCostPerSquareFoot = response.LaborCostPerSquareFoot;
                newOrder.OrderNumber            = response.OrderNumber;


                Console.Clear();
                Console.WriteLine("Summary");
                Console.WriteLine("-------------------------------------------------------------");

                ConsoleIO.DisplayOrderDetails(new List <Orders> {
                    newOrder
                }, path);


                if (ConsoleIO.Exit("Do you want to SAVE new order? [Y/N]") == false)
                {
                    return;
                }
                else
                {
                    fileOrderRepo = new FileOrderRepo(path);

                    if (!File.Exists(path))
                    {
                        File.Create(path).Dispose();
                        fileOrderRepo.Create(newOrder);
                    }
                    else
                    {
                        fileOrderRepo.Create(newOrder);
                    }
                }

                Console.WriteLine("Press any key to continue...");
                Console.ReadKey();
            }
        }
Пример #3
0
        public void Execute()
        {
            Console.Clear();
            IFileOrderRepo fileOrderRepo;
            Orders         newOrder = new Orders();

            Console.WriteLine("Edit Order Form");
            Console.WriteLine("--------------------------");

            Console.WriteLine("Enter a date: ");

            string userInputDate = Console.ReadLine();

            if (string.IsNullOrEmpty(userInputDate))
            {
                Console.WriteLine("Error: User input was invalid...Hit any key to return to menu...");
                Console.ReadKey();
                return;
            }

            var path = ConsoleIO.UserDateValidateToString(userInputDate);



            OrderManager manager = OrderManagerFactory.Create(path);

            OrderLookupResponse respose = manager.LookupOrders(path);

            if (respose.Success)
            {
                ConsoleIO.DisplayOrderDetails(respose.orders, path);
            }
            else
            {
                Console.WriteLine("An error has occurred: ");
                Console.WriteLine(respose.Message);
            }

            int orderNumber = ConsoleIO.StringToInt("Which order would you like to edit? (Choose order by it's ORDER NUMBER): ");

            Console.Clear();

            fileOrderRepo = new FileOrderRepo(path);
            fileOrderRepo.LoadOrder();

            Orders oldOrder = fileOrderRepo.ReadByOrderNumber(orderNumber);

            ConsoleIO.DisplayOrderDetails(new List <Orders> {
                oldOrder
            }, path);

            string newName = ConsoleIO.ValidateCompanyName("Enter new NAME or hit enter to continue: ");

            if (string.IsNullOrEmpty(newName))
            {
                newOrder.CustomerName = oldOrder.CustomerName;
            }
            else
            {
                newOrder.CustomerName = newName;
            }

            ConsoleIO.DisplayStateAbbreviation(FileTaxRepo.LoadTaxes());
            Console.WriteLine("Enter new STATE or hit enter to continue:");
            Console.WriteLine("REMINDER: States MUST be abbreviated!!");
            string newState = Console.ReadLine();

            if (string.IsNullOrEmpty(newState))
            {
                newOrder.State = oldOrder.State;
            }
            else
            {
                newOrder.State = newState;
            }

            ConsoleIO.DisplayProducts(FileProductsRepo.LoadProducts());
            Console.WriteLine("Enter new PRODUCT TYPE or hit enter to continue:");
            string newProduct = Console.ReadLine();

            if (string.IsNullOrEmpty(newProduct))
            {
                newOrder.ProductType = oldOrder.ProductType;
            }
            else
            {
                newOrder.ProductType = newProduct;
            }

            Console.WriteLine("Enter new AREA or hit enter to continue:");
            Console.WriteLine("REMINDER: Area MUST be at minimum 100");
            string newArea = Console.ReadLine();

            if (string.IsNullOrEmpty(newArea))
            {
                newOrder.Area = oldOrder.Area;
            }
            else
            {
                newOrder.Area = ConsoleIO.StringToDecimal(newArea);
            }

            DateTime.TryParse(userInputDate, CultureInfo.GetCultureInfo("en-us"), DateTimeStyles.NoCurrentDateDefault, out DateTime dateTime);

            NewOrderResponse response = new NewOrderResponse();

            response = NewOrderRules.NewOrder(dateTime, newOrder.State, newOrder.ProductType);

            if (response.Success == false)
            {
                Console.WriteLine(response.Message);
                Console.ReadKey();
            }
            else
            {
                newOrder.TaxRate                = response.Tax;
                newOrder.CostPerSquareFoot      = response.CostPerSquareFoot;
                newOrder.LaborCostPerSquareFoot = response.LaborCostPerSquareFoot;
                newOrder.OrderNumber            = response.OrderNumber;

                Console.Clear();

                Console.WriteLine("Summary");
                Console.WriteLine("-------------------------------------------------------------");

                Console.WriteLine("OLD ORDER");
                Console.WriteLine("*************************************************************");
                ConsoleIO.DisplayOrderDetails(new List <Orders> {
                    oldOrder
                }, path);
                Console.WriteLine("*************************************************************");

                Console.WriteLine("NEW ORDER");
                Console.WriteLine("-------------------------------------------------------------");
                ConsoleIO.DisplayOrderDetails(new List <Orders> {
                    newOrder
                }, path);
                Console.WriteLine("-------------------------------------------------------------");

                if (ConsoleIO.Exit("Do you want to SAVE edited order? [Y/N]") == false)
                {
                    return;
                }
                else
                {
                    fileOrderRepo.Delete(oldOrder.OrderNumber, oldOrder);

                    fileOrderRepo.Create(newOrder);
                }
            }


            Console.WriteLine("Press any key to continue...");
            Console.ReadKey();
        }