DROP FUNCTION IF EXISTS fnGetTanuloOsztaly
GO

CREATE FUNCTION fnGetTanuloOsztaly (
   @pTanuloId int
  ,@pDatum date = NULL
  ,@pFeladatKategoriaId int = NULL
  ,@pKiiratkozottNeJelenjenMeg bit = 1
)
RETURNS @ResultTable TABLE (
   ID int
  ,EvfolyamTipusId int
  ,OsztalyNev nvarchar (255)
  ,BelepesDatuma datetime
)
AS BEGIN

  INSERT INTO @ResultTable (
     ID
    ,EvfolyamTipusId
    ,OsztalyNev
    ,BelepesDatuma
  )
  SELECT
     OsztalyCsoport.ID
    ,OsztalyCsoport.C_EVFOLYAMTIPUSA
    ,OsztalyCsoport.C_NEV
    ,TanuloCsoport.C_BELEPESDATUM
  FROM T_TANULOCSOPORT_OSSZES TanuloCsoport
    INNER JOIN T_OSZTALY_OSSZES Osztaly ON Osztaly.ID	= TanuloCsoport.C_OSZTALYCSOPORTID AND Osztaly.C_ALTANEVID = TanuloCsoport.C_TANEVID
      AND Osztaly.TOROLT = 'F'
    INNER JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON OsztalyCsoport.ID = Osztaly.ID AND OsztalyCsoport.C_TANEVID = TanuloCsoport.C_TANEVID
      AND OsztalyCsoport.TOROLT	= 'F'
      AND (OsztalyCsoport.C_FELADATKATEGORIAID = @pFeladatKategoriaId OR @pFeladatKategoriaId IS NULL)
  WHERE TanuloCsoport.C_TANULOID = @pTanuloId
    AND	TanuloCsoport.TOROLT = 'F'
	AND TanuloCsoport.C_BELEPESDATUM <= ISNULL(@pDatum, CONVERT(date, GETDATE()))
	AND ((TanuloCsoport.C_KILEPESDATUM IS NULL OR TanuloCsoport.C_KILEPESDATUM > ISNULL(@pDatum, CONVERT(date, GETDATE()))) OR @pKiiratkozottNeJelenjenMeg = 0)

  RETURN

END
GO
