﻿DROP FUNCTION IF EXISTS fnGetOsztalyCsoportTanuloOsztalyList
GO

CREATE FUNCTION fnGetOsztalyCsoportTanuloOsztalyList (
   @pTanevId int
  ,@pOsztalyCsoportId int
  ,@pFeladatKategoriaId int
  ,@pDatum date = NULL
  ,@pIsFromSzervezet bit = 0
)
RETURNS TABLE
AS RETURN

  --NOTE: Azért kell a DISTINCT, ha ugyanoda ki-/besorolgatják a tanulót!
  SELECT DISTINCT 
     TanuloCsoport.C_TANULOID
    ,OsztalyCsoport.ID
    ,OsztalyCsoport.C_EVFOLYAMTIPUSA
  FROM T_TANULOCSOPORT_OSSZES TanuloCsoport
    INNER JOIN T_TANULOCSOPORT_OSSZES SourceTanuloCsoport ON SourceTanuloCsoport.TOROLT = 'F'
      AND SourceTanuloCsoport.C_OSZTALYCSOPORTID = @pOsztalyCsoportId
      AND SourceTanuloCsoport.C_TANULOID = TanuloCsoport.C_TANULOID
    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 @pIsFromSzervezet = 1)
  WHERE TanuloCsoport.C_TANEVID = @pTanevId
    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())))

GO

