コード例 #1
0
        public void Execute(OrderManager manager)
        {
            Console.Clear();
            Console.WriteLine("Look up all orders for date:");
            Console.WriteLine(ConsoleIO.SeparatorBar);
            DateTime orderDate = ConsoleIO.GetRequiredLookUpDateTimeFromUser("Enter order date: ");

            AllOrdersResponse response = manager.RetrieveAllOrders(orderDate);

            if (response.Success)
            {
                foreach (Order order in response.Orders)
                {
                    ConsoleIO.DisplayOrderDetails(order);
                }
            }
            else
            {
                Console.WriteLine("An error occurred: ");
                Console.WriteLine(response.Message);
            }

            Console.WriteLine("Press any key to continue.");
            Console.ReadKey();
        }
コード例 #2
0
        [TestCase("", "OH", 0, "Tile", 100.00, 0, 0, 0, 0, 0, 0, false)]          // invalid CustomerName
        public void CanAddOrderToOrderList(string customerName, string state, decimal taxRate, string productType, decimal area, decimal costPerSquareFoot, decimal laborCostPerSquareFoot, decimal materialCost, decimal laborCost, decimal tax, decimal total, bool expectedResult)
        {
            OrderManager manager = OrderManagerFactory.Create();

            DateTime          date        = new DateTime(2021, 01, 01);
            AllOrdersResponse allResponse = manager.RetrieveAllOrders(new DateTime(2021, 01, 01));
            List <Order>      orderList   = allResponse.Orders;

            Order newOrder = new Order();

            newOrder.OrderDate              = new DateTime(2021, 01, 01);
            newOrder.OrderNumber            = orderList.Max(order => order.OrderNumber) + 1;
            newOrder.CustomerName           = customerName;
            newOrder.State                  = state;
            newOrder.TaxRate                = 0;
            newOrder.ProductType            = productType;
            newOrder.Area                   = area;
            newOrder.CostPerSquareFoot      = costPerSquareFoot;
            newOrder.LaborCostPerSquareFoot = laborCostPerSquareFoot;
            newOrder.MaterialCost           = materialCost;
            newOrder.LaborCost              = laborCost;
            newOrder.Tax   = tax;
            newOrder.Total = total;

            AddOrderResponse       response  = new AddOrderResponse();
            CalculateOrderResponse response2 = manager.CalculateOrder(newOrder);

            if (response2.Success)
            {
                response = manager.AddOrder(response2.Order);
            }

            Assert.AreEqual(expectedResult, response.Success);
        }
コード例 #3
0
        public void Execute()
        {
            OrderManager manager = OrderManagerFactory.Create();

            Console.Clear();
            Console.WriteLine("Load all orders on a given day");
            Console.WriteLine("-------------------------------");

            DateTime inputOrderDate = new DateTime();
            bool     dateVerify     = false;

            do
            {
                Console.WriteLine("Enter the order date in the format MM/DD/YYYY");
                string stringDate = Console.ReadLine();

                try
                {
                    inputOrderDate = DateTime.Parse(stringDate);
                    dateVerify     = true;
                }
                catch
                {
                    Console.WriteLine("Incorrect format");
                    Console.ReadKey();
                    Console.Clear();
                }
            } while (!dateVerify);

            AllOrdersResponse response = manager.AllOrderLookup(inputOrderDate);

            if (response.Success)
            {
                foreach (Order order in response.ListOfOrders)
                {
                    ConsoleIO.DisplayOrderDetails(order);
                    Console.WriteLine("Press any key to continue to next order...");
                    Console.ReadKey();
                }
            }
            else
            {
                Console.WriteLine("An error occurred");
                Console.WriteLine(response.Message);
            }

            Console.WriteLine("\nPress any key to continue");
            Console.ReadKey();
        }
コード例 #4
0
        public void CanDelete(string OrderDate, string NameInput, string StateInput, string ProductInput, decimal AreaInput, bool success)
        {
            OrderManager manager   = OrderManagerFactory.Create();
            DateTime     orderDate = DateTime.Parse(OrderDate);

            PlaceNewOrderResponse response          = manager.NewOrder(orderDate, NameInput, StateInput, ProductInput, AreaInput);
            AllOrdersResponse     preDeleteResponse = manager.AllOrderLookup(orderDate);
            int placedCount = preDeleteResponse.ListOfOrders.Count;

            DeleteOrderResponse responseDelete     = manager.DeleteOrder(response.Order);
            AllOrdersResponse   postDeleteResponse = manager.AllOrderLookup(orderDate);
            int deleteCount = postDeleteResponse.ListOfOrders.Count;

            Assert.AreEqual(success, responseDelete.Success);
            Assert.AreEqual(deleteCount, (placedCount - 1));
        }
コード例 #5
0
        [TestCase(4, false)] // invalid order number not on date -- can't remove
        public void CanRemoveOrder(int orderNumber, bool expectedResult)
        {
            OrderManager      manager     = OrderManagerFactory.Create();
            AllOrdersResponse allResponse = manager.RetrieveAllOrders(new DateTime(2021, 01, 01));
            List <Order>      allOrders   = allResponse.Orders;

            OrderLookupResponse lookupResponse = manager.LookupOrder(new DateTime(2021, 01, 01), orderNumber);
            RemoveOrderResponse removeResponse = new RemoveOrderResponse();

            if (lookupResponse.Success)
            {
                removeResponse = manager.RemoveOrder(lookupResponse.Order, new DateTime(2021, 01, 01));
            }

            Assert.AreEqual(expectedResult, removeResponse.Success);
        }
コード例 #6
0
        public AllOrdersResponse RetrieveAllOrders(DateTime orderDate)
        {
            AllOrdersResponse response  = new AllOrdersResponse();
            List <Order>      orderList = _orderRepository.LoadAllOrders(orderDate);

            if (orderList.Count == 0)
            {
                response.Success = false;
                response.Message = $"No orders have been placed for {orderDate}.";
            }
            else
            {
                response.Success = true;
                response.Orders  = orderList;
            }
            return(response);
        }
コード例 #7
0
        public AllOrdersResponse AllOrderLookup(DateTime inputOrderDate)
        {
            AllOrdersResponse response = new AllOrdersResponse
            {
                ListOfOrders = _orderRepo.LoadAllOrders(inputOrderDate)
            };

            if (response.ListOfOrders == null)
            {
                response.Success = false;
                response.Message = $"There are no orders for {inputOrderDate}";
            }
            else
            {
                response.Success = true;
            }

            return(response);
        }
コード例 #8
0
        public IActionResult GetOrders(string?customerSurname)
        {
            AllOrdersResponse response = new AllOrdersResponse();

            if (string.IsNullOrEmpty(customerSurname))
            {
                response.Response = _dbService.GetAllCustomersOrders();
                return(Ok(response));
            }


            var customer = _dbService.GetCustomerBySurname(customerSurname);

            if (customer == null)
            {
                return(NotFound("Customer with surname " + customerSurname + " doesnt exist"));
            }

            response.Response = _dbService.GetCustomerOrders(customer.IdCustomer);
            return(Ok(response));
        }
コード例 #9
0
        [TestCase("Winter", "OH", "", "50", 2, false)]         // Area < 100
        public void CanEditOrder(string editCustomerName, string editStateAbbreviation, string editProductType, string editAreaInput, int changesMade, bool expectedResult)
        {
            OrderManager manager = OrderManagerFactory.Create();

            AllOrdersResponse allResponse = manager.RetrieveAllOrders(new DateTime(2021, 01, 01));
            List <Order>      orderList   = allResponse.Orders;
            List <Tax>        taxList     = manager.RetrieveAllTax();
            List <Product>    productList = manager.RetrieveAllProducts();
            decimal           editArea;

            OrderLookupResponse lookupResponse = manager.LookupOrder(new DateTime(2021, 01, 01), 1);

            if (lookupResponse.Success)
            {
                if (!string.IsNullOrEmpty(editCustomerName))              // IF THEY DID NOT LEAVE IT BLANK,
                {
                    lookupResponse.Order.CustomerName = editCustomerName; // UPDATE IT TO WHATEVER THEY PUT IN.
                }

                if (!string.IsNullOrEmpty(editStateAbbreviation))
                {
                    lookupResponse.Order.State = editStateAbbreviation.ToUpper();
                }

                if (!string.IsNullOrEmpty(editProductType))
                {
                    lookupResponse.Order.ProductType = editProductType;
                }

                if (!string.IsNullOrEmpty(editAreaInput))               // IF THE AREA STRING IS NOT BLANK
                {
                    if (!decimal.TryParse(editAreaInput, out editArea)) // CHECK TO MAKE SURE THE STRING CAN BE PARSED TO DECIMAL
                    {                                                   // IF IT CAN'T, TELL THEM TO LEAVE IT UNCHANGED OR GIVE A VALID DECIMAL
                        lookupResponse.Success = false;
                    }
                    else
                    {
                        if (editArea < 100) // IF THEY'VE PROVIDED A VALID DECIMAL TO CHANGE IT TO, CHECK IT'S OVER 100.
                        {
                            lookupResponse.Success = false;
                        }
                        lookupResponse.Order.Area = editArea; // UPDATE THE AREA TO WHATEVER THEY PUT IN.
                    }

                    if (changesMade == 0)
                    {
                        AddOrderResponse addResponse1 = new AddOrderResponse();
                        addResponse1 = manager.AddOrder(lookupResponse.Order);

                        Assert.AreEqual(expectedResult, addResponse1.Success);
                    }
                    else if (changesMade != 0)
                    {
                        AddOrderResponse       addResponse2      = new AddOrderResponse();
                        CalculateOrderResponse calculateResponse = manager.CalculateOrder(lookupResponse.Order);

                        if (calculateResponse.Success)
                        {
                            addResponse2 = manager.AddOrder(calculateResponse.Order);
                        }

                        Assert.AreEqual(expectedResult, addResponse2.Success);
                    }
                }
            }
        }