public async Task <IActionResult> Put(int id, EditUsuarioRequest request) { if (request.UsuarioId != id) { return(BadRequest()); } request.UsuarioId = id; var result = await _usuarioService.EditUsuarioAsync(request); return(Ok(result)); }
public Usuario Map(EditUsuarioRequest request) { if (request == null) { return(null); } var usuario = new Usuario { UsuarioId = request.UsuarioId, Nome = request.Nome, Email = request.Email, DataNascimento = request.DataNascimento, Senha = request.Senha, SexoId = request.SexoId, Ativo = request.Ativo }; return(usuario); }
public async Task <UsuarioResponse> EditUsuarioAsync(EditUsuarioRequest request) { var usuario = await _usuarioRepository.GetAsync(request.UsuarioId); if (usuario == null) { throw new ArgumentException($"Usuário com o ID {request.UsuarioId} não existe."); } if (await ValidaEmailDuplicadoAlteracaoAsync(usuario.Email, request.Email)) { throw new ArgumentException($"Email {request.Email} já cadastrado."); } var entity = _usuarioMapper.Map(request); // Verifica se a senha foi alterada. // Caso afirmativo, gera e salva o novo hash e salt. if (!_securityService.ValidaSaltHash(request.Senha, usuario.Salt, usuario.Hash)) { // gera novo hash e salt var saltHashSenha = _securityService.GeraSaltHash(request.Senha); entity.Salt = saltHashSenha.Item1; entity.Hash = saltHashSenha.Item2; } else { entity.Salt = usuario.Salt; entity.Hash = usuario.Hash; } var result = _usuarioRepository.Update(entity); await _usuarioRepository.UnitOfWork.SaveChangesAsync(); _logger.LogInformation( Events.Edit, Messages.ChangesApplied_id, result?.UsuarioId); return(_usuarioMapper.Map(result)); }