DROP FUNCTION IF EXISTS fnGetDokumentumOsztalyTanuloinakMegtartottOrakTantargyankent
GO

CREATE FUNCTION fnGetDokumentumOsztalyTanuloinakMegtartottOrakTantargyankent (
   @tanevId int
  ,@osztalyCsoportId int
)
RETURNS @result TABLE (
   Orakszama int
  ,TanuloId int
  ,TantargyId int
  ,TantargyNev nvarchar(255)
  ,Fotargye char(1)
  ,Altargye char(1)
  ,Gyakorlati char(1)
)
AS BEGIN

  DECLARE @kategoriaId int = (SELECT C_FELADATKATEGORIAID FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyCsoportId)

  INSERT INTO @result
  SELECT
     COUNT(1) AS Orakszama
    ,tcs.C_TANULOID AS TanuloId
    ,tgy.ID AS TantargyId
    ,ISNULL(tgy.C_NEVNYOMTATVANYBAN, tgy.C_NEV) AS TantargyNev
    ,C_FOTARGYE AS Fotargye
    ,C_ALTANTARGYKENTNYOMTATVANYBAN AS Altargye
    ,C_GYAKORLATI AS Gyakorlati
  FROM T_TANULOCSOPORT_OSSZES tcs
    INNER JOIN T_TANULOCSOPORT_OSSZES AS tcsAll ON tcsAll.C_TANULOID = tcs.C_TANULOID AND tcsAll.TOROLT='F'
    INNER JOIN T_TANITASIORA_OSSZES AS tao ON tao.C_OSZTALYCSOPORTID = tcsAll.C_OSZTALYCSOPORTID  AND tao.TOROLT='F'
      AND tao.C_DATUM >= tcsAll.C_BELEPESDATUM AND (tcsAll.C_KILEPESDATUM IS NULL OR tcsAll.C_KILEPESDATUM >=tao.C_DATUM) 
      AND tao.C_DATUM >= tcs.C_BELEPESDATUM AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= tao.C_DATUM) 
      AND tao.C_OSZTALYCSOPORTID IN (SELECT Id FROM fnGetDokumentumOsztalyVagyTanoraiCsoport(@tanevId))
      AND tao.C_MEGTARTOTT = 'T'
      AND tao.C_TANEVID = @TanevId
    INNER JOIN T_OSZTALYCSOPORT_OSSZES AS ocs ON ocs.ID = tao.C_OSZTALYCSOPORTID AND ocs.TOROLT='F'
      AND ocs.C_FELADATKATEGORIAID = @kategoriaId AND ocs.C_TANEVID = @TanevId
    INNER JOIN T_TANTARGY_OSSZES AS tgy ON tgy.ID = tao.C_TANTARGYID AND tgy.TOROLT='F'
      AND tgy.C_TANEVID = @TanevId
  WHERE tcs.C_OSZTALYCSOPORTID = @osztalyCsoportId AND tcs.TOROLT='F'
  GROUP BY 
     tcs.C_TANULOID
    ,tgy.ID
    ,C_GYAKORLATI
    ,tgy.C_NEVNYOMTATVANYBAN
    ,tgy.C_NEV
    ,tgy.C_FOTARGYE
    ,tgy.C_ALTANTARGYKENTNYOMTATVANYBAN
  RETURN
END
GO
