diff --git a/src/main/java/com/example/fercoganbackend/controller/UserController.java b/src/main/java/com/example/fercoganbackend/controller/UserController.java index dbd53c4..af0ce00 100644 --- a/src/main/java/com/example/fercoganbackend/controller/UserController.java +++ b/src/main/java/com/example/fercoganbackend/controller/UserController.java @@ -68,10 +68,10 @@ public class UserController { } // ✅ Actualizar usuario (por id) - @PutMapping("/{id}") - public Usuario actualizarUsuario(@PathVariable Long id, @RequestBody Usuario usuario) { - return service.actualizarUsuario(id, usuario); - } + //@PutMapping("/{id}") + //public Usuario actualizarUsuario(@PathVariable Long id, @RequestBody Usuario usuario) { + // return service.actualizarUsuario(id, usuario); + //} // ✅ Eliminar usuario @@ -97,6 +97,13 @@ public class UserController { return ResponseEntity.ok(response); } + @PutMapping("/{id}") + public Usuario actualizarUsuario(@PathVariable Long id, @RequestBody UsuarioRequest request) { + return service.actualizarParcial(id, request); + } + + + // ✅ DTO interno para registro diff --git a/src/main/java/com/example/fercoganbackend/service/UsuarioService.java b/src/main/java/com/example/fercoganbackend/service/UsuarioService.java index a978e40..7e38a88 100644 --- a/src/main/java/com/example/fercoganbackend/service/UsuarioService.java +++ b/src/main/java/com/example/fercoganbackend/service/UsuarioService.java @@ -1,4 +1,5 @@ package com.example.fercoganbackend.service; +import com.example.fercoganbackend.controller.UserController; import com.example.fercoganbackend.entity.Rol; import com.example.fercoganbackend.entity.Roles; import com.example.fercoganbackend.entity.Usuario; @@ -95,6 +96,33 @@ public class UsuarioService { .orElse(null); // O podrías lanzar una excepción si el usuario no existe } + public Usuario actualizarParcial(Long id, UserController.UsuarioRequest request) { + // 1. Buscamos el usuario actual o lanzamos error si no existe + Usuario usuarioExistente = repo.findById(id) + .orElseThrow(() -> new RuntimeException("Usuario no encontrado")); + + // 2. Actualizamos solo si el campo no es nulo + if (request.getUsername() != null) { + usuarioExistente.setUsername(request.getUsername()); + } + + if (request.getPassword() != null) { + // ¡No olvides encriptarla si cambias el password! + usuarioExistente.setPassword(request.getPassword()); + } + + 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 + } + + // 3. Guardamos los cambios + return repo.save(usuarioExistente); + } + } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 03fcd84..1b1d6d5 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,5 +1,5 @@ spring.application.name=fercoganbackend -spring.profiles.active=prod +spring.profiles.active=dev spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.jpa.hibernate.ddl-auto=update