public void Execute() { OrderManager manager = OrderManagerFactory.Create(); Order originalOrder = ConsoleIO.GetOrderToBeRemovedOrEditedInfo(); Order editedOrder = new Order(); OrderAddResponse response = manager.FindOrder(originalOrder); //Could be refactored by using the ConsoleIO request creating originalOrder as the parameter. ****Ask Alan his thoughts?**** AddOrderWorkflow is refactor a little more. if (!response.Success) { ConsoleIO.DisplayNegativeResponseMesssage(response.Message); } else { if (ConsoleIO.DisplayOrderToBeConfirmed(response)) { originalOrder = response.Order; editedOrder = ConsoleIO.GetOrderInfoFromCustomer(true, originalOrder); manager.EditOrder(originalOrder, editedOrder); ConsoleIO.DisplayOrderAddedSuccessfully(); } else { ConsoleIO.DisplayOrderEditCancelled(); } } }
public void CanAddOrder() { OrderManager manager = OrderManagerFactory.Create(); Order cleanInputs = new Order() { CustomerName = "Doyle Hargrove", State = "TN", ProductType = "Wood", Area = 100 }; Order badStateInput = new Order() { CustomerName = "Doyle Hargrove", State = "FR", ProductType = "Wood", Area = 100 }; Order badProductInput = new Order() { CustomerName = "Doyle Hargrove", State = "TN", ProductType = "Gold", Area = 100 }; Order badAreaInput = new Order() { CustomerName = "Doyle Hargrove", State = "TN", ProductType = "Wood", Area = 50 }; OrderAddResponse response = manager.CreateNewOrder(cleanInputs); Assert.AreEqual(true, response.Success); OrderAddResponse responseBadState = manager.CreateNewOrder(badStateInput); Assert.AreEqual(false, responseBadState.Success); OrderAddResponse responseBadProduct = manager.CreateNewOrder(badProductInput); Assert.AreEqual(false, responseBadProduct.Success); OrderAddResponse responseBadArea = manager.CreateNewOrder(badAreaInput); Assert.AreEqual(false, responseBadArea.Success); }
public OrderAddResponse Add(Orders passOrderAdd, string orderDate) { OrderAddResponse response = new OrderAddResponse(); //response.Orders = _orderRepository.OrdersAdd(passOrderAdd, orderDate); if (passOrderAdd == null) { response.Success = false; response.Message = $"{orderDate} is not a valid date."; return(response); } else { response.Success = true; } IAddOrderRepo addOrderRule = AddOrderRulesFactory.Create(); response = addOrderRule.OrdersAdd(passOrderAdd, orderDate); if (response.Success) { _orderRepository.SaveOrder(response.Orders, response.orderDate); //_orderRepository.SaveOrder(response.Orders, orderDate); } return(response); }
public static bool DisplayOrderToBeConfirmed(OrderAddResponse response) { //display all order details and then ask if they want to proceed. If yes then return true, else return false and return to menu Console.Clear(); Console.WriteLine("Below is the order created."); Console.WriteLine(); Console.WriteLine($"[{ response.Order.OrderNumber}] | [{response.Order.Date.ToShortDateString()}]"); // add response.Order.Date after date is added to order model Console.WriteLine($"[{response.Order.CustomerName }]"); Console.WriteLine($"[{response.Order.State}]"); Console.WriteLine($"Product: [{response.Order.ProductType}]"); Console.WriteLine($"Materials: [{response.Order.MaterialCost:c}]"); Console.WriteLine($"Labor: [{response.Order.LaborCost:c}]"); Console.WriteLine($"Tax: [{response.Order.Tax:c}]"); Console.WriteLine($"Total: [{response.Order.Total:c}]"); Console.WriteLine(); Console.Write("Confirm Order: Y or N: "); string answer = Console.ReadLine(); if (answer == "Y" || answer == "y") { return(true); } else { return(false); } }
public void CanRemoveOrder() { OrderManager manager = OrderManagerFactory.Create(); OrderAddResponse response = new OrderAddResponse(); string orderDate = "12202021"; Order addOrder = new Order { CustomerName = "Bob", State = "OH", ProductType = "Wood", Area = 150.00M }; response = manager.AddOrder(orderDate, addOrder); Assert.AreEqual("Bob", response.OrderList.Orders[2].CustomerName); Assert.AreEqual("OH", response.OrderList.Orders[2].State); Assert.AreEqual("Wood", response.OrderList.Orders[2].ProductType); Assert.AreEqual(150.00M, response.OrderList.Orders[2].Area); OrderRemoveResponse removeResponse = new OrderRemoveResponse(); removeResponse = manager.RemoveOrder(orderDate, 2); Assert.IsTrue(removeResponse.Success); }
public void CanEditOrders() { OrderManager manager = OrderManagerFactory.Create(); OrderAddResponse response = new OrderAddResponse(); string orderDate = "12202021"; Order addOrder = new Order { CustomerName = "Bob", State = "OH", ProductType = "Wood", Area = 150.00M }; response = manager.AddOrder(orderDate, addOrder); Assert.AreEqual("Bob", response.OrderList.Orders[2].CustomerName); Assert.AreEqual("OH", response.OrderList.Orders[2].State); Assert.AreEqual("Wood", response.OrderList.Orders[2].ProductType); Assert.AreEqual(150.00M, response.OrderList.Orders[2].Area); OrderEditResponse editedResponse = new OrderEditResponse(); Order editedOrder = new Order { CustomerName = "Bob", State = "PA", ProductType = "Wood", Area = 100.00M }; editedResponse = manager.EditOrder(orderDate, editedOrder, 0); Assert.AreEqual(100.00, editedResponse.OrderList.Orders[0].Area); }
/// <summary> /// 添加订单信息 /// </summary> /// <param name="info"></param> /// <returns></returns> public OrderAddResponse AddOrderInfo(OrderAddRequest request) { OrderAddResponse response = new OrderAddResponse(); OrderInfo orderInfo = new OrderInfo() { BoughtTime = request.BoughtTime, OrderName = request.OrderName, CommodityImg = request.CommodityImg, OrderSize = request.OrderSize, OrderCount = request.OrderCount, YhId = request.YhId, OrderPrice = request.OrderPrice, OrderTypeId = request.OrderTypeId, Consignee = request.Consignee, ConsigneeTel = request.ConsigneeTel, Staus = request.Staus, CreateId = request.CreateId, UpdateId = request.UpdateId, CreateTime = request.CreateTime, UpdateTime = request.UpdateTime }; var res = dal.AddOrderInfo(orderInfo); if (res > 0) { response.IsAddSuccess = 1; response.Message = "添加成功"; } else { response.IsAddSuccess = 0; response.Message = "注册失败"; } return(response); }
public void CanAddOrder() { OrderManager manager = OrderManagerFactory.Create(); Order testOrder = new Order() { Date = new DateTime(2019, 04, 30), OrderNumber = 0, CustomerName = "McFly", State = "KY", TaxRate = 0, ProductType = "Carpet", Area = 100m, CostPerSquareFoot = 0, LaborCostPerSquareFoot = 0, MaterialCost = 0, LaborCost = 0, Tax = 0, Total = 0 }; OrderAddResponse response = manager.CreateNewOrder(testOrder); manager.SaveOrderToRepo(response); Order responseOrder = response.Order; Assert.NotNull(manager.ListAllOrdersByDate(testOrder.Date)); //Assert.AreEqual(manager.ListAllOrdersByDate(testOrder.Date).Where(o => o.CustomerName == "McFly"), response.Order); Order findOrder = new Order() { Date = new DateTime(2019, 04, 30), OrderNumber = 101 }; var tempOrder = manager.FindOrder(findOrder); Order orderInRepo = tempOrder.Order; Assert.AreEqual(orderInRepo, responseOrder); }
public void EditOrder(Order original, Order edited) { OrderAddResponse response = CreateNewOrder(edited); var editedOrder = response.Order; _orderRepository.EditOrder(original, editedOrder); }
public static void AddOrder(Order order) { OrderManager manager = OrderManagerFactory.Create(); OrderAddResponse response = manager.AddOrder(order); if (!response.Success) { Console.WriteLine("An error occured: "); Console.WriteLine(response.Message); } }
public OrderAddResponse AddOrder(string OrderDate, Order order) { OrderAddResponse response = new OrderAddResponse(); response.OrderList = _orderRepository.List(OrderDate); int listCount = response.OrderList.Orders.Count(); //Check if order can be sent to state //Load in Taxes and return the tax information for the order _Tax = _orderRepository.LoadTaxes(); Tax taxRate = _Tax.FirstOrDefault(p => p.StateAbbreviation == order.State); order.TaxRate = taxRate.TaxRate; //Check if order is Empty if (order.TaxRate.Equals(null)) { response.Success = false; response.Message = "Could not get Tax Rate from the State"; } //Load in Products and return product type information _Products = _orderRepository.LoadProducts(); Products orderProduct = (Products)_Products.FirstOrDefault(p => p.ProductType == order.ProductType); if (orderProduct == null) { response.Success = false; response.Message = "Could not get ProductType form order"; } //Add the values to the different properties and Do Math order.CostPerSquareFoot = orderProduct.CostPerSquareFoot; order.LaborCostPerSquareFoot = orderProduct.LaborCostPerSquareFoot; order.OrderNumber = listCount++; order = OrderCalculations(order); //Add Order to list response.OrderList.Orders.Add(order); if (!response.OrderList.Orders.Contains(order)) { response.Success = false; response.Message = "Order was not Added"; } else { //_orderRepository.SaveOrder(order, listCount++); _orderRepository.SaveOrder(response.OrderList, response.OrderList.OrderDate); response.Success = true; } return(response); }
public void ManagerAddTest(int orderNumber, bool expected) { DateTime date = new DateTime(2013, 06, 01); repo.Create(date, order); OrderAddResponse response = manager.AddOrder(date, order); Assert.IsNotNull(response.Order); Assert.IsTrue(response.Success); Assert.AreEqual(date, response.Order.OrderDate); Assert.AreEqual(order.OrderNumber, response.Order.OrderNumber); Assert.AreEqual(order.CustomerName, response.Order.CustomerName); }
public void Execute() { OrderManager manager = OrderManagerFactory.Create(); Console.Clear(); Console.WriteLine("Add an order"); Console.WriteLine(ConsoleIO.SeparatorBar); Orders orders = new Orders(); date = IO.GetDateTimeFromUser(); Console.Clear(); orders.CustomerName = IO.GetNameFromUser("Name: "); Console.Clear(); orders.State = IO.DisplayStateFromUser("State: "); Console.Clear(); orders.ProductType = IO.DisplayProductFromUser("Product Type: "); Console.Clear(); orders.Area = IO.GetDecimalFromUser("Area: "); orders = manager.Calculate(orders); Console.WriteLine(); Console.Clear(); Console.WriteLine("This is your order"); IO.DisplayOrder(orders); Console.WriteLine(); if (IO.GetYesNoAnswerFromUser("Add the order") == "Y") { OrderAddResponse response = manager.AddOrder(date, orders); if (response.Success) { Console.WriteLine("Order has been added"); Console.WriteLine("Press any key to continue"); Console.ReadKey(); } else { Console.WriteLine(response.Message); } } else { Console.WriteLine("Order Cancelled"); Console.WriteLine("Press any key to continue"); Console.ReadKey(); } }
public OrderAddResponse AddOrder(DateTime date, Orders order) { OrderAddResponse response = new OrderAddResponse(); response.Order = _order.Create(date, order); if (response.Order == null) { response.Success = false; response.Message = "Invalid"; } else { response.Success = true; } return(response); }
public void Execute() { OrderManager manager = OrderManagerFactory.Create(); OrderAddResponse response = manager.FindOrder(ConsoleIO.GetOrderToBeRemovedOrEditedInfo()); if (!response.Success) { ConsoleIO.DisplayNegativeResponseMesssage(response.Message); } //orderConfirmed = ; if (ConsoleIO.DisplayOrderToBeConfirmed(response)) { manager.RemoveOrder(response.Order); ConsoleIO.DisplayOrderRemovedSuccessfully(); } }
public OrderAddResponse OrdersAdd(Orders orders, string orderDate) { OrderAddResponse response = new OrderAddResponse(); /* //decide to do verification here or in workflow?? * if (account.Type != AccountType.Basic && account.Type != AccountType.Premium) * { * response.Success = false; * response.Message = "Error: Only basic and premium accounts can deposit with no limit. Contact IT"; * return response; * } * * if (amount <= 0) * { * response.Success = false; * response.Message = "Deposit amounts must be positive."; * return response; * } */ response.Orders = orders; response.orderDate = orderDate; /* * response.Orders.OrderNumber = orders.OrderNumber; * response.Orders.CustomerName = orders.CustomerName; * response.Orders.State = orders.State; * response.Orders.TaxRate = orders.TaxRate; * response.Orders.ProductType = orders.ProductType; * response.Orders.Area = orders.Area; * response.Orders.CostPerSquareFoot = orders.CostPerSquareFoot; * response.Orders.LaborCostPerSquareFoot = orders.LaborCostPerSquareFoot; * response.Orders.MaterialCost = orders.MaterialCost; * response.Orders.LaborCost = orders.LaborCost; * response.Orders.Tax = orders.Tax; * response.Orders.Total = orders.Total; */ response.Success = true; return(response); }
[TestCase("Sir Edward Cumberton", "OH", "10/16/2016", ProductType.Carpet, 100, true)] //Correct. Pass. public void AddOrderTest(string name, string state, string orderDateString, ProductType type, int area, bool expectedResult) { Order newOrder = new Order(); DateTime orderDate; DateTime.TryParse(orderDateString, out orderDate); newOrder.Name = name; newOrder.State = state; newOrder.OrderDate = orderDate; newOrder.Type = ProductType.Carpet; newOrder.Area = area; OrderManager addTester = OrderManagerFactory.Create(); OrderAddResponse response = addTester.AddOrder(newOrder); Assert.AreEqual(expectedResult, response.Success); }
public OrderAddResponse Add(OrderInfo orderInfo) { OrderAddResponse response = DIContainer.Kernel.Get <OrderAddResponse>(); response.Success = true; if (orderInfo.OrderDate != _orderRepository.GetOrderDate()) { _orderRepository.FetchOrders(orderInfo.OrderDate); } var newOrderNumber = _orderRepository.NewOrderNumber; orderInfo.Order.OrderNumber = newOrderNumber; orderInfo.OrderNumber = newOrderNumber; orderInfo.Order = CalculateOrderFields(orderInfo.Order); response.OrderInfo = orderInfo; return(response); }
public OrderAddResponse FindOrder(Order order) { int orderNumber = order.OrderNumber; OrderAddResponse response = new OrderAddResponse(); List <Order> newList = new List <Order>(); newList = _orderRepository.LoadAllOrdersByDate(order.Date); response.Order = newList.Find(o => o.OrderNumber == orderNumber); if (response.Order == null) { response.Success = false; response.Message = $"Order not found."; return(response); } else { response.Success = true; } return(response); }
public void Execute() { OrderManager manager = OrderManagerFactory.Create(); ConsoleIO.DisplayListOfProducts(manager.ListAllProducts()); ConsoleIO.DisplayListofStates(manager.ListAllStates()); OrderAddResponse response = manager.CreateNewOrder(ConsoleIO.GetOrderInfoFromCustomer(false)); if (!response.Success) { ConsoleIO.DisplayNegativeResponseMesssage(response.Message); } else { if (ConsoleIO.DisplayOrderToBeConfirmed(response)) { ConsoleIO.DisplayPositiveResponseMesssage(response.Message); manager.SaveOrderToRepo(response); } } }
public OrderAddResponse AddOrder(Order newOrder) { OrderAddResponse response = new OrderAddResponse(); Validation(newOrder, response); if (response.Success == false) { return(response); } _orderRepository.Add(newOrder); response.newOrder = newOrder; if (response.newOrder.OrderNumber > 0) { response.Success = true; } else { response.Success = false; } return(response); }
public static void Main(string[] args) { ISoouuClient soouuClient = new DefaultSoouuClient("http://test.ccapi.soouu.cn/Interface/Method", "803683", "CC11F561EBF14204089A5C64DE61C8DF"); //获取用户信息 CustomerGetRequest customerGetRequest = new CustomerGetRequest(); CustomerGetResponse customerGetResponse = soouuClient.Execute(customerGetRequest); Console.WriteLine(customerGetResponse.ToJson()); //获取商品类目 CatalogsGetRequest catalogsGetRequest = new CatalogsGetRequest(); List <CatalogsGetResponse> catalogsGetResponse = soouuClient.QueryList(catalogsGetRequest); Console.WriteLine(catalogsGetResponse.ToJson()); //获取商品列表 GoodsGetRequest goodsGetRequest = new GoodsGetRequest { goodscatalogid = 1005 }; List <GoodsGetResponse> goodsGetResponse = soouuClient.QueryList(goodsGetRequest); Console.WriteLine(goodsGetResponse.ToJson()); //话费直充 PhoneOrderAddRequest phoneOrderAddRequest = new PhoneOrderAddRequest { chargephone = "18888888888", chargeparvalue = "50", customerorderno = "XXX2Q3111", notifyurl = "http://www.baidu.com" }; OrderAddResponse phoneOrderAddResponse = soouuClient.Execute(phoneOrderAddRequest); Console.WriteLine(phoneOrderAddResponse.ToJson()); //流量直充 TrafficGoodsAddRequest trafficGoodsAddRequest = new TrafficGoodsAddRequest { chargephone = "18888888888", chargeparvalue = "1024", areatype = "1", customerorderno = "123456", notifyurl = "http://www.baidu.com" }; OrderAddResponse trafficGoodsAddResponse = soouuClient.Execute(phoneOrderAddRequest); Console.WriteLine(trafficGoodsAddResponse.ToJson()); //网游直充 OrderAddRequest orderAddRequest = new OrderAddRequest { customerorderno = DateTime.Now.ToString("yyyyMMddHHmmssfff"), productid = 1204405, buyerip = HttpUtils.GetAddressIP(), chargeaccount = "18888888888", buynum = 1 }; OrderAddResponse orderAddResponse = soouuClient.Execute(orderAddRequest); Console.WriteLine(orderAddResponse.ToJson()); //卡密提卡 CardOrderAddRequest cardOrderAddRequest = new CardOrderAddRequest { customerorderno = DateTime.Now.ToString("yyyyMMddHHmmssfff"), productid = 1204406, buynum = 1 }; CardOrderAddResponse cardOrderAddResponse = soouuClient.Execute(cardOrderAddRequest); Console.WriteLine(cardOrderAddResponse.ToJson()); }
public void Execute() { Console.Clear(); OrderManager orderManager = OrderManagerFactory.Create(); Console.Clear(); Console.WriteLine("Add an Order"); Console.WriteLine("-------------------------"); bool goodDate = false; string orderDate; DateTime orderDateCompare; do { //must be in the future Console.Write("Enter Date (MMDDYYYY): "); orderDate = Console.ReadLine(); orderDateCompare = DateTime.ParseExact(orderDate, "MMddyyyy", CultureInfo.InvariantCulture); DateTime todayDate = DateTime.Today; if (orderDateCompare >= todayDate) { goodDate = true; continue; } else { Console.WriteLine("Please enter a date in the future."); goodDate = false; } } while (goodDate == false); //This field may not be blank; it is allowed to contain [a-z][0-9] as well as periods and comma characters. “Acme, Inc.” is a valid name. bool goodName = false; string customerName; do { Console.Write("\nEnter Customer Name: "); customerName = Console.ReadLine(); if (customerName != null) { goodName = true; continue; } else { Console.WriteLine("CustomerName cannot be empty."); goodName = false; } } while (goodName == false); //Entered states must be checked against the tax file. If the state does not exist in the tax file, we cannot sell there. If a state is added to the tax file later, it should be included without changing the application code. string state; decimal taxRate; bool goodTax = false; do { Console.Write("\nEnter State (Enter full name of state): "); state = Console.ReadLine(); //var taxdownload = new List<Tax>(); var taxdownload = orderManager._orderRepository.LookUpTax(state); //state = "Texas"; //create list //open file with tax info and put data in list (how to get data from list?) //foreach loop to figure out if stateName is in list // if (state == taxdownload.StateName) { taxRate = taxdownload.TaxRate; Console.Write($"{taxdownload.StateName} TaxRate is: {taxdownload.TaxRate}\n"); goodTax = true; } else { Console.Write("Sorry, we cannot sell to this state at this time."); taxRate = 0; goodTax = false; } } while (goodTax == false); //Show a list of available products and pricing information to choose from. Again, if a product is added to the file, it should show up in the application without a code change. Console.Write("\nChoose Product Type: \n"); var productDown = orderManager._orderRepository.LookUpProducts(); foreach (var product in productDown) { Console.WriteLine("{0}, {1}, {2}", product.ProductType, product.LaborCostPerSquareFoot, product.CostPerSquareFoot); Console.Write(""); } bool goodProduct = false; string productType; Products confirmedChoice = null; do { //Products confirmedChoice; Console.WriteLine(""); Console.Write("\nEnter your product selection (Enter full name productType): "); productType = Console.ReadLine(); var productChoice = orderManager._orderRepository.ChooseProduct(productType); if (productChoice != null) { confirmedChoice = productChoice; goodProduct = true; } else { Console.Write("\n You have made an incorrect choice, please choose again."); goodProduct = false; }; } while (goodProduct == false); //string productType = Console.ReadLine(); //string productType = "Hardwood"; //The area must be a positive decimal. Minimum order size is 100 square feet. bool goodArea = false; decimal area; do { Console.Write("Area: "); area = Convert.ToDecimal(Console.ReadLine()); if (area >= 100M) { goodArea = true; continue; } else { Console.WriteLine("\nArea entered must be positive and greater than 100 sq feet."); goodArea = false; } } while (goodArea == false); //Show input summary int lastOrderNumber = 0; decimal costPerSquareFoot; decimal laborCostPerSquareFoot; decimal materialCost; decimal laborCost; decimal tax; decimal total; //int orderNumber; costPerSquareFoot = confirmedChoice.CostPerSquareFoot; laborCostPerSquareFoot = confirmedChoice.LaborCostPerSquareFoot; materialCost = area * confirmedChoice.CostPerSquareFoot; laborCost = area * confirmedChoice.LaborCostPerSquareFoot; tax = ((area * confirmedChoice.CostPerSquareFoot) + (area * confirmedChoice.LaborCostPerSquareFoot)) * (taxRate / 100); total = (area * confirmedChoice.CostPerSquareFoot) + (area * confirmedChoice.LaborCostPerSquareFoot) + (((area * confirmedChoice.CostPerSquareFoot) + (area * confirmedChoice.LaborCostPerSquareFoot)) * (taxRate / 100)); //orderNumber = orderManager._orderRepository.LookUpOrderNumber(orderDate); Orders passOrderAdd = new Orders(); List <Orders> lastOrders = new List <Orders>(); lastOrders = orderManager._orderRepository.FindLastOrder(orderDate); if (lastOrders == null) { lastOrderNumber = 0; } else { lastOrderNumber = lastOrders.Count(); //Check Max() } passOrderAdd.OrderNumber = lastOrderNumber + 1; passOrderAdd.CustomerName = customerName; passOrderAdd.State = state; passOrderAdd.TaxRate = taxRate; passOrderAdd.ProductType = productType; passOrderAdd.Area = area; passOrderAdd.CostPerSquareFoot = costPerSquareFoot; passOrderAdd.LaborCostPerSquareFoot = laborCostPerSquareFoot; passOrderAdd.MaterialCost = materialCost; passOrderAdd.LaborCost = laborCost; passOrderAdd.Tax = tax; passOrderAdd.Total = total; Console.Write($"\nOrderDate is {orderDate}"); Console.Write($"\nCustomerName is {customerName}"); Console.Write($"\nStateName is {state}"); Console.Write($"\nTaxRate is {taxRate}"); Console.Write($"\nProductType is {productType}"); Console.Write($"\nCostPerSquareFoot is {confirmedChoice.CostPerSquareFoot}"); Console.Write($"\nLaborCostPerSquareFoot is {confirmedChoice.LaborCostPerSquareFoot}"); Console.Write($"\nMaterialCost: {area * confirmedChoice.CostPerSquareFoot}"); Console.Write($"\nLaborCost: {area * confirmedChoice.LaborCostPerSquareFoot}"); Console.Write($"\nTax: {((area * confirmedChoice.CostPerSquareFoot) + (area * confirmedChoice.LaborCostPerSquareFoot)) * (taxRate / 100)}"); Console.Write($"\nTotal: {(area * confirmedChoice.CostPerSquareFoot) + (area * confirmedChoice.LaborCostPerSquareFoot) + ((area * confirmedChoice.CostPerSquareFoot) + (area * confirmedChoice.LaborCostPerSquareFoot)) * (taxRate / 100)}"); Console.Write("\nPlease review your order details. \nIf order seems right, please type Add to continue or anything else to go back to main menu.\n"); string resp = Console.ReadLine(); if (resp == "Add") { OrderAddResponse response = orderManager.Add(passOrderAdd, orderDate); if (response.Success) { ConsoleIO.DisplayOrderDetails(response.Orders, orderDate); } else { Console.WriteLine("An error occurred: "); Console.WriteLine(response.Message); } Console.WriteLine("Press any key to continue..."); Console.ReadKey(); } else { Menu.Start(); } }
public void Execute() { Order newOrder = new Order(); bool orderComplete = true; do { newOrder.Name = ConsoleIO.GetOrderNameFromUser("Please enter a name for the order: "); newOrder.State = ConsoleIO.GetOrderStateFromUser("Please enter your state initials: "); newOrder.TaxRate = TaxRepository.GetTaxRate(newOrder.State); newOrder.OrderDate = ConsoleIO.GetOrderDateFromUser("Please enter your order date (MM/DD/YYYY): "); newOrder.Type = ConsoleIO.GetProductFromUser(newOrder.Type); newOrder.Area = ConsoleIO.GetAreaFromUser("Please enter the area amount you want to purchase: "); newOrder.CostLabor = Math.Round(Calculations.GetLaborCost(newOrder.Type, newOrder.Area), 2, MidpointRounding.AwayFromZero); newOrder.CostMaterial = Math.Round(Calculations.GetProductCost(newOrder.Type, newOrder.Area), 2, MidpointRounding.AwayFromZero); newOrder.Tax = Math.Round(ConsoleIO.JustTax(newOrder.TaxRate, newOrder.Type, newOrder.Area, newOrder.State), 2, MidpointRounding.AwayFromZero); newOrder.TotalCost = Math.Round(ConsoleIO.GetTotal(newOrder.TaxRate, newOrder.Type, newOrder.Area, newOrder.State), 2, MidpointRounding.AwayFromZero); string confirmFormat = "{0, -16} {1} \n{2, -16} {3} \n{4, -16} {5:d} \n{6, -16} {7} \n{8, -16} {9} \n \n{10, -16} {11} \n{12, -16} {13} \n{14, -16} {15} \n{16, -16} {17}"; ConsoleIO.Header(); while (true) { Console.WriteLine(confirmFormat, "Customer Name:", newOrder.Name, "Customer State:", newOrder.State, "Order Date:", newOrder.OrderDate, "Flooring Type:", newOrder.Type, "Area:", newOrder.Area + "(sqft)", "Product Cost:", newOrder.CostMaterial, "Labor Cost:", newOrder.CostLabor, "Tax:", newOrder.Tax, "Total:", newOrder.TotalCost); Console.WriteLine(ConsoleIO.Separator); Console.WriteLine(); Console.WriteLine("Is this information correct? Y/N or Q to return to the main menu."); string finishOrder = Console.ReadLine(); if ((finishOrder.ToUpper() == "Y") || (finishOrder.ToUpper() == "YES")) { OrderManager orderManager = OrderManagerFactory.Create(); OrderAddResponse response = orderManager.AddOrder(newOrder); ConsoleIO.Header(); Console.WriteLine("Thank you for your order."); Console.WriteLine("Press any key to continue."); Console.ReadKey(); orderComplete = true; break; } else if ((finishOrder.ToUpper() == "N") || (finishOrder.ToUpper() == "NO")) { orderComplete = false; break; } else if ((finishOrder.ToUpper() == "Q") || (finishOrder.ToUpper() == "QUIT")) { return; } else { orderComplete = false; ConsoleIO.Header(); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Please enter Y/N only. Or enter Q to return to the main menu."); Console.ResetColor(); Console.WriteLine(); } } }while (!orderComplete); }
public void Execute() { Console.Clear(); OrderManager manager = DIContainer.Kernel.Get <OrderManager>(); var state = Input.GetState(states.States); var tempTaxInfo = DIContainer.Kernel.Get <TaxInfo>(); tempTaxInfo.State = state.StateAbbreviation; tempTaxInfo.ProductType = product.ProductType; tempTaxInfo.Area = area; tempTaxInfo.TaxRate = state.TaxRate; tempTaxInfo.CostPerSquareFoot = product.CostPerSquareFoot; tempTaxInfo.LaborCostPerSquareFoot = product.LaborCostPerSquareFoot; var tempOrderInfo = DIContainer.Kernel.Get <OrderInfo>(); tempOrderInfo.Order = tempOrder; tempOrderInfo.OrderDate = orderDate; OrderAddResponse response = manager.Add(tempOrderInfo); if (response.Success) { Output.SendToConsole(response.OrderInfo); bool oKay = Input.GetOkayToContinue("Do you want to place the order (Y)es or (N)o? "); if (oKay) { var fileresponse = manager.SaveOrder(response.OrderInfo); Output.SendToConsole(); if (fileresponse.Success) { var fileresponse2 = manager.SaveOrders(response.OrderInfo); if (fileresponse2.Success) { Output.SendToConsole($"Your order {response.OrderInfo.OrderNumber} has been accepted!\n"); Output.SendToConsole(); Output.SendToConsole("--------------------------------------------------"); Output.SendToConsole(); } else { Output.SendToConsole("An error has occurred saving the order repository."); Output.SendToConsole(fileresponse2.Message); Output.SendToConsole("\nAdditional infomation:\n"); Output.SendToConsole(fileresponse2.Error); } } else { Output.SendToConsole("An error has occurred saving the order."); Output.SendToConsole(fileresponse.Message); Output.SendToConsole("\nAdditional infomation:\n"); Output.SendToConsole(fileresponse.Error); } } else { Output.SendToConsole("Your order has been cancelled.\n"); } } else { Output.SendToConsole("An error has occurred saving the order."); Output.SendToConsole(response.Message); } Output.SendToConsole("\nPress any key to continue..."); Console.ReadKey(); }
public void Execute() { string workflow = "Add"; OrderManager orderManager = OrderManagerFactory.Create(); Headers.DisplayHeader(workflow); //create order object Order newOrder = new Order(); //get date newOrder.Date = ConsoleIO.GetNewOrderDate("Enter a date (MM/DD/YYYY):"); //get order number newOrder.OrderNumber = OrderNumberValidation.CreateOrderNumber(newOrder.Date); Headers.DisplayHeader(workflow); //get customer name newOrder.CustomerName = ConsoleIO.GetCustomerName("Add", "none"); Headers.DisplayHeader(workflow); //get state tax bool validState = false; StateTax stateTax = null; while (!validState) { string stateAbbratiavtion = ConsoleIO.GetStateInputFromUser("Add"); StateTax tempStateTax = StateTaxValidation.CreateStateTax(stateAbbratiavtion).State; if (tempStateTax == null) { validState = false; } else { stateTax = tempStateTax; validState = true; } } Headers.DisplayHeader(workflow); //set state newOrder.State = stateTax.StateAbbreviation; newOrder.TaxRate = stateTax.TaxRate; //get product List <Product> products = ProductListValidation.CreateProductList(); Product product = ConsoleIO.DisplayProducts(products, "Add"); newOrder.ProductType = product.ProductType; newOrder.CostPerSquareFoot = product.CostPerSquareFoot; newOrder.LaborCostPerSquareFoot = product.LaborCostPerSquareFoot; Headers.DisplayHeader(workflow); //get area newOrder.Area = ConsoleIO.GetArea("Add"); Headers.DisplayHeader(workflow); //display new order ShowDetails.DisplayOrderDetails(newOrder); //--show message if add failed-- if (ConsoleIO.GetYesOrNo("Add order? ") == "Y") { OrderAddResponse response = orderManager.AddOrder(newOrder); if (!response.Success) { Console.WriteLine("There was an error adding the order:"); Console.WriteLine(response.Message); } else { Console.WriteLine("Order added! Press any key to continue..."); Console.ReadKey(); } } else { Console.WriteLine("Order cancelled :("); Console.ReadLine(); } }
public void SaveOrderToRepo(OrderAddResponse response) { _orderRepository.AddOrder(response.Order); }
public void Execute() { string orderDate; string format = "MMddyyyy"; OrderManager manager = OrderManagerFactory.Create(); Console.Clear(); Console.WriteLine("Add an Order"); Console.WriteLine("-------------------------------"); //Must be in the future while (true) { orderDate = ConsoleIO.GetRequiredStringFormuser("Enter Order Date (MMDDYYYY) "); //Validate the Date if (manager.validateDateTime(orderDate) == false) { Console.WriteLine("Please put it in the Order Date Format with 8 numbers"); Console.ReadKey(); } //Convert to Date Time DateTime userOrderDate = DateTime.ParseExact(orderDate, format, null); DateTime CurrentTime = DateTime.Now; if (userOrderDate < CurrentTime) { Console.WriteLine("Need to have an Order Date in the Future"); } else { break; } } Order newOrder = new Order(); newOrder.CustomerName = ConsoleIO.GetRequiredStringFormuser("Customer Name: "); while (true) { newOrder.State = ConsoleIO.GetRequiredStringFormuser("State: "); bool stateCheck = manager.checkIfSoldInState(newOrder.State); if (stateCheck == false) { Console.WriteLine("Sorry we do not ship to that state currently"); Console.WriteLine("Please choose a state that we can ship too"); Console.ReadKey(); } else { break; } } //Show Product List while (true) { ConsoleIO.DisplayProductList(manager.Products()); newOrder.ProductType = ConsoleIO.GetRequiredStringFormuser("Product Type: "); bool productCheck = manager.checkIfProductOnList(newOrder.ProductType); if (productCheck == false) { Console.WriteLine("Sorry that product is not on the list"); Console.WriteLine("Please choose a product on the List"); Console.ReadKey(); } else { break; } } while (true) { newOrder.Area = Convert.ToDecimal(ConsoleIO.GetRequiredStringFormuser("Area: ")); if (newOrder.Area < 100) { Console.WriteLine("Sorry you have to have a minium order size of 100 square feet"); Console.ReadKey(); } else { break; } } OrderAddResponse response = manager.AddOrder(orderDate, newOrder); if (response.Success) { //List<Order> orders = TestOrderList.LoadOrders(); ConsoleIO.DisplayOrders(response.OrderList.Orders, orderDate); } else { Console.WriteLine("An Error Occured"); Console.WriteLine(response.Message); } Console.WriteLine("Press any key to continue..."); Console.ReadKey(); }
public OrderAddResponse AddOrder(Order order) { OrderAddResponse orderResponse = new OrderAddResponse(); //valid order bool validOrder = false; //validate name bool validName = false; if (string.IsNullOrEmpty(order.CustomerName)) { orderResponse.Message = "Name field is null"; orderResponse.Success = false; } else { validName = true; } //validate area bool validArea = false; if (order.Area < 100) { orderResponse.Message = "Area cannot be less than 100 sq ft"; orderResponse.Success = false; } else { validArea = true; } //validate product bool validProduct = false; List <Product> products = _productRepository.GetProductList(); foreach (Product prod in products) { if (prod.ProductType == order.ProductType) { validProduct = true; } } //validate state bool validState = false; List <StateTax> states = _stateTaxRepository.ListStates(); foreach (StateTax state in states) { if (state.StateAbbreviation == order.State) { validState = true; } } if (validName && validArea && validProduct && validState) { validOrder = true; } if (validOrder) { orderResponse.Success = _orderRepository.Add(order); if (!orderResponse.Success) { orderResponse.Message = "Add failed"; } } return(orderResponse); }
public OrderAddResponse CreateNewOrder(Order order) { OrderAddResponse response = new OrderAddResponse(); response.Order = order; if (stateTaxManager.CheckIfStateIsServiced(order.State)) { response.Success = true; response.Order.State = order.State; } else { response.Success = false; response.Message = $"We do not service {order.State} at this time."; return(response); } response.Order.TaxRate = stateTaxManager.GetTaxRate(order.State); if (productManager.CheckIfProductIsAvailable(order.ProductType)) { response.Success = true; response.Order.ProductType = order.ProductType; } else { response.Success = false; response.Message = $"{order.ProductType} is not an available product. Please reselect."; return(response); } response.Order.CostPerSquareFoot = productManager.GetMaterialCostPerSquareFoot(order.ProductType); response.Order.LaborCostPerSquareFoot = productManager.GetLaborCostPerSquareFoot(order.ProductType); if (order.Area >= 100) { response.Success = true; response.Order.Area = order.Area; } else { response.Success = false; response.Message = "100 square feet is the minimum"; return(response); } response.Order.MaterialCost = response.Order.Area * response.Order.CostPerSquareFoot; response.Order.LaborCost = response.Order.Area * response.Order.LaborCostPerSquareFoot; response.Order.Tax = response.Order.MaterialCost + response.Order.LaborCost * (response.Order.TaxRate / 100); response.Order.Total = response.Order.MaterialCost + response.Order.LaborCost + response.Order.Tax; if (_orderRepository.LoadAllOrdersByDate(response.Order.Date) == null) { response.Order.OrderNumber = 101; } else { if (order.OrderNumber != 0) { response.Order.OrderNumber = order.OrderNumber; } else { response.Order.OrderNumber = _orderRepository.LoadAllOrdersByDate(response.Order.Date).Select(n => n.OrderNumber).Max() + 1; } } response.Success = true; response.Message = "The order has been created/edited. "; return(response); }