public Task <IReadOnlyList <CartItem> > GetAll(string userId) { var spec = new CardItemSpecification(userId); var cartItems = _unitOfWork.Repository <CartItem>().ListAsync(spec); return(cartItems); }
public async Task <Order> Add(string userId, int addressId) { var spec = new CardItemSpecification(userId); var cartItems = await _unitOfWork.Repository <CartItem>().ListAsync(spec); var user = await _userManager.FindByIdAsync(userId); if (!cartItems.Any() || user == null) { return(null); } Order order = new Order { UserId = user.Id, CreatedDate = DateTime.Now, AddressId = addressId, User = user, Amount = 1, Status = "InProgress" }; var newOrder = await _unitOfWork.Repository <Order>().Add(order); var items = new List <OrderItem>(); foreach (var item in cartItems) { var productItem = await _unitOfWork.Repository <ProductDetail>().GetByIdAsync((int)item.ProductDetail.ProductId); var orderItem = new OrderItem(); orderItem.OrderId = newOrder.Id; orderItem.Quantity = item.Quantity; orderItem.ProductDetailId = item.ProductDetailId; await _unitOfWork.Repository <OrderItem>().Add(orderItem); items.Add(orderItem); } foreach (var item in cartItems) { await _unitOfWork.Repository <CartItem>().Delete(item); } _unitOfWork.Dispose(); return(order); }