public void TestOrderLookup()
        {
            OrderManager manager = new OrderManager(new OrderTestRepository());

            OrderAddToListResponse response = new OrderAddToListResponse();

            manager.LookupOrder(1, "06/01/2013");

            Assert.That(response.Success = true);
        }
        public void TestAddOrder()
        {
            OrderManager manager = new OrderManager(new OrderTestRepository());

            OrderAddToListResponse response = new OrderAddToListResponse();

            manager.AddOrder("06/01/2020", "Wise", "OH", "Wood", 100.00m);

            Assert.That(response.Success = true);
        }
        public void TestOrderExist()
        {
            OrderManager manager = new OrderManager(new OrderProdRepository());

            OrderAddToListResponse response = new OrderAddToListResponse();

            manager.CheckOrderExist(1, "06/01/2013");

            Assert.That(response.Success = true);
        }
        public Order AddOrder(string date, string customerName, string state,
                              string productType, decimal area, bool confirmOrder)
        {
            var givenDate = date.Replace("/", "");

            if (!orderList.Any(x => x.Date == givenDate))
            {
                OrderAddToListResponse addToList = new OrderAddToListResponse();

                Order order;
                var   newOrderNumber      = 1;
                var   customerNameInput   = customerName;
                var   stateInput          = taxesFile.StateAbbreviation(state);
                var   stateName           = taxesFile.StateName(stateInput); //returns full state name
                var   taxRateInput        = taxesFile.TaxRate(stateInput);
                var   productTypeInput    = productsFile.ProductType(productType);
                var   areaInput           = area;
                var   costPerSqInput      = productsFile.CostPerSquareFoot(productTypeInput);
                var   laborCostPerSqInput = productsFile.LaborCostPerSquareFoot(productTypeInput);
                var   materialCost        = areaInput * costPerSqInput;
                var   laborCost           = areaInput * laborCostPerSqInput;
                var   tax   = (materialCost + laborCost) * (taxRateInput / 100);
                var   total = materialCost + laborCost + tax;


                if (!Order.TryParse(newOrderNumber, givenDate, customerNameInput, stateInput, stateName, taxRateInput, productTypeInput,
                                    areaInput, costPerSqInput, laborCostPerSqInput, materialCost, laborCost, tax, total, out order))
                {
                    return(addToList.Order = null);
                }
                else if (confirmOrder)
                {
                    orderList.Add(order);
                }

                return(order);
            }
            else if (orderList.Any(x => x.Date == givenDate)) //Orders file exist, must add new OrderNumber
            {
                OrderAddToListResponse addToList = new OrderAddToListResponse();

                Order order;
                var   maxIdPlusOne        = orderList.Max(x => x.OrderNumber) + 1;
                var   customerNameInput   = customerName;
                var   stateInput          = taxesFile.StateAbbreviation(state);
                var   stateName           = taxesFile.StateName(stateInput);
                var   taxRateInput        = taxesFile.TaxRate(stateInput);
                var   productTypeInput    = productsFile.ProductType(productType);
                var   areaInput           = area;
                var   costPerSqInput      = productsFile.CostPerSquareFoot(productTypeInput);
                var   laborCostPerSqInput = productsFile.LaborCostPerSquareFoot(productTypeInput);
                var   materialCost        = areaInput * costPerSqInput;
                var   laborCost           = areaInput * laborCostPerSqInput;
                var   tax   = (materialCost + laborCost) * (taxRateInput / 100);
                var   total = materialCost + laborCost + tax;


                if (!Order.TryParse(maxIdPlusOne, givenDate, customerNameInput, stateInput, stateName, taxRateInput, productTypeInput,
                                    areaInput, costPerSqInput, laborCostPerSqInput, materialCost, laborCost, tax, total, out order))
                {
                    return(addToList.Order = null);
                }
                else if (confirmOrder)
                {
                    orderList.Add(order);
                }
                else if (!confirmOrder)
                {
                    return(order);
                }
            }

            return(orderList.Where(x => x.Date == givenDate).FirstOrDefault());
        }
Ejemplo n.º 5
0
        //if date not exist > create new file, else if exist use file. OrderNumber cannot be used more than once.
        public OrderAddToListResponse AddOrder(string date, string customerName, string state,
                                               string productType, decimal area)
        {
            Validation validate = new Validation();

            OrderDateExist dateExist = new OrderDateExist();

            dateExist.IsDateFormatOk     = validate.ValidFormat(date);
            dateExist.IsFutureDate       = validate.FutureDate(date);
            dateExist.IsNameCorrect      = validate.CharactersValidation(customerName);
            dateExist.IsAreaCorrect      = validate.Area(area);
            dateExist.DoesOrderDateExist = _orderRepository.FindDate(date);

            OrderAddToListResponse response = new OrderAddToListResponse();

            //response.Order = _orderRepository.LoadOrder(orderNumber);

            if (!dateExist.IsDateFormatOk)
            {
                response.Success = false;
                response.Message = "Date format is invalid";
                return(response);
            }

            if (!dateExist.IsFutureDate)
            {
                response.Success = false;
                response.Message = "Date is not future date";
                return(response);
            }

            if (!dateExist.IsNameCorrect)
            {
                response.Success = false;
                response.Message = "Invalid characters for name";
                return(response);
            }

            if (!dateExist.IsAreaCorrect)
            {
                response.Success = false;
                response.Message = "Area is not over 100.00";
                return(response);
            }

            //Date not exist and no ordernumber OR date exist and no order number
            if (!dateExist.DoesOrderDateExist && response.Order == null ||
                dateExist.DoesOrderDateExist && response.Order == null)
            {
                bool confirmOrder = false;

                response.Order = _orderRepository.AddOrder(date, customerName, state,
                                                           productType, area, confirmOrder);

                return(response);
            }

            else
            {
                response.Success = false;
                response.Message = "An error occured, please contact IT.";
            }

            return(response);
        }
        public Order AddOrder(string date, string customerName, string state,
                              string productType, decimal area, bool confirmOrder)
        {
            var    givenDate     = date.Replace("/", "");
            string orderFileName = $"{fp.filePathLoc}\\Orders_{givenDate}.txt";
            string header        = "OrderNumber,CustomerName,State,TaxRate,ProductType,Area,CostPerSquareFoot," +
                                   "LaborCostPerSquareFoot,MaterialCost,LaborCost,Tax,Total";
            List <Order> newFileList = new List <Order>();

            if (!orderList.Any(x => x.Date == givenDate)) //Orders file not exist, create new OrderNumber
            {
                OrderAddToListResponse addToList = new OrderAddToListResponse();

                Order order;
                var   newOrderNumber      = 1;
                var   customerNameInput   = customerName;
                var   stateInput          = taxesFile.StateAbbreviation(state);
                var   stateName           = taxesFile.StateName(stateInput); //returns full state name
                var   taxRateInput        = taxesFile.TaxRate(stateInput);
                var   productTypeInput    = productsFile.ProductType(productType);
                var   areaInput           = area;
                var   costPerSqInput      = productsFile.CostPerSquareFoot(productTypeInput);
                var   laborCostPerSqInput = productsFile.LaborCostPerSquareFoot(productTypeInput);
                var   materialCost        = areaInput * costPerSqInput;
                var   laborCost           = areaInput * laborCostPerSqInput;
                var   tax   = (materialCost + laborCost) * (taxRateInput / 100);
                var   total = materialCost + laborCost + tax;


                if (!Order.TryParse(newOrderNumber, givenDate, customerNameInput, stateInput, stateName, taxRateInput, productTypeInput,
                                    areaInput, costPerSqInput, laborCostPerSqInput, materialCost,
                                    laborCost, tax, total, out order))
                {
                    return(addToList.Order = null);
                }
                else if (confirmOrder)
                {
                    newFileList.Add(order);

                    List <string> ordersToSave = new List <string>()
                    {
                        header
                    };
                    ordersToSave.AddRange(newFileList.Select(x => x.ToString()).ToList());

                    File.AppendAllLines(orderFileName, ordersToSave);
                }

                return(order);
            }
            else if (orderList.Any(x => x.Date == givenDate)) //Orders file exist, must add max OrderNumber + 1
            {
                OrderAddToListResponse addToList = new OrderAddToListResponse();

                Order order;
                var   maxIdPlusOne        = orderList.Max(x => x.OrderNumber) + 1;
                var   customerNameInput   = customerName;
                var   stateInput          = taxesFile.StateAbbreviation(state);
                var   stateName           = taxesFile.StateName(stateInput);
                var   taxRateInput        = taxesFile.TaxRate(stateInput);
                var   productTypeInput    = productsFile.ProductType(productType);
                var   areaInput           = area;
                var   costPerSqInput      = productsFile.CostPerSquareFoot(productTypeInput);
                var   laborCostPerSqInput = productsFile.LaborCostPerSquareFoot(productTypeInput);
                var   materialCost        = areaInput * costPerSqInput;
                var   laborCost           = areaInput * laborCostPerSqInput;
                var   tax   = (materialCost + laborCost) * (taxRateInput / 100);
                var   total = materialCost + laborCost + tax;


                if (!Order.TryParse(maxIdPlusOne, givenDate, customerNameInput, stateInput, stateName, taxRateInput, productTypeInput,
                                    areaInput, costPerSqInput, laborCostPerSqInput, materialCost,
                                    laborCost, tax, total, out order))
                {
                    return(addToList.Order = null);
                }
                else if (confirmOrder)
                {
                    newFileList.Add(order);

                    List <string> ordersToSave = new List <string>()
                    {
                        header
                    };
                    ordersToSave.AddRange(newFileList.Select(x => x.ToString()).ToList());

                    File.AppendAllLines(orderFileName, ordersToSave.Skip(1));
                }
                else if (!confirmOrder)
                {
                    return(order);
                }
            }

            return(newFileList.Where(x => x.Date == givenDate).FirstOrDefault());
        }