Exemple #1
0
        public async Task <bool> InserirItemCarrinhoAsync(NovoCarrinhoItem novoCarrinhoItem)
        {
            if (novoCarrinhoItem == null)
            {
                throw new ArgumentNullException(nameof(novoCarrinhoItem));
            }

            var carrinhoItem = await _context.Set <CarrinhoItem>()
                               .Where(cItem => cItem.ClienteId.Equals(novoCarrinhoItem.ClienteId) && cItem.ProdutoId.Equals(novoCarrinhoItem.ProdutoId))
                               .SingleOrDefaultAsync();

            if (carrinhoItem == null)
            {
                carrinhoItem = new CarrinhoItem(novoCarrinhoItem);
                await _context.Set <CarrinhoItem>()
                .AddAsync(carrinhoItem);
            }
            else
            {
                carrinhoItem.Quantidade += novoCarrinhoItem.Quantidade;
            }

            await _context.SaveChangesAsync();

            return(true);
        }
Exemple #2
0
        public async Task <IActionResult> AdicionarAoCaorrinho([FromBody] NovoCarrinhoItem carrinhoItem)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    var errors = ModelState.Select(model => model.Value.Errors)
                                 .Where(model => model.Count > 0)
                                 .SelectMany(errors => errors.Select(erro => erro.ErrorMessage));

                    return(StatusCode((int)HttpStatusCode.BadRequest,
                                      Json(errors)));
                }

                var claimId = User
                              ?.FindFirst(ClaimTypes.PrimarySid)
                              ?.Value;

                if (long.TryParse(claimId, out long clienteId))
                {
                    carrinhoItem.ClienteId = clienteId;

                    var resultado = await _carrinhoService
                                    .InserirItemCarrinhoAsync(carrinhoItem);

                    if (resultado)
                    {
                        _logger.LogInformation($"Carrinho - AdicionarAoCarrinho - Sucesso - ClienteId '{clienteId}'");
                        return(StatusCode((int)HttpStatusCode.OK,
                                          Json("Item adicionado ao carrinho!")));
                    }
                    else
                    {
                        _logger.LogInformation($"Carrinho - AdicionarAoCarrinho - Erro - Estado inválido carrinho '{clienteId}'");

                        return(StatusCode((int)HttpStatusCode.BadRequest,
                                          Json("Falha ao adicionar ao carrinho")));
                    }
                }
                else
                {
                    _logger.LogWarning($"Carrinho - AdicionarAoCarrinho - Erro - ClienteId não numérico '{claimId}'");
                    return(StatusCode((int)HttpStatusCode.Unauthorized, Json("Precisa estar logado!")));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, $"Carrinho - AdicionarEndereco - Erro");

                return(StatusCode((int)HttpStatusCode.InternalServerError,
                                  Json("Ocorreu um erro ao processar a requisição.")));
            }
        }