public void CanAddOrderToFile() { if (File.Exists(filepath)) { File.Delete(filepath); } OrderManager manager = OrderManagerFactory.Create(); Order newOrder = new Order(); DateTime date = new DateTime(2018, 01, 01); newOrder.OrderDate = date; newOrder.CustomerName = "Bill Johnson"; newOrder.State = "PA"; newOrder.ProductType = "Wood"; newOrder.Area = 300; manager.AddProductToOrder(newOrder); manager.AddStateToOrder(newOrder); manager.SaveOrder(newOrder); OrderLookupResponse response = manager.LookupOrders(newOrder.OrderDate); Assert.AreEqual(2, response.ListOfOrders.Count); }
public void CanEditOrderFromFile() { OrderManager manager = OrderManagerFactory.Create(); DateTime date = new DateTime(2018, 01, 01); Order editedOrder = manager.GetSpecificOrder(date, 1); OrderLookupResponse response = manager.LookupOrders(date); Order check = response.ListOfOrders[1]; Assert.AreEqual(1, check.OrderNumber); Assert.AreEqual("Bill Johnson", check.CustomerName); Assert.AreEqual("PA", check.State); Assert.AreEqual(6.75M, check.TaxRate); Assert.AreEqual("Wood", check.ProductType); Assert.AreEqual(300, check.Area); Assert.AreEqual(5.15M, check.CostPerSquareFoot); Assert.AreEqual(4.75M, check.LaborCostPerSquareFoot); Assert.AreEqual(1545, check.MaterialCost); Assert.AreEqual(1425, check.LaborCost); Assert.AreEqual(200.475m, check.Tax); Assert.AreEqual(3170.475m, check.Total); editedOrder.OrderDate = date; editedOrder.CustomerName = "Jake"; editedOrder.State = "PA"; editedOrder.Area = 350; manager.AddProductToOrder(editedOrder); manager.AddStateToOrder(editedOrder); manager.SaveEditedOrder(editedOrder); response = manager.LookupOrders(editedOrder.OrderDate); Order check2 = response.ListOfOrders[1]; Assert.AreEqual(1, check2.OrderNumber); Assert.AreEqual("Jake", check2.CustomerName); Assert.AreEqual("PA", check2.State); Assert.AreEqual(6.75M, check2.TaxRate); Assert.AreEqual("Wood", check2.ProductType); Assert.AreEqual(350, check2.Area); Assert.AreEqual(5.15M, check2.CostPerSquareFoot); Assert.AreEqual(4.75M, check2.LaborCostPerSquareFoot); Assert.AreEqual(1802.5, check2.MaterialCost); Assert.AreEqual(1662.5, check2.LaborCost); Assert.AreEqual(233.8875, check2.Tax); Assert.AreEqual(3698.8875, check2.Total); }
public void Execute() { OrderManager manager = OrderManagerFactory.Create(); Order newOrder = new Order(); DateTime date; bool isValid = false; Console.Clear(); Console.WriteLine("Add an order"); Console.WriteLine("*********************************"); while (!isValid) { Console.Clear(); Console.Write("Enter the date (mm/dd/yyyy) that you would like to create the order for: "); //confirm date is valid and in the future. if (DateTime.TryParse(Console.ReadLine(), out date)) { isValid = true; } else { isValid = false; } if (date > DateTime.Now) { isValid = true; newOrder.OrderDate = date; } else { Console.WriteLine("Error: Must be a valid future date\nPress any key to re enter date"); Console.ReadKey(); isValid = false; } } isValid = false; while (!isValid) { Console.Clear(); Console.Write("Please enter the customer name: "); //confirm name is not blank newOrder.CustomerName = Console.ReadLine().Replace(",", "^"); if (string.IsNullOrWhiteSpace(newOrder.CustomerName)) { Console.WriteLine("Error: Name entered is not valid.\nPress any key to re enter name"); Console.ReadKey(); isValid = false; } else { isValid = true; } } isValid = false; while (!isValid) { Console.Clear(); ConsoleIO.DisplayStateDetails(manager.ListStates()); Console.WriteLine("From the list above, please enter the state the customer is located in: "); //confirm state exists within repo newOrder.State = Console.ReadLine(); manager.AddStateToOrder(newOrder); if (manager.ListStates().Any(o => o.StateAbbreviation == newOrder.State || o.StateName == newOrder.State)) { isValid = true; } else { Console.WriteLine("Error: State entered is not a valid state.\nPress any key to re enter state"); Console.ReadKey(); isValid = false; } } isValid = false; while (!isValid) { Console.Clear(); ConsoleIO.DisplayProductDetails(manager.ListProducts()); Console.WriteLine("From the list above, please enter the name of the product type you would like: "); //confirm product exists within repo newOrder.ProductType = Console.ReadLine(); manager.AddProductToOrder(newOrder); if (manager.ListProducts().Any(p => p.ProductType == newOrder.ProductType)) { isValid = true; } else { Console.WriteLine("Error: Product type entered is not valid.\nPress any key to re enter product type"); Console.ReadKey(); isValid = false; } } isValid = false; while (!isValid) { Console.Clear(); Console.Write("please enter the area of your project space in sq feet (must be at least 100 sq. ft.): "); int input = 0; //confirm area is at least 100 sq ft int.TryParse(Console.ReadLine(), out input); newOrder.Area = input; if (newOrder.Area >= 100) { isValid = true; } else { Console.WriteLine("Error: Area entered is not valid.\nPress any key to re enter area"); Console.ReadKey(); isValid = false; } } isValid = false; while (!isValid) { ConsoleIO.DisplaySpecificOrder(newOrder); Console.WriteLine("Would you like to place this order? (Y/N)"); string answer = Console.ReadLine().ToString(); switch (answer.ToLower()) { case "y": manager.SaveOrder(newOrder); isValid = true; break; case "yes": manager.SaveOrder(newOrder); isValid = true; break; case "n": isValid = true; break; case "no": isValid = true; break; default: isValid = false; break; } } }
public void Execute() { OrderManager manager = OrderManagerFactory.Create(); DateTime orderDate = new DateTime(); Order orderToEdit = new Order(); int orderNumber = 0; bool isValid = false; Console.Clear(); Console.WriteLine("Edit an order"); Console.WriteLine("*********************************"); while (!isValid) { Console.Clear(); Console.Write("Enter the date (mm/dd/yyyy) of the order to be edited: "); //confirm valid date if (DateTime.TryParse(Console.ReadLine(), out orderDate)) { isValid = true; } else { Console.WriteLine("Error: Invalid date entered\nPress any key to re enter date"); Console.ReadKey(); isValid = false; } } isValid = false; Console.Write("Enter the order number of the order to be edited: "); int.TryParse(Console.ReadLine(), out orderNumber); orderToEdit = manager.GetSpecificOrder(orderDate, orderNumber); Console.Write($"Enter customer name (currently: {orderToEdit.CustomerName.Replace("^",",")}): "); string name = Console.ReadLine(); if (!(string.IsNullOrWhiteSpace(name))) { orderToEdit.CustomerName = name; } while (!isValid) { List <Tax> stateList = manager.ListStates(); ConsoleIO.DisplayStateDetails(stateList); Console.Write($"Enter the customer state (currently: {orderToEdit.State}): "); string state = Console.ReadLine(); if (!(string.IsNullOrWhiteSpace(state))) { orderToEdit.State = state; manager.AddStateToOrder(orderToEdit); if (manager.ListStates().Any(o => o.StateAbbreviation == orderToEdit.State || o.StateName == orderToEdit.State)) { isValid = true; } else { Console.WriteLine("Error: State entered is not a valid state.\nPress any key to re enter state"); Console.ReadKey(); isValid = false; } } else { isValid = true; } } isValid = false; while (!isValid) { List <Product> prodList = manager.ListProducts(); ConsoleIO.DisplayProductDetails(prodList); Console.Write($"Enter the product type (currently: {orderToEdit.ProductType}): "); string productType = Console.ReadLine(); if (!(string.IsNullOrWhiteSpace(productType))) { orderToEdit.ProductType = productType; manager.AddProductToOrder(orderToEdit); if (manager.ListProducts().Any(p => p.ProductType == orderToEdit.ProductType)) { isValid = true; } else { Console.WriteLine("Error: Product type entered is not valid.\nPress any key to re enter product type"); Console.ReadKey(); isValid = false; } } else { isValid = true; } } isValid = false; while (!isValid) { Console.Write($"Enter the area (currently: {orderToEdit.Area}): "); int area = 0; int.TryParse(Console.ReadLine(), out area); if (area != 0) { orderToEdit.Area = area; if (orderToEdit.Area >= 100) { isValid = true; } else { Console.WriteLine("Error: Area entered is not valid.\nPress any key to re enter area"); Console.ReadKey(); isValid = false; } } else { isValid = true; } } isValid = false; while (!isValid) { ConsoleIO.DisplaySpecificOrder(orderToEdit); Console.WriteLine("Would you like to save this order? Y/N"); string answer = Console.ReadLine().ToString(); switch (answer.ToLower()) { case "y": manager.SaveEditedOrder(orderToEdit); isValid = true; break; case "yes": manager.SaveEditedOrder(orderToEdit); isValid = true; break; case "n": isValid = true; break; case "no": isValid = true; break; default: isValid = false; break; } } }