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()); }
//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()); }