Class AusenciaController

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

@RestController @RequestMapping("/api/ausencias") public class AusenciaController extends Object
Controlador REST para la gestión integral del ciclo de vida de las Ausencias.

Permite a los empleados solicitar ausencias y adjuntar justificantes, y a las empresas o supervisores revisar, aprobar o denegar dichas solicitudes.

  • Field Details

  • Constructor Details

    • AusenciaController

      public AusenciaController()
  • Method Details

    • obtenerTiposAusencia

      @GetMapping("/tipos") @PreAuthorize("hasAnyRole(\'EMPRESA\', \'EMPLEADO\')") public org.springframework.http.ResponseEntity<List<TipoAusencia>> obtenerTiposAusencia()
      Obtiene el listado de todos los tipos de ausencia configurados en el sistema.

      Sirve como endpoint de consulta para cargar opciones en formularios de solicitud.

      URL de acceso: GET http://localhost:8080/api/ausencias/tipos

      Returns:
      ResponseEntity con una lista de los valores del enum TipoAusencia.
    • obtenerEstadosAusencia

      @GetMapping("/estados") @PreAuthorize("hasAnyRole(\'EMPRESA\', \'EMPLEADO\')") public org.springframework.http.ResponseEntity<List<EstadoAusencia>> obtenerEstadosAusencia()
      Obtiene el listado de los posibles estados en los que puede encontrarse una ausencia.

      Facilita el filtrado de solicitudes en las interfaces de usuario.

      URL de acceso: GET http://localhost:8080/api/ausencias/estados

      Returns:
      ResponseEntity con una lista de los valores del enum EstadoAusencia.
    • crearAusencia

      @PostMapping(consumes="multipart/form-data") @PreAuthorize("hasRole(\'EMPLEADO\')") public org.springframework.http.ResponseEntity<RespuestaAusenciaDTO> crearAusencia(@RequestPart("datos") @Valid @Valid PeticionAusenciaDTO peticion, @RequestPart(value="archivo",required=false) org.springframework.web.multipart.MultipartFile archivo)
      Permite a un empleado crear una nueva solicitud de ausencia.

      El endpoint soporta el envío de datos en formato JSON y un archivo (justificante) opcional.

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

      Parameters:
      peticion - DTO con los detalles de la ausencia (fechas, tipo, motivo).
      archivo - Archivo opcional que sirve como justificante documental de la ausencia.
      Returns:
      ResponseEntity con el RespuestaAusenciaDTO creado y estado 201 (Created).
    • obtenerMisAusencias

      @GetMapping("/me") @PreAuthorize("hasRole(\'EMPLEADO\')") public org.springframework.http.ResponseEntity<List<RespuestaAusenciaDTO>> obtenerMisAusencias(@RequestParam(value="estado",required=false) EstadoAusencia estado)
      Recupera el historial de ausencias solicitadas por el empleado que realiza la petición.

      Permite el filtrado opcional por el estado de la solicitud.

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

      Parameters:
      estado - Estado opcional por el cual filtrar las ausencias del empleado.
      Returns:
      ResponseEntity con la lista de RespuestaAusenciaDTO del empleado autenticado.
    • actualizarMiAusencia

      @PutMapping(value="/{id}", consumes="multipart/form-data") @PreAuthorize("hasRole(\'EMPLEADO\')") public org.springframework.http.ResponseEntity<RespuestaAusenciaDTO> actualizarMiAusencia(@PathVariable("id") Long id, @RequestPart("datos") @Valid @Valid PeticionAusenciaDTO peticion, @RequestPart(value="archivo",required=false) org.springframework.web.multipart.MultipartFile archivo)
      Permite a un empleado actualizar los datos o el justificante de una ausencia ya solicitada.

      Únicamente se permiten cambios si la ausencia se encuentra en un estado que permita edición.

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

      Parameters:
      id - Identificador único de la ausencia a modificar.
      peticion - DTO con los nuevos datos de la ausencia.
      archivo - Nuevo archivo justificante opcional que reemplazará al anterior si se proporciona.
      Returns:
      ResponseEntity con el RespuestaAusenciaDTO actualizado.
    • eliminarMiAusencia

      @DeleteMapping("/{id}") @PreAuthorize("hasRole(\'EMPLEADO\')") public org.springframework.http.ResponseEntity<Void> eliminarMiAusencia(@PathVariable("id") Long id)
      Elimina de forma permanente una solicitud de ausencia realizada por el empleado.

      Solo es posible eliminar ausencias que aún no hayan sido procesadas definitivamente.

      URL de acceso: DELETE http://localhost:8080/api/ausencias/{id}

      Parameters:
      id - Identificador único de la ausencia a eliminar.
      Returns:
      ResponseEntity con cuerpo vacío y estado 204 (No Content).
    • listarAusenciasPermitidas

      @GetMapping @PreAuthorize("hasAnyRole(\'EMPRESA\', \'EMPLEADO\')") public org.springframework.http.ResponseEntity<List<RespuestaAusenciaDTO>> listarAusenciasPermitidas(@RequestParam(value="estado",required=false) EstadoAusencia estado)
      Lista todas las solicitudes de ausencia que el usuario autenticado tiene permiso para visualizar.

      Las empresas ven todas las de sus empleados, mientras que los supervisores ven las de su departamento.

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

      Parameters:
      estado - Estado opcional para filtrar el listado de ausencias a revisar.
      Returns:
      ResponseEntity con la lista de RespuestaAusenciaDTO permitidas.
    • revisarAusencia

      @PutMapping("/{id}/revision") @PreAuthorize("hasAnyRole(\'EMPRESA\', \'EMPLEADO\')") public org.springframework.http.ResponseEntity<RespuestaAusenciaDTO> revisarAusencia(@PathVariable("id") Long id, @Valid @RequestBody @Valid PeticionRevisionAusenciaDTO peticion)
      Procesa la revisión de una solicitud de ausencia, permitiendo su aprobación o denegación.

      Se debe incluir un comentario de revisión que justifique la decisión tomada.

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

      Parameters:
      id - Identificador único de la ausencia a revisar.
      peticion - DTO con el nuevo estado (aprobado/denegado) y el comentario de revisión.
      Returns:
      ResponseEntity con el RespuestaAusenciaDTO actualizado tras la revisión.
    • descargarJustificante

      @GetMapping("/justificantes/{nombreArchivo}") @PreAuthorize("hasAnyRole(\'EMPRESA\', \'SUPERVISOR\', \'EMPLEADO\')") public org.springframework.http.ResponseEntity<org.springframework.core.io.Resource> descargarJustificante(@PathVariable String nombreArchivo)
      Permite la descarga del archivo justificante asociado a una solicitud de ausencia.

      El archivo se retorna como un recurso descargable con las cabeceras HTTP apropiadas.

      URL de acceso: GET http://localhost:8080/api/ausencias/justificantes/{nombreArchivo}

      Parameters:
      nombreArchivo - Nombre del archivo almacenado en el sistema que se desea descargar.
      Returns:
      ResponseEntity que contiene el archivo como Resource y las cabeceras de descarga.