Beispiel #1
0
        public async Task <CarrinhoViewModel> GetOrCreateCarrinhoForUser(string usuarioNome)
        {
            var carrinhoSpec = new CarrinhoComItemsSpecification(usuarioNome);
            var carrinho     = (await _carrinhoRepository.ListAsync(carrinhoSpec)).FirstOrDefault();

            if (carrinho == null)
            {
                return(await CreateCarrinhoForUser(usuarioNome));
            }
            return(CreateViewModelFromCarrinho(carrinho));
        }
Beispiel #2
0
        public async Task TransferCarrinhoAsync(string anonimosId, string usuarioNome)
        {
            Guard.Against.NullOrEmpty(anonimosId, nameof(anonimosId));
            Guard.Against.NullOrEmpty(usuarioNome, nameof(usuarioNome));
            var carrinhoSpec = new CarrinhoComItemsSpecification(anonimosId);
            var carrinho     = (await _carrinhoRepository.ListAsync(carrinhoSpec)).FirstOrDefault();

            if (carrinho == null)
            {
                return;
            }
            carrinho.CompraId = usuarioNome;
            await _carrinhoRepository.UpdateAsync(carrinho);
        }
Beispiel #3
0
        public async Task <int> GetCarrinhoItemCountAsync(string usuarioNome)
        {
            Guard.Against.NullOrEmpty(usuarioNome, nameof(usuarioNome));
            var carrinhoSpec = new CarrinhoComItemsSpecification(usuarioNome);
            var carrinho     = (await _carrinhoRepository.ListAsync(carrinhoSpec)).FirstOrDefault();

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

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