Class AsignacionTurnoController

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

@RestController @RequestMapping("/api/asignaciones") public class AsignacionTurnoController extends Object
Controlador REST para la gestión de asignaciones de turnos de trabajo a empleados.

Permite la planificación de horarios, la consulta de asignaciones propias y generales, así como la modificación y eliminación de estas por parte de usuarios autorizados.

  • Field Details

  • Constructor Details

    • AsignacionTurnoController

      public AsignacionTurnoController()
  • Method Details

    • crearAsignacion

      @PostMapping @PreAuthorize("hasAnyRole(\'EMPRESA\', \'EMPLEADO\')") public org.springframework.http.ResponseEntity<RespuestaAsignacionTurnoDTO> crearAsignacion(@Valid @RequestBody @Valid PeticionAsignacionTurnoDTO peticion)
      Registra una nueva asignación de turno para un empleado específico.

      Este endpoint es utilizado por perfiles con capacidad de planificación (Empresa o Supervisores).

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

      Parameters:
      peticion - DTO con los detalles de la asignación (empleado, turno, fecha, modalidad).
      Returns:
      ResponseEntity con el RespuestaAsignacionTurnoDTO creado y estado 201 (Created).
    • listarAsignaciones

      @GetMapping @PreAuthorize("hasAnyRole(\'EMPRESA\', \'EMPLEADO\')") public org.springframework.http.ResponseEntity<List<RespuestaAsignacionTurnoDTO>> listarAsignaciones()
      Obtiene el listado de asignaciones de turno según los permisos del usuario.

      Las organizaciones con rol 'EMPRESA' visualizan todas las asignaciones, mientras que los supervisores acceden a las de su ámbito de responsabilidad.

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

      Returns:
      ResponseEntity con la lista de RespuestaAsignacionTurnoDTO permitidas.
    • obtenerMisAsignaciones

      @GetMapping("/me") @PreAuthorize("hasRole(\'EMPLEADO\')") public org.springframework.http.ResponseEntity<List<RespuestaAsignacionTurnoDTO>> obtenerMisAsignaciones()
      Recupera el listado exclusivo de asignaciones de turno para el empleado autenticado.

      Permite al trabajador conocer su planificación horaria personal.

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

      Returns:
      ResponseEntity con la lista de RespuestaAsignacionTurnoDTO del usuario logueado.
    • actualizarAsignacion

      @PutMapping("/{id}") @PreAuthorize("hasAnyRole(\'EMPRESA\', \'EMPLEADO\')") public org.springframework.http.ResponseEntity<RespuestaAsignacionTurnoDTO> actualizarAsignacion(@PathVariable("id") Long id, @Valid @RequestBody @Valid PeticionAsignacionTurnoDTO peticion)
      Modifica una asignación de turno previamente registrada.

      Requiere la especificación de un motivo para el cambio con fines de auditoría.

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

      Parameters:
      id - Identificador único de la asignación a modificar.
      peticion - DTO con los nuevos datos de la asignación y el motivo del cambio.
      Returns:
      ResponseEntity con el RespuestaAsignacionTurnoDTO actualizado.
    • eliminarAsignacion

      @DeleteMapping("/{id}") @PreAuthorize("hasAnyRole(\'EMPRESA\', \'EMPLEADO\')") public org.springframework.http.ResponseEntity<Void> eliminarAsignacion(@PathVariable("id") Long id)
      Elimina de forma permanente una asignación de turno del sistema.

      Esta operación es destructiva y debe usarse para correcciones de planificación.

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

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

      @GetMapping("/modalidades") @PreAuthorize("hasAnyRole(\'EMPRESA\', \'EMPLEADO\')") public org.springframework.http.ResponseEntity<List<ModalidadTurno>> obtenerModalidades()
      Proporciona el listado de modalidades de turno disponibles (Presencial, Teletrabajo, etc.).

      Sirve como endpoint de diccionario para la interfaz de usuario.

      URL de acceso: GET http://localhost:8080/api/asignaciones/modalidades

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