DROP PROCEDURE IF EXISTS uspGetTanuloOsztalyCsoportjai GO CREATE PROCEDURE uspGetTanuloOsztalyCsoportjai @pTanuloIds nvarchar (max) ,@pTanevId int ,@pIsAktiv bit ,@pFeladatKategoriaId int ,@pOsztalyfonokIds nvarchar (max) ,@pOktatasiNevelesiFeladatId int = null AS BEGIN SET NOCOUNT ON; DECLARE @tanevNev nvarchar (30) ,@sql nvarchar (max) =N'' SELECT @tanevNev = C_NEV FROM T_TANEV WHERE ID = @pTanevId IF @pTanuloIds IS NOT NULL BEGIN SET @sql += N' CREATE TABLE #TanuloIds (TanuloId int) INSERT INTO #TanuloIds(TanuloId) SELECT value FROM STRING_SPLIT(@pTanuloIds,'','') ' END IF @pOsztalyfonokIds IS NOT NULL BEGIN SET @sql += N' CREATE TABLE #OsztalyFonokok (OsztalyFonokId int) INSERT INTO #OsztalyFonokok(OsztalyFonokId) SELECT value FROM STRING_SPLIT(@pOsztalyfonokIds,'','') ' END SET @sql += N' SELECT DISTINCT CASE WHEN @pTanuloIds IS NULL THEN -1 ELSE tcs.ID END AS ID ,tcs.C_OSZTALYCSOPORTID AS OsztalyCsoportId ,ocs.C_NEV AS Nev ,ocs.C_EVFOLYAMTIPUSA AS EvfolyamTipus ,ocs.C_FELADATKATEGORIAID AS FeladatKategoriaId ,feh.C_OKTATASINEVELESIFELADATTIPUS AS OktatasiNevelesiFeladatId ,@tanevNev AS Tanev ,CASE WHEN @pOsztalyfonokIds IS NULL THEN tcs.C_TANULOID ELSE -1 END AS TanuloId ,tcs.C_BELEPESDATUM AS ErvKezd ,tcs.C_KILEPESDATUM AS ErvVeg ,cs.C_TIPUSA AS CsoportTipus ,ob.C_NEV AS Osztalybontas ,ocs.C_KEPZESIFORMA AS KepzesiForma ,CASE WHEN o.ID IS NOT NULL THEN ''F'' ELSE ''T'' END AS IsCsoport ,o.C_OSZTALYFONOKID AS OsztalyfonokId ,o.C_OFOHELYETTESID AS OsztalyfonokHelyettesId ,cs.C_CSOPORTVEZETOID AS CsoportVezetoId FROM T_TANULOCSOPORT_OSSZES tcs INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID '+IIF(@pFeladatKategoriaId IS NOT NULL,'AND ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId','')+' AND ocs.TOROLT = ''F'' AND ocs.C_TANEVID = tcs.C_TANEVID INNER JOIN T_FELADATELLATASIHELY feh ON ocs.C_FELADATELLATASIHELYID = feh.ID AND feh.TOROLT = ''F'' AND feh.C_TANEVID = tcs.C_TANEVID LEFT JOIN T_CSOPORT_OSSZES cs ON cs.ID = ocs.ID AND cs.TOROLT = ''F'' AND cs.C_ALTANEVID = tcs.C_TANEVID LEFT JOIN T_OSZTALYCSOPORT_OSSZES ob ON ob.ID = cs.C_OSZTALYBONTASID AND ob.TOROLT = ''F'' AND ob.C_TANEVID = tcs.C_TANEVID LEFT JOIN T_OSZTALY_OSSZES o ON ocs.ID = o.ID AND o.TOROLT = ''F'' AND o.C_ALTANEVID = tcs.C_TANEVID '+IIF(@pTanuloIds IS NOT NULL,' INNER JOIN #TanuloIds t ON t.Tanuloid = tcs.C_TANULOID','')+' '+IIF(@pOsztalyfonokIds IS NOT NULL,' INNER JOIN #OsztalyFonokok osztf ON osztf.OsztalyFonokId = o.C_OSZTALYFONOKID','')+' WHERE tcs.TOROLT = ''F'' AND tcs.C_TANEVID = @tanevId' + IIF(@pOktatasiNevelesiFeladatId IS NOT NULL, ' AND feh.C_OKTATASINEVELESIFELADATTIPUS = @pOktatasiNevelesiFeladatId', '') + IIF(@pIsAktiv = 1, ' AND tcs.C_BELEPESDATUM <= GETDATE() AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > GETDATE())', '') EXEC sp_executesql @sql, N' @pTanuloIds nvarchar (max) ,@tanevNev nvarchar (30) ,@tanevId int ,@pFeladatKategoriaId int ,@pOsztalyfonokIds nvarchar (max) ,@pOktatasiNevelesiFeladatId int' ,@pTanuloIds = @pTanuloIds ,@tanevNev = @tanevNev ,@tanevId = @pTanevId ,@pFeladatKategoriaId = @pFeladatKategoriaId ,@pOsztalyfonokIds = @pOsztalyfonokIds ,@pOktatasiNevelesiFeladatId = @pOktatasiNevelesiFeladatId END GO