public async Task <CadastroEndereco> InserirEnderecoAsync(NovoEndereco novoEndereco) { if (novoEndereco == null) { throw new ArgumentNullException(nameof(novoEndereco)); } var estado = await _context.Set <Estado>() .Where(est => est.Sigla.Equals(novoEndereco.Estado.ToUpper())) .SingleOrDefaultAsync(); if (estado == null) { return(CadastroEndereco.EstadoInvalido); } var endereco = new Endereco(novoEndereco) { Estado = estado }; await _context.Set <Endereco>() .AddAsync(endereco); await _context.SaveChangesAsync(); return(CadastroEndereco.Sucesso); }
public async Task <IActionResult> InserirEndereco([FromBody] NovoEndereco endereco) { 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)) { endereco.ClienteId = clienteId; var resultado = await _clienteService .InserirEnderecoAsync(endereco); switch (resultado) { case CadastroEndereco.EstadoInvalido: _logger.LogInformation($"Cliente - InserirEndereco - Erro - Estado inválido ClienteId '{clienteId}', Estado '{endereco.Estado}'"); return(StatusCode((int)HttpStatusCode.BadRequest, Json("Estado inválido"))); default: _logger.LogInformation($"Cliente - InserirEndereco - Sucesso - ClienteId '{clienteId}'"); return(StatusCode((int)HttpStatusCode.OK, Json("Endereço cadastrado!"))); } } else { _logger.LogWarning($"Cliente - InserirEndereco - Erro - ClienteId não numérico '{claimId}'"); return(StatusCode((int)HttpStatusCode.Unauthorized)); } } catch (Exception ex) { _logger.LogError(ex, $"Cliente - AdicionarEndereco - Erro"); return(StatusCode((int)HttpStatusCode.InternalServerError, Json("Ocorreu um erro ao processar a requisição."))); } }