public async Task <IActionResult> Post([FromBody] AddShoppingCartModel shoppingCartModel) { IIdentity fedIdentity = GetFederationIdentity(HttpContext.User.Identities); if (null == fedIdentity) { return(ResponseHelper.Forbidden()); } // Get current user session id. string sessionID = string.Empty; if (fedIdentity.IsAuthenticated) { int count = await _cartItemRepository.AddAsync( sessionID, shoppingCartModel.UserID, shoppingCartModel.ProductID, shoppingCartModel.Amount); if (count > 0) { return(Ok()); } } return(ResponseHelper.NotAcceptable()); }
public async Task <IActionResult> Post([FromBody] AddShoppingCartModel model) { if (string.IsNullOrEmpty(model.UserID) || Guid.Empty == model.ProductID || 0 >= model.Amount) { return(ResponseHelper.NotAcceptable()); } var product = await _productRepository.GetAsync(model.ProductID); if (null == product) { return(NotFound()); } List <ShipAddress> addressList = await _shipAddressRepository.GetAddressAsync(model.UserID, 50, 0); Order order = new Order() { Address = addressList.Count > 0 ? addressList[0].ToString() + "(mobile)" : string.Empty + "(mobile)", OrderID = Guid.NewGuid(), OrderDate = DateTime.Now, OrderStatus = OrderStatus.PendingPayment, UserID = model.UserID, }; OrderDetail orderDetail = new OrderDetail() { OrderID = order.OrderID, PlaceDate = DateTime.Now, ProductName = product.ProductName, ProductID = product.ProductID, ThumbImagePath = product.ThumbnailImage, UnitPrice = product.UnitPrice, Quantity = model.Amount, SubTotal = product.UnitPrice * model.Amount }; order.TotalPrice = orderDetail.SubTotal; Guid orderID = await _orderRepository.AddAsync(order); // Add order failed. if (orderID == Guid.Empty) { return(ResponseHelper.InternalServerError()); } int count = await _orderDetailRepository.AddAsync(orderDetail); if (0 < count) { return(Ok()); } else { return(ResponseHelper.InternalServerError()); } }