Interface AusenciaRepository

All Superinterfaces:
org.springframework.data.repository.CrudRepository<Ausencia,Long>, org.springframework.data.jpa.repository.JpaRepository<Ausencia,Long>, org.springframework.data.repository.ListCrudRepository<Ausencia,Long>, org.springframework.data.repository.ListPagingAndSortingRepository<Ausencia,Long>, org.springframework.data.repository.PagingAndSortingRepository<Ausencia,Long>, org.springframework.data.repository.query.QueryByExampleExecutor<Ausencia>, org.springframework.data.repository.Repository<Ausencia,Long>

@Repository public interface AusenciaRepository extends org.springframework.data.jpa.repository.JpaRepository<Ausencia,Long>
Repositorio para gestionar las operaciones de base de datos de la entidad Ausencia. Gestiona solicitudes de vacaciones, bajas médicas y otros tipos de ausencias de los empleados.
  • Method Details

    • findByEmpleadoEmpresaIdEmpresa

      List<Ausencia> findByEmpleadoEmpresaIdEmpresa(Long idEmpresa)
      Recupera todas las ausencias de una empresa.
      Parameters:
      idEmpresa - El ID de la empresa.
      Returns:
      Lista de ausencias de la empresa.
    • findByEmpleadoEmpresaIdEmpresaAndEstado

      List<Ausencia> findByEmpleadoEmpresaIdEmpresaAndEstado(Long idEmpresa, EstadoAusencia estado)
      Recupera las ausencias de una empresa filtradas por su estado.
      Parameters:
      idEmpresa - El ID de la empresa.
      estado - El estado de la ausencia (PENDIENTE, APROBADA, RECHAZADA).
      Returns:
      Lista de ausencias en ese estado.
    • findByEmpleadoEmpresaIdEmpresaAndEmpleadoDepartamentoIgnoreCase

      List<Ausencia> findByEmpleadoEmpresaIdEmpresaAndEmpleadoDepartamentoIgnoreCase(Long idEmpresa, String departamento)
      Busca ausencias en un departamento específico de una empresa.
      Parameters:
      idEmpresa - El ID de la empresa.
      departamento - El nombre del departamento.
      Returns:
      Lista de ausencias en el departamento.
    • findByEmpleadoEmpresaIdEmpresaAndEmpleadoDepartamentoIgnoreCaseAndEstado

      List<Ausencia> findByEmpleadoEmpresaIdEmpresaAndEmpleadoDepartamentoIgnoreCaseAndEstado(Long idEmpresa, String departamento, EstadoAusencia estado)
      Busca ausencias en un departamento específico y con un estado determinado.
      Parameters:
      idEmpresa - El ID de la empresa.
      departamento - El nombre del departamento.
      estado - El estado de la ausencia.
      Returns:
      Lista de ausencias filtradas.
    • findByEmpleadoIdEmpleado

      List<Ausencia> findByEmpleadoIdEmpleado(Long idEmpleado)
      Recupera todas las ausencias asociadas a un empleado.
      Parameters:
      idEmpleado - El ID del empleado.
      Returns:
      Lista de ausencias del empleado.
    • findByEmpleadoIdEmpleadoAndEstado

      List<Ausencia> findByEmpleadoIdEmpleadoAndEstado(Long idEmpleado, EstadoAusencia estado)
      Recupera las ausencias de un empleado filtradas por estado.
      Parameters:
      idEmpleado - El ID del empleado.
      estado - El estado de la ausencia.
      Returns:
      Lista de ausencias del empleado en ese estado.
    • tieneAusenciaAprobadaEnFecha

      @Query("SELECT COUNT(a) > 0 FROM Ausencia a WHERE a.empleado.idEmpleado = :idEmpleado AND a.estado = :estado AND :fecha BETWEEN a.fechaInicio AND a.fechaFin") boolean tieneAusenciaAprobadaEnFecha(@Param("idEmpleado") Long idEmpleado, @Param("estado") EstadoAusencia estado, @Param("fecha") LocalDate fecha)
      Verifica si un empleado tiene una ausencia aprobada en una fecha específica.
      Parameters:
      idEmpleado - El ID del empleado.
      estado - El estado de la ausencia (normalmente APROBADA).
      fecha - La fecha a comprobar.
      Returns:
      True si existe una ausencia aprobada en esa fecha, false en caso contrario.
    • findAusenciasSolapadas

      @Query("SELECT a FROM Ausencia a WHERE a.empleado.idEmpleado = :idEmpleado AND a.estado IN :estados AND (a.fechaInicio <= :fechaFin AND a.fechaFin >= :fechaInicio)") List<Ausencia> findAusenciasSolapadas(@Param("idEmpleado") Long idEmpleado, @Param("estados") List<EstadoAusencia> estados, @Param("fechaInicio") LocalDate fechaInicio, @Param("fechaFin") LocalDate fechaFin)
      Busca ausencias de un empleado que se solapen con un rango de fechas dado.
      Parameters:
      idEmpleado - El ID del empleado.
      estados - Lista de estados a considerar (ej. PENDIENTE, APROBADA).
      fechaInicio - Fecha inicial del rango.
      fechaFin - Fecha final del rango.
      Returns:
      Lista de ausencias que coinciden en el tiempo con el periodo indicado.
    • contarAusenciasAprobadasPorTipo

      @Query("SELECT a.tipo, COUNT(a) FROM Ausencia a WHERE a.empleado.empresa.idEmpresa = :idEmpresa AND a.estado = \'APROBADA\' GROUP BY a.tipo") List<Object[]> contarAusenciasAprobadasPorTipo(@Param("idEmpresa") Long idEmpresa)
      Obtiene el recuento de ausencias aprobadas agrupadas por tipo para una empresa.
      Parameters:
      idEmpresa - El ID de la empresa.
      Returns:
      Lista de objetos con el tipo y el conteo.
    • contarAusenciasPorEstado

      @Query("SELECT a.estado, COUNT(a) FROM Ausencia a WHERE a.empleado.empresa.idEmpresa = :idEmpresa GROUP BY a.estado") List<Object[]> contarAusenciasPorEstado(@Param("idEmpresa") Long idEmpresa)
      Obtiene el recuento de ausencias agrupadas por estado para una empresa.
      Parameters:
      idEmpresa - El ID de la empresa.
      Returns:
      Lista de objetos con el estado y el conteo.
    • contarEmpleadosAusentesHoy

      @Query("SELECT COUNT(DISTINCT a.empleado.idEmpleado) FROM Ausencia a WHERE a.empleado.empresa.idEmpresa = :idEmpresa AND a.estado = \'APROBADA\' AND :fechaHoy BETWEEN a.fechaInicio AND a.fechaFin") Long contarEmpleadosAusentesHoy(@Param("idEmpresa") Long idEmpresa, @Param("fechaHoy") LocalDate fechaHoy)
      Cuenta el número de empleados distintos que están ausentes hoy (con ausencia aprobada).
      Parameters:
      idEmpresa - El ID de la empresa.
      fechaHoy - La fecha actual.
      Returns:
      Número total de empleados ausentes hoy.