From e0a6e5cc8a2f0699c8236dee8b863c45dbb77b95 Mon Sep 17 00:00:00 2001 From: andre00bejarano00vaca Date: Wed, 11 Mar 2026 16:14:40 -0400 Subject: [PATCH] se arreglo el visible y el aprobado --- .../controller/UserController.java | 12 ++--- .../service/UsuarioService.java | 46 ++++++++----------- 2 files changed, 25 insertions(+), 33 deletions(-) diff --git a/src/main/java/com/example/fercoganbackend/controller/UserController.java b/src/main/java/com/example/fercoganbackend/controller/UserController.java index a7f0020..6477a5f 100644 --- a/src/main/java/com/example/fercoganbackend/controller/UserController.java +++ b/src/main/java/com/example/fercoganbackend/controller/UserController.java @@ -122,22 +122,22 @@ public class UserController { private Long ci; private Long celular; private String nombre; - private boolean aprobado; - private boolean visible; + private Boolean aprobado; + private Boolean visible; - public boolean isAprobado() { + public Boolean isAprobado() { return aprobado; } - public void setAprobado(boolean aprobado) { + public void setAprobado(Boolean aprobado) { this.aprobado = aprobado; } - public boolean isVisible() { + public Boolean isVisible() { return visible; } - public void setVisible(boolean visible) { + public void setVisible(Boolean visible) { this.visible = visible; } diff --git a/src/main/java/com/example/fercoganbackend/service/UsuarioService.java b/src/main/java/com/example/fercoganbackend/service/UsuarioService.java index 0c101cf..0dc53ca 100644 --- a/src/main/java/com/example/fercoganbackend/service/UsuarioService.java +++ b/src/main/java/com/example/fercoganbackend/service/UsuarioService.java @@ -6,8 +6,11 @@ import com.example.fercoganbackend.entity.Usuario; import com.example.fercoganbackend.otros.ConfirmadoTF; import com.example.fercoganbackend.repository.RolesRepository; import com.example.fercoganbackend.repository.UsuarioRepository; +import jakarta.persistence.EntityNotFoundException; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + import java.util.List; import java.util.Set; @@ -99,49 +102,38 @@ public class UsuarioService { .orElse(null); // O podrías lanzar una excepción si el usuario no existe } + @Transactional // Asegura la integridad de los datos public Usuario actualizarParcial(Long id, UserController.UsuarioRequest request) { - // 1. Buscamos el usuario actual o lanzamos error si no existe + // 1. Buscamos el usuario actual Usuario usuarioExistente = repo.findById(id) - .orElseThrow(() -> new RuntimeException("Usuario no encontrado")); + .orElseThrow(() -> new EntityNotFoundException("Usuario con ID " + id + " no encontrado")); - // 2. Actualizamos solo si el campo no es nulo - if (request.getUsername() != null) { - usuarioExistente.setUsername(request.getUsername()); - } + // 2. Actualización de Strings y Objetos (Null-check) + if (request.getUsername() != null) usuarioExistente.setUsername(request.getUsername()); + if (request.getCi() != null) usuarioExistente.setCi(request.getCi()); + if (request.getCelular() != null) usuarioExistente.setCelular(request.getCelular()); + if (request.getNombre() != null) usuarioExistente.setNombre(request.getNombre()); - if(request.getCi()!= null){ - usuarioExistente.setCi(request.getCi()); - } - - if(request.getCelular()!= null){ - usuarioExistente.setCelular(request.getCelular()); - } - - if(request.getNombre()!= null){ - usuarioExistente.setNombre(request.getNombre()); - } - if(request.isVisible()){ + // 3. Manejo correcto de Booleanos (Usa Wrapper Boolean en el Request) + if (request.isVisible()!= null) { usuarioExistente.setVisible(request.isVisible()); } - - if(request.isAprobado()){ + if (request.isAprobado() != null) { usuarioExistente.setAprobado(request.isAprobado()); } - if (request.getPassword() != null) { - // ¡No olvides encriptarla si cambias el password! + // 4. Seguridad + if (request.getPassword() != null && !request.getPassword().isBlank()) { usuarioExistente.setPassword(encoder.encode(request.getPassword())); } + // 5. Relaciones if (request.getRol() != null) { - // Buscamos el objeto Rol por su ID (necesitas el RolesRepository) Roles nuevoRol = rolesRepository.findById(request.getRol()) - .orElseThrow(() -> new RuntimeException("El Rol especificado no existe")); - - usuarioExistente.setRol(nuevoRol); // Asignamos el objeto completo + .orElseThrow(() -> new EntityNotFoundException("El Rol " + request.getRol() + " no existe")); + usuarioExistente.setRol(nuevoRol); } - // 3. Guardamos los cambios return repo.save(usuarioExistente); }