コード例 #1
0
        public async Task <int> GetBasketItemCountAsync(string customerId)
        {
            // TODO: Validate customerId.

            var specification = new BasketWithItemSpecification(customerId);
            var basket        = (await basketRepository.SelectAsync(specification)).FirstOrDefault();

            return(basket != null?basket.Details.Sum(detail => detail.Quantity) : 0);
        }
コード例 #2
0
        public async Task <BasketViewModel> GetOrCreateBasketForUser(string userName)
        {
            var basketSpec = new BasketWithItemSpecification(userName);
            var basket     = (await _basketRepository.ListAsync(basketSpec)).FirstOrDefault();

            if (basket == null)
            {
                return(await CreateBasketForUser(userName));
            }

            return(await CreateViewModelFromBasket(basket));
        }
コード例 #3
0
        public async Task TransferBasketAsync(string anonymousId, string userName)
        {
            Guard.Against.NullOrEmpty(anonymousId, nameof(anonymousId));
            Guard.Against.NullOrEmpty(userName, nameof(userName));

            var basketSpec = new BasketWithItemSpecification(anonymousId);
            var basket     = (await _basketRepository.ListAsync(basketSpec)).FirstOrDefault();

            if (basket == null)
            {
                return;
            }
            basket.BuyerId = userName;
            await _basketRepository.UpdateAsync(basket);
        }
コード例 #4
0
        public async Task TransferBasketAsync(string anonymousId, string customerId)
        {
            // TODO: Validate anonymousId, customerId.

            var specification = new BasketWithItemSpecification(anonymousId);
            var basket        = (await basketRepository.SelectAsync(specification)).FirstOrDefault();

            if (basket == null)
            {
                return;
            }

            basket.CustomerId = customerId;
            await basketRepository.UpdateAsync(basket);
        }
コード例 #5
0
        public async Task <int> GetBasketItemCountAsync(string userName)
        {
            Guard.Against.NullOrEmpty(userName, nameof(userName));
            var basketSpec = new BasketWithItemSpecification(userName);
            var basket     = (await _basketRepository.ListAsync(basketSpec)).FirstOrDefault();

            if (basket == null)
            {
                _logger.LogInformation($"No basket found for {userName}");
                return(0);
            }
            int count = basket.Items.Sum(i => i.Quantity);

            _logger.LogInformation($"Basket for {userName} has {count} items.");
            return(count);
        }