public List<Order> LoadOrders(DateTime orderDate) { string path = CreateFilePathFor(orderDate); List<Order> theOrders = new List<Order>(); if (File.Exists(path)) { var reader = File.ReadAllLines(path); for (int i = 1; i < reader.Length; i++) { var columns = reader[i].Split(','); var order = new Order(); order.OrderNumber = int.Parse(columns[0]); order.CustomerName = columns[1]; order.State = columns[2]; order.TaxRate = decimal.Parse(columns[3]); order.ProductType = columns[4]; order.Area = decimal.Parse(columns[5]); order.CostPerSquareFoot = decimal.Parse(columns[6]); order.LaborCostPerSquareFoot = decimal.Parse(columns[7]); order.MaterialCost = decimal.Parse(columns[8]); order.LaborCost = decimal.Parse(columns[9]); order.Tax = decimal.Parse(columns[10]); order.Total = decimal.Parse(columns[11]); theOrders.Add(order); } } else { return null; } return theOrders; }
public void CanAddOrder() { var repo = new OrderRepository(); DateTime orderDate = new DateTime(2015,05,03); Order orderToAdd = new Order() { OrderNumber = 3, CustomerName = "Wise", State = "OH", TaxRate = 6.25M, ProductType = "Wood", Area = 100.00M, CostPerSquareFoot = 5.15M, LaborCostPerSquareFoot = 4.75M, MaterialCost = 515.00M, LaborCost = 475.00M, Tax = 61.88M, Total = 1051.88M }; //public void OverwriteFile(List<Order> orders, DateTime orderDate) var ordersList = repo.LoadOrders(orderDate); repo.Add(orderToAdd, orderDate); //repo.OverwriteFile(ordersList, orderDate); Assert.AreEqual(3, ordersList[ordersList.Count-1].OrderNumber); Assert.AreEqual("Wise", ordersList[ordersList.Count - 1].CustomerName); }
public Order DisplayOrderInformation(string file, int orderNumber) { var ops = new OrderOperations(); //string formattedDate = GetOrderDateFromUser(); //int num = GetOrderNumberFromUser(); var response = ops.GetOrder(file, orderNumber); //_currentOrder = response.OrderInfo; if (response.Success) { _currentOrder = response.OrderInfo; PrintOrderInformation(response.OrderInfo); return _currentOrder; } else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("\tError occurred!!"); Console.WriteLine(response.Message); Console.WriteLine("\tPress enter to continue..."); log.ErrorMessage = "That was not a valid order UI:DisplayOrdererInfo...."; ops.CallingErrorLogRepository(log.ErrorMessage); Console.ReadLine(); //GetOrderNumberFromUser();//******************** return null; } }
public void Delete(Order orderToDelete, DateTime orderDate) { var orders = LoadOrders(orderDate); orders.Remove(orders.First(o => o.OrderNumber == orderToDelete.OrderNumber)); OverwriteFile(orders, orderDate); }
public void Execute() { DisplayOrderWorkflow dowf = new DisplayOrderWorkflow(); formattedDate = dowf.GetOrderDateFromUser(); orderNumber = dowf.GetOrderNumberFromUser(); _currentOrder = dowf.DisplayOrderInformation(formattedDate, orderNumber); ConfirmDeletion(); }
public void Add(Order orderToAdd, DateTime orderDate) { var orders = LoadOrders(orderDate); if (orders == null) { orders = new List<Order>(); } orders.Add(orderToAdd); OverwriteFile(orders, orderDate); }
public Order EditOrderCalculations(Order editingOrder) { var taxMgr = ManagerFactory.CreateTaxManager(); editingOrder.TaxRate = taxMgr.GetRate(editingOrder.State); editingOrder.MaterialCost = editingOrder.CostPerSquareFoot*editingOrder.Area; editingOrder.LaborCost = editingOrder.LaborCostPerSquareFoot*editingOrder.Area; var subTotal = editingOrder.MaterialCost + editingOrder.LaborCost; editingOrder.Tax = editingOrder.TaxRate*subTotal; editingOrder.Total = subTotal + editingOrder.Tax; return editingOrder; }
public void RemoveOrderToConfirm(Order orderToRemove, DateTime removeDate) { var confirmOrder = ""; bool validEntry = true; do { Console.WriteLine("Would you like to delete this order? Please enter Yes or No."); Console.WriteLine("========| Order {0} | ========",orderToRemove.OrderNumber); Console.WriteLine("Product Type: {0}", orderToRemove.ProductType); Console.WriteLine("Amount Ordered: {0}sqft", orderToRemove.Area); Console.WriteLine("Material Cost: {0:c}", orderToRemove.MaterialCost); Console.WriteLine("Labor Cost: {0:c}", orderToRemove.LaborCost); Console.WriteLine("Tax: {0:c}", orderToRemove.Tax); Console.WriteLine("Total: {0:c}", orderToRemove.Total); confirmOrder = Console.ReadLine(); confirmOrder = confirmOrder.Substring(0, 1).ToUpper(); if (confirmOrder != "Y" && confirmOrder != "N") { Console.WriteLine("That is an invalid entry. Please input yes or no."); validEntry = false; } if (string.IsNullOrEmpty(confirmOrder)) { Console.WriteLine("You must make a selection. Please input Yes or No."); validEntry = false; } else { validEntry = true; } } while (!validEntry); if (confirmOrder == "Y") { orderOps.RemoveOrder(orderToRemove, removeDate); if (response.Success) { Console.WriteLine("Order #: {0} has been successfully removed.", orderToRemove.OrderNumber); } else { Console.WriteLine(response.Message); } } }
public Response<Order> AddNewOrder(Order orderToAdd, DateTime orderDate) { var repo = new OrderRepository(); var response = new Response<Order>(); try { repo.Add(orderToAdd, orderDate); response.Success = true; response.Data = orderToAdd; } catch (Exception) { response.Success = false; response.Message = "The order could not be added. Please verify that inputs are correct."; } return response; }
/// <summary> /// /// </summary>checks to see if a date file already exists /// <param name="currentDate"></param> /// <returns></returns> public string CheckFileDate(DateTime currentDate) { string formattedDate = _repo.GetOrderFile(currentDate); List<Order> order = new List<Order>(); Response response = new Response(); Order newOrder = new Order(); if (!File.Exists(formattedDate)) { //newOrder.OrderNumber = 1; string formattedDateNew = _repo.CreateFile(currentDate); return formattedDateNew; } else { //_repo.WriteNewLine(newOrder, formattedDate); return formattedDate; } // Console.WriteLine("That date does not match a a date in our files"); //write this error to the error log }
public Response<Order> RemovePreEditedOrder(Order orderBeingRemoved, DateTime editDate) { var repo = new OrderRepository(); var response = new Response<Order>(); try { repo.Delete(orderBeingRemoved, editDate); response.Success = true; } catch (Exception ex) { response.Success = false; response.Message = "Order could not be deleted; please enter information again."; } return response; }
public Order NewOrderCalculations(Order orderToAdd) { var taxMgr = ManagerFactory.CreateTaxManager(); orderToAdd.TaxRate = taxMgr.GetRate(orderToAdd.State); var productMgr = ManagerFactory.CreateProductManagr(); orderToAdd.CostPerSquareFoot = productMgr.CostPerSquareFoot(orderToAdd.ProductType); orderToAdd.LaborCostPerSquareFoot = productMgr.LaborCostPerSquareFoot(orderToAdd.ProductType); orderToAdd.MaterialCost = (orderToAdd.CostPerSquareFoot*orderToAdd.Area); orderToAdd.LaborCost = (orderToAdd.LaborCostPerSquareFoot*orderToAdd.Area); var subTotal = orderToAdd.MaterialCost + orderToAdd.LaborCost; orderToAdd.Tax = (orderToAdd.TaxRate*subTotal); orderToAdd.Total = (subTotal + orderToAdd.Tax); return orderToAdd; }
public void NewOrderNumber(Order orderToAdd, DateTime orderDate) { var repo = new OrderRepository(); var allOrders = repo.LoadOrders(orderDate); if (allOrders != null) { var nextOrderNumber = allOrders.Max(o => o.OrderNumber); nextOrderNumber++; orderToAdd.OrderNumber = nextOrderNumber; } else { orderToAdd.OrderNumber = 1; } }
public void PrintOrderInformation(Order orderInfo) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("\t**********************"); Console.WriteLine("\t Order Number {0}", orderInfo.OrderNumber); Console.WriteLine("\t**********************"); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("\t Name: {0}", orderInfo.LastName.ToUpper()); Console.WriteLine("\t State: {0}", orderInfo.State.ToUpper()); Console.WriteLine("\t TaxRate: {0}", orderInfo.TaxRate); Console.WriteLine("\t ProductType: {0}", orderInfo.ProductType.ToUpper()); Console.WriteLine("\t Area: {0}", orderInfo.Area); Console.WriteLine("\t Cost Per Square Foot: {0:c}", orderInfo.CostSqFt); Console.WriteLine("\t Labor Per Square Foot: {0:c}", orderInfo.LaborSqFt); Console.WriteLine("\t Material Cost: {0:c}", orderInfo.MaterialCost); Console.WriteLine("\t Labor Cost: {0:c}", orderInfo.LaborCost); Console.WriteLine("\t Tax: {0:c}", orderInfo.Tax); Console.WriteLine("\t Total: {0:c}", orderInfo.Total); Console.WriteLine(); Console.WriteLine("\tPress Enter for Main Menu"); }
public void Execute() { DisplayOrderWorkflow dowf = new DisplayOrderWorkflow(); formattedDate = dowf.GetOrderDateFromUser(); orderNumber = dowf.DisplayAllAccounts(formattedDate); //_the current order returns order before it's edited _currentOrder = dowf.DisplayOrderInformation(formattedDate, orderNumber); ChangeName(); ChangeState(); ChangeProduct(); ChangeArea(); ChangeMaterialCost(); ChangeTax(); ChangeLaborPerSquareFt(); ChangeLaborCost(); ChangeTotal(); NewOrder(); }
public void WriteNewLine(Order order, string formattedDate) { order.OrderNumber = (_orders.Any()) ? _orders.Max(c => c.OrderNumber) + 1 : 1; _orders.Add(order); }
public void GetEditedOrder(string formattedDate, int OrderNumber, Order order) { DeleteOrder(formattedDate, order.OrderNumber); _orders.Add(order); }
//calls CreateOrder and stores a Order in response. public void PopulateOrder(string formattedDate) { OrderOperations ops = new OrderOperations(); var response = new Response(); Order order = new Order(); bool isValid = false; decimal stateRate = 0; Console.ForegroundColor = ConsoleColor.Yellow; Console.Clear(); Console.WriteLine("\tEnter Account Information"); Console.WriteLine("\t----------------------"); Console.ForegroundColor = ConsoleColor.White; bool checkedInput = true; do { Console.Write("\tLast Name: "); order.LastName = Console.ReadLine(); if (order.LastName.Length <= 0) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("\tThat was not a valid entry.\n\t Please enter a name..."); log.ErrorMessage = "That was not a valid name(name) UI:PopulateOrder/AddWorkflow...."; ops.CallingErrorLogRepository(log.ErrorMessage); checkedInput = false; continue; } checkedInput = ops.ValidateInput(order.LastName.ToCharArray()); if (checkedInput == false) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("\tNo special characters in name are permitted.\n\t Please enter valid name"); log.ErrorMessage = "That was not a valid name(name) UI:PopulateOrder/AddWorkflow...."; ops.CallingErrorLogRepository(log.ErrorMessage); } else { checkedInput = true; } } while (checkedInput == false); do { Console.ForegroundColor = ConsoleColor.White; Console.Write("\tState: "); order.State = Console.ReadLine(); //string state = order.State; if (order.State.Length < 2) { Console.WriteLine("\tThat was not a valid entry.\n Please enter a state..."); log.ErrorMessage = "That was not a valid entry(state) UI:PopulateOrder/AddWorkflow...."; ops.CallingErrorLogRepository(log.ErrorMessage); } else { isValid = true; stateRate = ops.MatchState(order.State); if (stateRate == 0) { isValid = false; } } } while (!isValid); //setting tax rate based on state order.TaxRate = stateRate; Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("\tYour tax rate is {0}: ", order.TaxRate); //-------------PRODUCT----------------------- Product product = new Product(); do { Console.ForegroundColor = ConsoleColor.White; //Console.WriteLine(""); Console.Write("\tPlease enter a product type:\n\t\t Carpet, Laminate, Tile, Wood: "); order.ProductType = Console.ReadLine(); if (order.ProductType.Length > 8 || order.ProductType.Length < 1) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("\tThat was not a valid entry.\n Please enter a product..."); log.ErrorMessage = "That was not a valid entry (product) UI:PopulateOrder...."; ops.CallingErrorLogRepository(log.ErrorMessage); } else { order.CostSqFt = ops.ReturnCostPerSquareFoot(order.ProductType); } } while (order.CostSqFt == 0);// is 0 Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("\tYour cost per square foot is {0:c}: ", order.CostSqFt); // getting labor per square foot order.LaborSqFt = ops.LaborPerSquareFt(order.ProductType); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("\tYour labor per square foot is {0:c}: ", order.LaborSqFt); // getting area do { Console.ForegroundColor = ConsoleColor.White; Console.Write("\tArea: "); string input = Console.ReadLine(); if (input.Length == 0) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("\tThat was not a valid entry.\n\t Please enter a Area..."); log.ErrorMessage = "That was not a valid Area(Area) UI:PopulateOrder/AddWorkflow...."; ops.CallingErrorLogRepository(log.ErrorMessage); order.Area = 0; continue; } order.Area = decimal.Parse(input); if (order.Area <= 0) { Console.WriteLine("\tYou need to get a bigger house!"); log.ErrorMessage = "That was not a valid area (area) UI:PopulateOrder...."; ops.CallingErrorLogRepository(log.ErrorMessage); } } while (order.Area <= 0); // getting material cost order.MaterialCost = ops.MaterialCost(order.ProductType, order.Area); Console.ForegroundColor = ConsoleColor.White; Console.Write("\tMaterial Cost: {0:c} ", order.MaterialCost); //getting labor cost Console.ForegroundColor = ConsoleColor.White; order.LaborCost = ops.LaborCost(order.ProductType, order.Area); Console.Write("\nLabor Cost: {0:c} ", order.LaborCost); //get tax Console.ForegroundColor = ConsoleColor.White; order.Tax = ops.Tax(order.State, order.MaterialCost); Console.Write("\nTax: {0:c} ", order.Tax); //get total Console.ForegroundColor = ConsoleColor.White; Console.Write("\nTotal: {0:c}", order.Total); order.Total = ops.Total(order.MaterialCost, order.Tax, order.LaborCost); Console.WriteLine(); ops.CreateOrder(order, formattedDate); Console.Clear(); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("\n\tHere is your new order information: \n"); DisplayOrderWorkflow dowf = new DisplayOrderWorkflow(); dowf.PrintOrderInformation(order); Console.ForegroundColor = ConsoleColor.White; }
private static void WriteOrder(StreamWriter writer, Order o) { }
public Response EditOrder(string formattedDate, int orderNumber, Order changedOrder) { Response response = new Response(); _repo.GetEditedOrder(formattedDate, orderNumber, changedOrder); var revisedOrder = _repo.SortNewEditedFile(formattedDate, orderNumber); if (revisedOrder != null) { response.Success = true; response.OrderInfo = revisedOrder; } else { response.Success = false; Console.ForegroundColor = ConsoleColor.Red; response.Message = "The Edit was not sucessful in operations/EditOrder."; log.ErrorMessage = "That Edit was not sucessful BLL:EditOrder...."; CallingErrorLogRepository(log.ErrorMessage); } response.OrderInfo = revisedOrder; return response; }
public void GetEditedOrder(string formattedDate, int OrderNumber, Order changedOrder) { //public Order GetOrderNumber(string formattedDate, int OrderNumber) List<Order> orders = GetDataInformation(formattedDate); //brings back all orders from file var otherOrders = from o in orders where o.OrderNumber != OrderNumber // gets all orders EXCEPT the one we are changing select o; //File.WriteAllLines(formattedDate, result.ToString());//rewrites to file all orders EXCEPT the original orderNumber RewriteFile(formattedDate, otherOrders); using (var writer = File.AppendText(formattedDate)) // appends new order to end of file { writer.WriteLine("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11}", changedOrder.OrderNumber, changedOrder.LastName, changedOrder.State, changedOrder.TaxRate, changedOrder.ProductType, changedOrder.Area, changedOrder.CostSqFt, changedOrder.LaborSqFt, changedOrder.MaterialCost, changedOrder.LaborCost, changedOrder.Tax, changedOrder.Total); } }
private void PrintOrderDetails(Order orderToAdd) { Console.Clear(); Console.WriteLine("Order Summary: "); Console.WriteLine("Product Type: {0}", orderToAdd.ProductType); Console.WriteLine("Area: {0}",orderToAdd.Area); Console.WriteLine("Cost of Materials: {0:c}",orderToAdd.MaterialCost); Console.WriteLine("Cost of Labor: {0:c}", orderToAdd.LaborCost); Console.WriteLine("Tax: {0:c}",orderToAdd.Tax); Console.WriteLine("-------------------"); Console.WriteLine("Total: {0:c}",orderToAdd.Total); }
//if date folder exists we need to add new order to it public void WriteNewLine(Order order, string formattedDate) { List<Order> orders = GetDataInformation(formattedDate); int newOrderNo = 1; if (orders.Count > 1) { newOrderNo = orders.Max(o => o.OrderNumber) + 1; } order.OrderNumber = newOrderNo; using (var writer = File.AppendText(formattedDate)) { writer.WriteLine("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11}", order.OrderNumber, order.LastName, order.State, order.TaxRate, order.ProductType, order.Area, order.CostSqFt, order.LaborSqFt, order.MaterialCost, order.LaborCost, order.Tax, order.Total); //OrderNumber,CustomerName,State,TaxRate,ProductType,Area,CostPerSquareFoot, //LaborCostPerSquareFoot,MaterialCost,LaborCost,Tax,Total //1,Wise,OH,6.25,Wood,100.00,5.15,4.75,515.00,475.00,61.88,1051.88 } }
/// <summary> /// /// </summary> /// <param name="order"></param> /// <param name="formattedDate"></param> /// <returns></returns> public Response NewCustomerInformationResponse(Order order, string formattedDate) { var response = new Response(); _repo.WriteNewLine(order, formattedDate); response.OrderInfo = order; return response; }
//returns all orders of a specific date public List<Order> GetDataInformation(string file) { List<Order> orders = new List<Order>(); //read all orders that occur in orderFile, ie. on a specified date var reader = File.ReadAllLines(file); //i = 1 starts on line 1 not 0. for (int i = 1; i < reader.Length; i++) { var columns = reader[i].Split(','); var order = new Order(); order.OrderNumber = int.Parse(columns[0]); order.LastName = columns[1]; order.State = columns[2]; order.TaxRate = decimal.Parse(columns[3]); order.ProductType = (columns[4]); order.Area = decimal.Parse(columns[5]); order.CostSqFt = decimal.Parse(columns[6]); order.LaborSqFt = decimal.Parse(columns[7]); order.MaterialCost = decimal.Parse(columns[8]); order.LaborCost = decimal.Parse(columns[9]); order.Tax = decimal.Parse(columns[10]); order.Total = decimal.Parse(columns[11]); orders.Add(order); } return orders; }
private static void WriteOrder(StreamWriter writer, Order o) { writer.WriteLine("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11}", o.OrderNumber, o.LastName, o.State, o.TaxRate, o.ProductType, o.Area, o.CostSqFt, o.LaborSqFt, o.MaterialCost, o.LaborCost, o.Tax, o.Total); }
public void CreateOrder(Order order, string formattedDate) { Response response = new Response(); _repo.WriteNewLine(order, formattedDate); }
public void OrderToConfirm(Order orderToAdd) { var orderOps = new OrderOperations(); DateTime orderDateToday = DateTime.Today; var confirmOrder = ""; bool validEntry = true; do { Console.WriteLine("Would you like to place this order? Please enter Yes or No."); confirmOrder = Console.ReadLine(); confirmOrder = confirmOrder.Substring(0, 1).ToUpper(); if (confirmOrder != "Y" && confirmOrder != "N") { Console.WriteLine("That is an invalid entry. Please input yes or no."); validEntry = false; } if (string.IsNullOrEmpty(confirmOrder)) { Console.WriteLine("You must make a selection. Please input Yes or No."); validEntry = false; } else { validEntry = true; } } while (!validEntry); if (confirmOrder == "Y") { orderOps.NewOrderNumber(orderToAdd, orderDateToday); var response = orderOps.AddNewOrder(orderToAdd, orderDateToday); if (response.Success) { Console.WriteLine("========| Order Confirmation | ========"); Console.WriteLine("Order number: {0}",response.Data.OrderNumber); Console.WriteLine("Product Type: {0}", response.Data.ProductType); Console.WriteLine("Amount Ordered: {0}sqft", response.Data.Area); Console.WriteLine("Material Cost: {0:c}", response.Data.MaterialCost); Console.WriteLine("Labor Cost: {0:c}", response.Data.LaborCost); Console.WriteLine("Tax: {0:c}", response.Data.Tax); Console.WriteLine("Total: {0:c}", response.Data.Total); } } else { var response = orderOps.AddNewOrder(orderToAdd, orderDateToday); Console.WriteLine(response.Message); } }