Exemplo n.º 1
0
        public IActionResult Put(Guid usuarioId, [FromBody] UpdateUsuarioModel usuarioModel)
        {
            if (usuarioModel == null)
            {
                return(BadRequest());
            }

            var usuarioEntity = _repository.RetornaUsuario(usuarioId);

            if (usuarioEntity == null)
            {
                return(NotFound());
            }

            // Valida email duplicado
            if (_repository.EmailExists(usuarioModel.Email, usuarioId))
            {
                ModelState.AddModelError("Email", "O e-mail informado já está sendo utilizado");
            }

            if (!ModelState.IsValid)
            {
                return(new UnprocessableEntityObjectResult(ModelState));
            }

            if (!_repository.UsuarioExists(usuarioId))
            {
                return(NotFound());
            }

            _mapper.Map(usuarioModel, usuarioEntity);

            _repository.AtualizaUsuario(usuarioEntity);

            if (!_repository.Save())
            {
                throw new Exception("Ocorreu um erro inesperado ao atualizar o usuário");
            }

            return(NoContent());
        }