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); }
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)); }
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); }
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); }
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); }