se arreglo el visible y el aprobado
Some checks failed
Deploy Spring Boot App / build-and-deploy (push) Has been cancelled

This commit is contained in:
2026-03-11 16:14:40 -04:00
parent f8d022d007
commit e0a6e5cc8a
2 changed files with 25 additions and 33 deletions

View File

@@ -122,22 +122,22 @@ public class UserController {
private Long ci; private Long ci;
private Long celular; private Long celular;
private String nombre; private String nombre;
private boolean aprobado; private Boolean aprobado;
private boolean visible; private Boolean visible;
public boolean isAprobado() { public Boolean isAprobado() {
return aprobado; return aprobado;
} }
public void setAprobado(boolean aprobado) { public void setAprobado(Boolean aprobado) {
this.aprobado = aprobado; this.aprobado = aprobado;
} }
public boolean isVisible() { public Boolean isVisible() {
return visible; return visible;
} }
public void setVisible(boolean visible) { public void setVisible(Boolean visible) {
this.visible = visible; this.visible = visible;
} }

View File

@@ -6,8 +6,11 @@ import com.example.fercoganbackend.entity.Usuario;
import com.example.fercoganbackend.otros.ConfirmadoTF; import com.example.fercoganbackend.otros.ConfirmadoTF;
import com.example.fercoganbackend.repository.RolesRepository; import com.example.fercoganbackend.repository.RolesRepository;
import com.example.fercoganbackend.repository.UsuarioRepository; import com.example.fercoganbackend.repository.UsuarioRepository;
import jakarta.persistence.EntityNotFoundException;
import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
import java.util.Set; 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 .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) { 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) 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 // 2. Actualización de Strings y Objetos (Null-check)
if (request.getUsername() != null) { if (request.getUsername() != null) usuarioExistente.setUsername(request.getUsername());
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){ // 3. Manejo correcto de Booleanos (Usa Wrapper Boolean en el Request)
usuarioExistente.setCi(request.getCi()); if (request.isVisible()!= null) {
}
if(request.getCelular()!= null){
usuarioExistente.setCelular(request.getCelular());
}
if(request.getNombre()!= null){
usuarioExistente.setNombre(request.getNombre());
}
if(request.isVisible()){
usuarioExistente.setVisible(request.isVisible()); usuarioExistente.setVisible(request.isVisible());
} }
if (request.isAprobado() != null) {
if(request.isAprobado()){
usuarioExistente.setAprobado(request.isAprobado()); usuarioExistente.setAprobado(request.isAprobado());
} }
if (request.getPassword() != null) { // 4. Seguridad
// ¡No olvides encriptarla si cambias el password! if (request.getPassword() != null && !request.getPassword().isBlank()) {
usuarioExistente.setPassword(encoder.encode(request.getPassword())); usuarioExistente.setPassword(encoder.encode(request.getPassword()));
} }
// 5. Relaciones
if (request.getRol() != null) { if (request.getRol() != null) {
// Buscamos el objeto Rol por su ID (necesitas el RolesRepository)
Roles nuevoRol = rolesRepository.findById(request.getRol()) Roles nuevoRol = rolesRepository.findById(request.getRol())
.orElseThrow(() -> new RuntimeException("El Rol especificado no existe")); .orElseThrow(() -> new EntityNotFoundException("El Rol " + request.getRol() + " no existe"));
usuarioExistente.setRol(nuevoRol);
usuarioExistente.setRol(nuevoRol); // Asignamos el objeto completo
} }
// 3. Guardamos los cambios
return repo.save(usuarioExistente); return repo.save(usuarioExistente);
} }