예제 #1
0
        public Task <IReadOnlyList <CartItem> > GetAll(string userId)
        {
            var spec = new CardItemSpecification(userId);

            var cartItems = _unitOfWork.Repository <CartItem>().ListAsync(spec);

            return(cartItems);
        }
예제 #2
0
        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);
        }