public async Task <IActionResult> ActualizarUsuario(int id, [FromBody] UsuarioActualizarDto usuarioActualizarDto) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var currentUserId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value); var userFromRepo = await _usuario.ObtenerUsuario(new Usuario { Id = id }); if (userFromRepo == null) { return(NotFound($"No se pido encontrar el usuario con el ID {id}")); } if (currentUserId != userFromRepo.Id) { return(Unauthorized()); } _mapper.Map(usuarioActualizarDto, userFromRepo); if (await _usuario.ActualizarUsuario(userFromRepo)) { return(NoContent()); } throw new Exception($"Actualizacion del usuario {id} Fallo"); }
public async Task <IActionResult> UpdateUsuario(UsuarioActualizarDto usuarioActualizarDto) { string errMsg = $"{nameof(UpdateUsuario)} un error producido mientras se actualiza el usuario"; Usuario usuarioUpdated = new Usuario(); if (ModelState.IsValid) { try { Usuario usuario = new Usuario(); usuario = _mapper.Map <Usuario>(usuarioActualizarDto); Usuario usuarioTemporal = await _service.GetUsuarioByGuid(usuario.Guid); if (usuarioTemporal.Email == null) { return(StatusCode(Status.Accepted, new { error = "El correo electronico indicado es nulo." })); } if (!usuarioTemporal.Email.Equals(usuario.Email)) { return(StatusCode(Status.Accepted, new { error = "Se ha intentado modificar el correo electronico para el usuario indicado." })); } if (!usuarioActualizarDto.NombreUsuario.validarUserName()) { return(StatusCode(Status.Accepted, new { error = "El nombre de usuario debe cumplir con el patron correcto." })); } if (!usuarioActualizarDto.Email.validarEmail()) { return(StatusCode(Status.Accepted, new { error = "El correo electronico debe cumplir con el patron correcto." })); } usuarioUpdated = await _service.CreateUpdateUsuario(usuario, usuarioActualizarDto.RolId); } catch (Exception ex) { return(StatusCode(Status.Accepted, new { error = errMsg + ex })); } } return(StatusCode(Status.OK, usuarioUpdated)); }