public ResponseDTO SaveOrder(OrderShippingPaymentDTO orderShippingPaymentDTO) { var result = _checkoutService.SaveOrder(orderShippingPaymentDTO); if (result != null) { Log.Information("Get All Prodcuts completed!"); return(new ResponseDTO() { Data = result, ErrorDescription = "", Statuscode = "", }); } else { return new ResponseDTO() { Data = "Failed", ErrorDescription = "Data not Found", Statuscode = HttpStatusCode.BadRequest.ToString(), } }; } }
/// <summary> /// Save Order details /// </summary> /// <param name="orderShippingPaymentDto"></param> /// <returns></returns> public async Task <object> SaveOrder(OrderShippingPaymentDTO orderShippingPaymentDto) { var user = await _userManager.FindByNameAsync(orderShippingPaymentDto.UserName); //save order var order = new Order { OrderDate = DateTime.UtcNow, ShippedDate = DateTime.UtcNow, // Assumption : products are shipped within the order date. ShipAddress = orderShippingPaymentDto.ShipAddress, ShippingMethod = orderShippingPaymentDto.ShippingMethod, Email = orderShippingPaymentDto.Email, PhoneNumber = orderShippingPaymentDto.PhoneNumber, TotalPrice = orderShippingPaymentDto.OrderTotalPrice, OrderStatus = orderShippingPaymentDto.OrderStatus }; var orderId = _orderRepository.Save(order).Id; if (orderShippingPaymentDto.OrderLineItems.Count <= 0) { throw new InvalidOperationException("Can not save order Line items."); } else { //save order line items foreach (var item in _mapper.Map <IList <OrderLineItem> >(orderShippingPaymentDto.OrderLineItems)) { item.OrderID = orderId; _orderLineItemsRepository.Save(item); } } if (!string.IsNullOrEmpty(user.Id)) { //Save payment details var payment = new Payment { PaidDate = DateTime.UtcNow, Description = "", TotalPrice = order.TotalPrice, PaymentStatus = orderShippingPaymentDto.PaymentStatus, PaymentMethod = orderShippingPaymentDto.PaymentMethod, OrderID = order.Id, UserID = user.Id }; _paymentRepository.Save(payment); throw new InvalidOperationException("Can not save payment details."); } return("Successful Saved"); }
public void Test_LineItems_In_Save_Order() { var applicationUser = new ApplicationUser { FullName = "qwe rty", UserName = "******", PasswordHash = "AQAAAAEAACcQAAAAEFhb4f6tea+M5ljLQQv6paGE6/eo+IHQmiD0vlNdhJ66vPRY0rpFdoCW9XoeYm5/DQ==", Email = "*****@*****.**", EmailConfirmed = true, LockoutEnabled = false }; orderLineItems = new List<OrderLineItemDTO>(); var orderShippingPaymentDTO = new OrderShippingPaymentDTO { FullName = "qwe rty", PaymentMethod = "qwe rty", OrderDate = DateTime.UtcNow, PaymentStatus = "Paid", ShipAddress = "34c ,Test address ", ShippingMethod = "UPS", Email = "*****@*****.**", PhoneNumber = "0123456789", OrderTotalPrice = 568.00, OrderStatus = "Completed", ZipCode = "10001", UserName = "******", OrderLineItems = orderLineItems }; var applicationUserlist = new List<ApplicationUser>(); applicationUserlist.Add(applicationUser); var userManager = MockUserManager(applicationUserlist); userManager.Setup(x => x.FindByNameAsync(It.IsAny<string>())).Returns(Task.FromResult(applicationUser)); var order = new Order { OrderDate = DateTime.UtcNow, ShippedDate = DateTime.UtcNow, ShipAddress = orderShippingPaymentDTO.ShipAddress, ShippingMethod = orderShippingPaymentDTO.ShippingMethod, Email = orderShippingPaymentDTO.Email, PhoneNumber = orderShippingPaymentDTO.PhoneNumber, TotalPrice = orderShippingPaymentDTO.OrderTotalPrice, OrderStatus = orderShippingPaymentDTO.OrderStatus }; orderRepository.Setup(mr => mr.Save(It.IsAny<Order>())).Returns(order); var orderId = order.Id; foreach (var item in mapper.Map<IList<OrderLineItem>>(orderShippingPaymentDTO.OrderLineItems)) { item.OrderID = orderId; orderLineItemsRepository.Setup(mr => mr.Save(It.IsAny<OrderLineItem>())).Returns(item); } var payment = new Payment { PaidDate = DateTime.UtcNow, Description = "", TotalPrice = order.TotalPrice, PaymentStatus = orderShippingPaymentDTO.PaymentStatus, PaymentMethod = orderShippingPaymentDTO.PaymentMethod, OrderID = order.Id, UserID = "" }; paymentRepository.Setup(mr => mr.Save(It.IsAny<Payment>())).Returns(payment); var checkoutService = new CheckoutService(mapper, orderRepository.Object, orderLineItemsRepository.Object, paymentRepository.Object, userManager.Object); var result = checkoutService.SaveOrder(orderShippingPaymentDTO); var ex = Assert.ThrowsAsync<InvalidOperationException>( () => checkoutService.SaveOrder(orderShippingPaymentDTO)); Assert.AreEqual("Can not save order Line items.", ex.Message); }