Exemple #1
0
        public void CanOnlyAssignValidOrderNumbers(string date, bool expected)
        {
            OrderManager           manager  = OrderManagerFactory.Create();
            Order                  order    = new Order();
            GetDateResponse        response = manager.FindOrdersOnDate(date, FunctionType.DisplayOrders);
            List <Order>           orders   = manager.RetrieveOrdersOnDate(response);
            GetOrderNumberResponse number   = manager.AssignOrderNumber(orders);

            order.OrderNumber = number.OrderNumber;
            bool actual = (order.OrderNumber == 1 && orders == null || order.OrderNumber == orders.Max(o => o.OrderNumber) + 1);

            Assert.AreEqual(expected, actual);
        }
        public void Execute()
        {
            DateTime orderInputDate;
            string   orderStringDate;
            Order    newOrder     = new Order();
            string   stateInput   = "";
            string   productInput = "";
            string   confirmOrderinput;
            bool     addOrder = false;


            Console.Clear();
            Console.WriteLine("Add Order");

            orderInputDate = DateTime.Parse(ConsoleIO.GetFutureDateFromUser("Enter a future date for this new order: "));

            orderStringDate    = orderInputDate.ToString("MMddyyyy");
            newOrder.OrderDate = orderInputDate;

            var getOrders = manager.LookupAddOrder(newOrder.OrderDate);


            newOrder.OrderNumber  = OrderManager.AssignOrderNumber(manager.LookupAddOrder(newOrder.OrderDate));
            newOrder.CustomerName = ConsoleIO.GetRequiredStringFromUser("Enter Customer Name: ");

            GetRequiredStateFromUser("Enter a state for this order:", stateInput);
            newOrder.State   = taxResponse.StateTaxInfo.StateAbbreviation;
            newOrder.TaxRate = taxResponse.StateTaxInfo.TaxRate;

            GetRequiredProductTypeFromUser("Enter a product type for this Customer's order. (Carpet, Laminate, Tile, Wood)", productInput);
            newOrder.ProductType            = productResponse.ProductInfo.ProductType;
            newOrder.CostPerSquareFoot      = productResponse.ProductInfo.CostPerSquareFoot;
            newOrder.LaborCostPerSquareFoot = productResponse.ProductInfo.LaborCostPerSquareFoot;

            newOrder.Area = ConsoleIO.GetRequiredAreaFromUser("Enter total area of order. Must be greater than 100.");

            newOrder.LaborCost    = newOrder.Area * newOrder.LaborCostPerSquareFoot;
            newOrder.MaterialCost = newOrder.Area * newOrder.CostPerSquareFoot;
            newOrder.Tax          = ((newOrder.MaterialCost + newOrder.LaborCost) * (newOrder.TaxRate / 100));
            newOrder.Total        = (newOrder.MaterialCost + newOrder.LaborCost + newOrder.Tax);

            while (addOrder == false)
            {
                Console.Clear();
                Console.WriteLine(ConsoleIO.OrderFormat, newOrder.OrderNumber, orderInputDate.ToShortDateString(), newOrder.CustomerName, newOrder.State, newOrder.ProductType, newOrder.MaterialCost, newOrder.LaborCost, newOrder.Tax, newOrder.Total);
                Console.WriteLine("Would you like to add this order? Enter Y or N.");
                confirmOrderinput = Console.ReadLine();

                if (confirmOrderinput.ToUpper() == "N")
                {
                    Console.WriteLine("Order discarded");
                    Console.WriteLine("Press any key to return to main menu");
                    Console.ReadLine();
                    addOrder = true;
                }
                if (confirmOrderinput.ToUpper() == "Y")
                {
                    ProcessOrder(newOrder);
                    addOrder = true;
                }
            }
        }
Exemple #3
0
        public void Execute()
        {
            OrderManager manager = OrderManagerFactory.Create();

            bool            validInput = false;
            GetDateResponse response   = null;

            while (!validInput)
            {
                string date = Query.GetDateFromUser();
                response = manager.FindOrdersOnDate(date, FunctionType.AddOrder);
                if (response.Success)
                {
                    validInput = true;
                }
                else
                {
                    Alert.AlertUserInvalidInput(response);
                }
            }

            if (response.FileExists)
            {
                List <Order> ordersFromFile = manager.RetrieveOrdersOnDate(response);

                Order order          = CreateNewOrder();
                bool  confirmingSave = true;
                bool  willSave       = false;

                while (confirmingSave)
                {
                    Console.Clear();
                    order.AddOrderFormat();
                    willSave = Prompt.ConfirmChanges(1);
                    if (!willSave)
                    {
                        confirmingSave = Prompt.IsUserSure();
                    }
                    else
                    {
                        confirmingSave = false;
                    }
                }

                if (willSave)
                {
                    GetOrderNumberResponse saveResponse = manager.AssignOrderNumber(ordersFromFile);

                    if (saveResponse.Success)
                    {
                        order.OrderNumber = saveResponse.OrderNumber;
                        ordersFromFile.Add(order);
                        manager.SaveOrdersToFile(ordersFromFile, response.FilePath);
                    }
                    else
                    {
                        Alert.AlertUserInvalidInput(saveResponse);
                    }
                }
            }
            else
            {
                List <Order> newOrderList = new List <Order>();

                Order order          = CreateNewOrder();
                bool  confirmingSave = true;
                bool  willSave       = false;

                while (confirmingSave)
                {
                    Console.Clear();
                    order.AddOrderFormat();
                    willSave = Prompt.ConfirmChanges(1);
                    if (!willSave)
                    {
                        confirmingSave = Prompt.IsUserSure();
                    }
                    else
                    {
                        confirmingSave = false;
                    }
                }

                if (willSave)
                {
                    var fs = File.Create(response.FilePath);
                    fs.Close();
                    order.OrderNumber = 1;
                    newOrderList.Add(order);
                    manager.SaveOrdersToFile(newOrderList, response.FilePath);
                }
            }
        }