DROP PROCEDURE  IF EXISTS uspGetDKTFileJogosultsag 
GO

CREATE PROCEDURE uspGetDKTFileJogosultsag
   @pTanuloId INT
  ,@pFileId INT
  ,@pTanevId INT
AS
BEGIN
  SET NOCOUNT ON;

  SELECT COUNT(1)
  FROM (
    SELECT oraf.C_OSZTALYCSOPORTID OsztalyCsoportId
    FROM T_ORAFILE_OSSZES oraf
    INNER JOIN T_DKT_FILE_OSSZES f ON oraf.C_DKT_FILEID = f.ID
    INNER JOIN T_TANULOCSOPORT_OSSZES tanuloOsztalyCsoportok ON tanuloOsztalyCsoportok.C_TANULOID = @pTanuloId
      AND tanuloOsztalyCsoportok.TOROLT = 'F'
      AND tanuloOsztalyCsoportok.C_OSZTALYCSOPORTID = oraf.C_OSZTALYCSOPORTID
      AND tanuloOsztalyCsoportok.C_BELEPESDATUM <= f.C_FELTOLTESDATUM
      AND (
        tanuloOsztalyCsoportok.C_KILEPESDATUM IS NULL
        OR tanuloOsztalyCsoportok.C_KILEPESDATUM >= f.C_FELTOLTESDATUM
        )
    WHERE oraf.C_DKT_FILEID = @pFileId
      AND oraf.C_ISTANULOLATHATO = 'T'
      AND oraf.TOROLT = 'F'
      AND f.TOROLT = 'F'
      AND f.C_TANEVID = @pTanevId
    
    UNION
    
    SELECT f.C_OSZTALYCSOPORTID OsztalyCsoportId
    FROM T_DKT_FELADATFILE_OSSZES ff
    INNER JOIN T_DKT_FELADAT_OSSZES f ON ff.C_FELADATID = f.ID
    INNER JOIN T_TANULOCSOPORT_OSSZES tanuloOsztalyCsoportok ON tanuloOsztalyCsoportok.C_TANULOID = @pTanuloId
      AND tanuloOsztalyCsoportok.TOROLT = 'F'
      AND tanuloOsztalyCsoportok.C_OSZTALYCSOPORTID = f.C_OSZTALYCSOPORTID
      AND tanuloOsztalyCsoportok.C_BELEPESDATUM <= f.C_BEADASHATARIDO
      AND (
        tanuloOsztalyCsoportok.C_KILEPESDATUM IS NULL
        OR tanuloOsztalyCsoportok.C_KILEPESDATUM > f.C_BEADASHATARIDO
        )
    WHERE ff.C_FILEID = @pFileId
      AND ff.TOROLT = 'F'
      AND f.TOROLT = 'F'
      AND ff.C_TANEVID = @pTanevId
    ) osztalyCsoportok
END
GO


