コード例 #1
0
        public void CanGetStateTaxInfo()
        {
            FileTaxRepo repo   = new FileTaxRepo(_liveStateTaxFile);
            var         states = repo.GetStateTaxes();

            Assert.AreEqual(4, states.Count());
        }
コード例 #2
0
ファイル: NewOrderRules.cs プロジェクト: Cmoesta91/Portfolio
        public static NewOrderResponse NewOrder(DateTime dateTime, string state, string productType)
        {
            NewOrderResponse response  = new NewOrderResponse();
            IFileOrderRepo   orderRepo = new FileOrderRepo(dateTime.Day.ToString() + dateTime.Month.ToString() + dateTime.Year.ToString());
            List <Taxes>     taxes     = FileTaxRepo.LoadTaxes();
            List <Products>  products  = FileProductsRepo.LoadProducts();

            if (dateTime <= DateTime.Now)
            {
                response.Success = false;
                response.Message = "Error: New Orders must be set in the future";
                return(response);
            }

            bool stateVerification = taxes.Any(t => state.Contains(t.StateAbbreviation));

            if (stateVerification == false)
            {
                response.Success = false;
                response.Message = "Error: We do not sell in inputed state";
                return(response);
            }

            bool productVerification = products.Any(p => productType.Contains(p.ProductsType));

            if (productVerification == false)
            {
                response.Success = false;
                response.Message = "Error: Input for products was invalid";
                return(response);
            }
            else
            {
                response.Success                = true;
                response.OrderNumber            = orderRepo.NextOrderNumber();
                response.Date                   = dateTime;
                response.StringDate             = dateTime.ToString();
                response.State                  = state;
                response.Tax                    = taxes.FirstOrDefault(t => t.StateAbbreviation == response.State).TaxRate;
                response.Product                = productType;
                response.CostPerSquareFoot      = products.FirstOrDefault(p => p.ProductsType == response.Product).CostPerSquareFoot;
                response.LaborCostPerSquareFoot = products.FirstOrDefault(p => p.ProductsType == response.Product).LaborCostPerSquareFoot;
                return(response);
            }
        }
コード例 #3
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();
            }
        }
コード例 #4
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();
        }