Class EmpleadoController

java.lang.Object
com.gestorrh.api.controller.EmpleadoController

@RestController @RequestMapping("/api/empleados") public class EmpleadoController extends Object
Controlador REST para la gestión integral de Empleados dentro de una organización.

Proporciona endpoints para el alta, listado, actualización, baja y readmisión de empleados, así como la gestión del perfil propio por parte de los mismos.

Todas las operaciones en este controlador requieren un token de autenticación válido y los permisos correspondientes según el rol del usuario (Empresa o Empleado).

  • Field Details

  • Constructor Details

    • EmpleadoController

      public EmpleadoController()
  • Method Details

    • crearEmpleado

      @PostMapping @PreAuthorize("hasRole(\'EMPRESA\')") public org.springframework.http.ResponseEntity<RespuestaCrearEmpleadoDTO> crearEmpleado(@Valid @RequestBody @Valid PeticionCrearEmpleadoDTO peticion)
      Endpoint para dar de alta un nuevo empleado en la empresa autenticada.

      Únicamente accesible para usuarios con el rol de 'EMPRESA'. Tras el alta, el sistema genera automáticamente una contraseña para el empleado.

      URL de acceso: POST http://localhost:8080/api/empleados

      Parameters:
      peticion - DTO con los datos personales y contractuales del nuevo empleado.
      Returns:
      ResponseEntity con el objeto RespuestaCrearEmpleadoDTO que incluye la contraseña generada y estado 201 (Created).
    • listarEmpleados

      @GetMapping @PreAuthorize("hasRole(\'EMPRESA\')") public org.springframework.http.ResponseEntity<List<RespuestaEmpleadoDTO>> listarEmpleados()
      Obtiene el listado completo de empleados pertenecientes a la empresa autenticada.

      Únicamente accesible para usuarios con el rol de 'EMPRESA'.

      URL de acceso: GET http://localhost:8080/api/empleados

      Returns:
      ResponseEntity con una lista de RespuestaEmpleadoDTO y estado 200 (OK).
    • actualizarEmpleado

      @PutMapping("/{id}") @PreAuthorize("hasRole(\'EMPRESA\')") public org.springframework.http.ResponseEntity<RespuestaEmpleadoDTO> actualizarEmpleado(@PathVariable("id") Long id, @Valid @RequestBody @Valid PeticionActualizarEmpleadoDTO peticion)
      Actualiza la información de un empleado existente identificado por su ID.

      Únicamente accesible para usuarios con el rol de 'EMPRESA'.

      URL de acceso: PUT http://localhost:8080/api/empleados/{id}

      Parameters:
      id - Identificador único del empleado a modificar.
      peticion - DTO con los nuevos datos a actualizar en la ficha del empleado.
      Returns:
      ResponseEntity con el RespuestaEmpleadoDTO actualizado y estado 200 (OK).
    • darDeBaja

      @PostMapping("/{id}/baja") @PreAuthorize("hasRole(\'EMPRESA\')") public org.springframework.http.ResponseEntity<Void> darDeBaja(@PathVariable Long id, @RequestBody @Valid @Valid PeticionBajaEmpleadoDTO peticion)
      Tramita la baja contractual de un empleado en una fecha determinada.

      El empleado dejará de tener acceso al sistema a partir de dicha fecha.

      URL de acceso: POST http://localhost:8080/api/empleados/{id}/baja

      Parameters:
      id - Identificador único del empleado que causa baja.
      peticion - DTO que contiene la fecha efectiva de la baja del contrato.
      Returns:
      ResponseEntity con cuerpo vacío y estado 204 (No Content) tras procesar la baja.
    • readmitirEmpleado

      @PostMapping("/{id}/readmitir") @PreAuthorize("hasRole(\'EMPRESA\')") public org.springframework.http.ResponseEntity<RespuestaCrearEmpleadoDTO> readmitirEmpleado(@PathVariable("id") Long id)
      Reinstaura a un empleado que se encontraba previamente de baja.

      Elimina la restricción de acceso, limpia la fecha de baja y genera una nueva contraseña.

      Únicamente accesible para usuarios con el rol de 'EMPRESA'.

      URL de acceso: POST http://localhost:8080/api/empleados/{id}/readmitir

      Parameters:
      id - Identificador único del empleado a readmitir.
      Returns:
      ResponseEntity con el objeto RespuestaCrearEmpleadoDTO y la nueva contraseña generada.
    • obtenerMiPerfil

      @GetMapping("/me") @PreAuthorize("hasRole(\'EMPLEADO\')") public org.springframework.http.ResponseEntity<RespuestaEmpleadoDTO> obtenerMiPerfil()
      Permite al empleado autenticado consultar su propia información de perfil.

      Únicamente accesible para usuarios con el rol de 'EMPLEADO'.

      URL de acceso: GET http://localhost:8080/api/empleados/me

      Returns:
      ResponseEntity con el RespuestaEmpleadoDTO que representa el perfil del usuario logueado.
    • cambiarMiContrasena

      @PutMapping("/me/contrasena") @PreAuthorize("hasRole(\'EMPLEADO\')") public org.springframework.http.ResponseEntity<Void> cambiarMiContrasena(@Valid @RequestBody @Valid PeticionCambiarPasswordDTO peticion)
      Permite al empleado autenticado actualizar su contraseña de acceso personal.

      Únicamente accesible para usuarios con el rol de 'EMPLEADO'.

      URL de acceso: PUT http://localhost:8080/api/empleados/me/contrasena

      Parameters:
      peticion - DTO que incluye la contraseña actual y la nueva contraseña elegida.
      Returns:
      ResponseEntity con cuerpo vacío y estado 204 (No Content) tras el cambio exitoso.
    • obtenerRoles

      @GetMapping("/roles") @PreAuthorize("hasAnyRole(\'EMPRESA\', \'EMPLEADO\')") public org.springframework.http.ResponseEntity<List<RolEmpleado>> obtenerRoles()
      Proporciona el listado de todos los roles de empleado disponibles en el sistema.

      Sirve como endpoint de diccionario para facilitar la selección de roles en interfaces de usuario.

      URL de acceso: GET http://localhost:8080/api/empleados/roles

      Returns:
      ResponseEntity con una lista de los posibles valores del enum RolEmpleado.