public ActionResult <dynamic> Post([FromBody] UsuarioModel usuarioModelInsersao) { try { Usuario usuarioConversao = _mapper.Map <UsuarioModel, Domain.Entities.Usuario>(usuarioModelInsersao); if (usuarioConversao != null) { if (usuarioConversao.Invalid) { return(StatusCode(StatusCodes.Status400BadRequest, new ErrorModel(usuarioConversao.Notifications))); } var usuarioExistente = _usuarioRepositorio.ObterPorLoginESenha(usuarioConversao.Login, usuarioConversao.Senha); if (usuarioExistente != null) { var token = TokenService.GenerateToken(usuarioExistente); var usuarioModel = _mapper.Map <Domain.Entities.Usuario, UsuarioModel>(usuarioExistente); usuarioModel.Senha = String.Empty; if (Formatacao.isCpf(usuarioExistente.Login) || usuarioExistente.Perfil == Domain.Enums.PerfilUsuario.Cliente) { var cliente = _clienteRepositorio.ObterPorCPF(usuarioExistente.Login); var clienteModel = _mapper.Map <Cliente, ClienteModel>(cliente); if (cliente != null && cliente.IdEndereco.HasValue) { var endereco = _enderecoRepository.Obter(cliente.IdEndereco.Value); if (endereco != null) { clienteModel.Endereco = _mapper.Map <Endereco, EnderecoModel>(endereco); } } return(new { usuario = usuarioModel, cliente = clienteModel, token = token }); } else { var operador = _operadorRepositorio.Obter(usuarioExistente.Login); return(new { usuario = usuarioModel, operador = _mapper.Map <Domain.Entities.Operador, OperadorModel>(operador), token = token }); } } else { return(NotFound("Usuário ou senha inválidos")); } } return(Ok()); } catch (Exception ex) { return(StatusCode(StatusCodes.Status500InternalServerError, "O Serviço está temporariamente indisponível.")); throw; } }