public int Add(ClientOrder clientOrder) { using (ApplicationDbContext db = new ApplicationDbContext()) { clientOrder.CreationDate = DateTime.Now; clientOrder.DeliveryDate = DateTime.Now; ClientOrder co = db.ClientOrders.Add(clientOrder); db.SaveChanges(); var clientOrderFromDB = db.ClientOrders .Include("Orders") .Include("Orders.Product") .Include("Delivery") .Where(x => x.Id == clientOrder.Id) .FirstOrDefault(); OrderTotalPriceCalculator orderTotalPriceCalculator = new OrderTotalPriceCalculator(); foreach (Order o in clientOrderFromDB.Orders) { o.TotalPrice = orderTotalPriceCalculator.Calculate(o); } db.SaveChanges(); ClientOrderTotalPriceCalculator clientOrderTotalPriceCalculator = new ClientOrderTotalPriceCalculator(); clientOrderFromDB.TotalPrice = clientOrderTotalPriceCalculator.Calculate(clientOrderFromDB); ClientOrderDeliveryDateCalculator clientOrderDeliveryDateCalculator = new ClientOrderDeliveryDateCalculator(); clientOrderFromDB.DeliveryDate = clientOrderDeliveryDateCalculator.Calculate(clientOrderFromDB); db.SaveChanges(); return(co.Id); } }
public bool Update(ClientOrder clientOrder) { using (ApplicationDbContext db = new ApplicationDbContext()) { ClientOrder co = db.ClientOrders .Include("Orders") .Include("Orders.Product") .Include("Delivery") .Where(x => x.Id == clientOrder.Id) .FirstOrDefault(); if (co != null) { co.ClientId = clientOrder.ClientId; co.Discount = clientOrder.Discount; co.TotalPrice = clientOrder.TotalPrice; co.DeliveryId = clientOrder.DeliveryId; // Czyszczenie co.Orders int ordersCount = co.Orders.Count; for (int i = 0; i < ordersCount; i++) { var o = co.Orders.FirstOrDefault(); co.Orders.Remove(o); db.Orders.Remove(o); } db.SaveChanges(); // Tworzenie nowych Orders OrderTotalPriceCalculator orderTotalPriceCalculator = new OrderTotalPriceCalculator(); foreach (Order order in clientOrder.Orders) { Order o = new Order(); o.ProductId = order.ProductId; o.Quantity = order.Quantity; var product = db.Products.Where(p => p.Id == order.ProductId).FirstOrDefault(); order.Product = product; o.TotalPrice = orderTotalPriceCalculator.Calculate(order); co.Orders.Add(o); } ClientOrderDeliveryDateCalculator clientOrderDeliveryDateCalculator = new ClientOrderDeliveryDateCalculator(); co.DeliveryDate = clientOrderDeliveryDateCalculator.Calculate(co); db.SaveChanges(); var clientOrderFromDB = db.ClientOrders .Include("Orders") .Include("Orders.Product") .Include("Delivery") .Where(x => x.Id == clientOrder.Id) .FirstOrDefault(); ClientOrderTotalPriceCalculator clientOrderTotalPriceCalculator = new ClientOrderTotalPriceCalculator(); clientOrderFromDB.TotalPrice = clientOrderTotalPriceCalculator.Calculate(clientOrderFromDB); db.SaveChanges(); return(true); } return(false); } }
public void Calculate_NullOrder_ThrowsException() { // Arrange ClientOrderTotalPriceCalculator clientOrderTotalPriceCalculator = new ClientOrderTotalPriceCalculator(); ClientOrder clientOrder = new ClientOrder(); // Act // Assert Assert.ThrowsException <ArgumentNullException>(() => clientOrderTotalPriceCalculator.Calculate(clientOrder)); }
public void Calculate_OrderNotNull_ReturnCorrectResult() { // Arrange ClientOrderTotalPriceCalculator clientOrderTotalPriceCalculator = new ClientOrderTotalPriceCalculator(); ClientOrder clientOrder = new ClientOrder(); clientOrder.Discount = 1m; clientOrder.Delivery = new Delivery() { Price = 0.5m }; clientOrder.Orders = new List <Order>(); Order order1 = new Order() { Product = new Product() { Price = 2.5m }, Quantity = 3 }; Order order2 = new Order() { Product = new Product() { Price = 1.5m }, Quantity = 2 }; clientOrder.Orders.Add(order1); clientOrder.Orders.Add(order2); // Act decimal result = clientOrderTotalPriceCalculator.Calculate(clientOrder); // Assert Assert.AreEqual(10m, result); }