DROP PROCEDURE IF EXISTS uspGetMulasztasData GO CREATE PROCEDURE uspGetMulasztasData @pTanevId int ,@pCsoportVezetoId int = NULL ,@pIsNemJelenlevoTanulokMegjelenitese bit ,@pTol datetime = NULL ,@pIg datetime = NULL ,@pTanuloId int = NULL ,@pTanuloNev nvarchar(510) = NULL ,@pOsztcsop int = NULL ,@pIsKellKapcsolodoCsoportok bit ,@pCsoptip int = NULL ,@pFogl int = NULL ,@pTargy int = NULL ,@pOraId int = NULL ,@pMulTip int = NULL ,@pKesIdo int = NULL ,@pIgazolasTipus int = NULL ,@pIsNemBesoroltTanulokMulasztasainakMegjelenitese bit ,@pFeladatKategoriaId int = NULL ,@pFeladatEllatasiHelyId int = NULL ,@pIgazoltsagAllapota int = NULL ,@pIsOnlineOra bit = NULL ,@pTanitasiOraId int = NULL ,@pSzervezetTipusId int = NULL ,@pSzervezetIdListString nvarchar(255) = NULL ,@pSzervezetNev nvarchar(255) = NULL ,@pSzervezetAzonosito nvarchar(255) = NULL AS BEGIN SET NOCOUNT ON; DECLARE @sql nvarchar(max) ,@whereClause nvarchar(max) = N' WHERE tm.TOROLT = ''F'' AND tm.C_TANEVID = @tanevId' SET @sql = N' SELECT tm.ID as ID ,fh.ID AS TanuloId ,fh.C_NYOMTATASINEV as TanuloNev ,IIF(fh.C_NEVSORREND = ''T'', fh.C_UTONEV + '' '' + fh.C_VEZETEKNEV, fh.C_VEZETEKNEV + '' '' + fh.C_UTONEV) as TanuloNevElotagNelkul ,fh.C_SZULETESIDATUM as SzuletesiIdo ,fh.C_OKTATASIAZONOSITO AS OktatasiAzonosito ,tao.C_ORASZAM as Oraszam ,tao.C_DATUM as Datum ,ocs.C_NEV as OsztCsopNev ,tgy.C_NEV as TargyNev ,tm.C_TIPUS as MulTip ,tm.C_KESESPERCBEN as KesesPerc ,tm.C_IGAZOLT as Igazolt ,tm.C_IGAZOLASTIPUSA as IgazolasTipus ,tm.C_MEGJEGYZES as Megjegyzes ,ISNULL(totOnlineOra.C_BOOLERTEK, ottOnlineOra.C_BOOLDEFAULT) AS IsOnlineOra ,ISNULL(ig.C_MEGJEGYZES, tm.C_MEGJEGYZES) as IgazolasMegjegyzes FROM T_TANULOMULASZTAS_OSSZES tm INNER JOIN T_TANITASIORA_OSSZES tao on tao.ID = tm.C_TANITASIORAKID AND tao.TOROLT = ''F'' INNER JOIN T_FELHASZNALO_OSSZES fh on fh.ID = tm.C_ORATANULOIID AND fh.TOROLT = ''F'' INNER JOIN T_TANTARGY_OSSZES tgy on tgy.ID = tao.C_TANTARGYID AND tgy.TOROLT = ''F'' INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs on ocs.ID = tao.C_OSZTALYCSOPORTID AND ocs.TOROLT = ''F'' INNER JOIN T_ORATULAJDONSAGTIPUS_OSSZES ottOnlineOra ON ottOnlineOra.TOROLT = ''F'' AND ottOnlineOra.C_ALTANEVID = tao.C_TANEVID AND ottOnlineOra.ID = 8615 LEFT JOIN T_TANITASIORATULAJDONSAG_OSSZES totOnlineOra ON totOnlineOra.C_ORATULAJDONSAGID = ottOnlineOra.ID AND totOnlineOra.C_TANEVID = ottOnlineOra.C_ALTANEVID AND totOnlineOra.TOROLT = ''F'' AND totOnlineOra.C_TANITASIORAID = tao.ID OUTER APPLY ( SELECT TOP 1 innerIg.C_MEGJEGYZES FROM T_IGAZOLAS_OSSZES innerIg WHERE innerIg.TOROLT = ''F'' AND tao.C_DATUM BETWEEN innerIg.C_KEZDETE AND innerIg.C_VEGE AND innerIg.C_TANULOID = tm.C_ORATANULOIID AND tm.C_IGAZOLT = ''T'' ) ig ' SET @sql += IIF(@pOsztcsop IS NOT NULL, N' INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_TANULOID = tm.C_ORATANULOIID AND tcs.TOROLT = ''F'' AND tao.C_DATUM >= tcs.C_BELEPESDATUM AND tao.C_DATUM < ISNULL(tcs.C_KILEPESDATUM, GETDATE()) AND tcs.C_OSZTALYCSOPORTID= @osztcsop', '') SET @sql += IIF(@pCsoportVezetoId IS NOT NULL, N' INNER JOIN T_CSOPORT_OSSZES csvcs on csvcs.C_CSOPORTVEZETOID = @csoportVezetoId AND csvcs.TOROLT = ''F'' AND csvcs.ID = tao.C_OSZTALYCSOPORTID', '') SET @whereClause += IIF(@pTol IS NOT NULL, N' AND tao.C_DATUM >= CAST(@tol as date)', '') SET @whereClause += IIF(@pIg IS NOT NULL, N' AND tao.C_DATUM <= CAST(@ig as date)', '') SET @whereClause += IIF(@pTanuloId IS NOT NULL, N' AND fh.ID = @tanuloId', '') SET @whereClause += IIF(@pTanuloNev IS NOT NULL AND @pTanuloNev <> '', N' AND fh.C_NYOMTATASINEV LIKE ''%'' + @tanuloNev + ''%''', '') SET @whereClause += IIF(@pOsztcsop IS NOT NULL ,IIF(@pIsKellKapcsolodoCsoportok = 1, N' AND tao.C_OSZTALYCSOPORTID in (SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(@osztcsop))', N' AND tao.C_OSZTALYCSOPORTID = @osztcsop') ,'') SET @whereClause += IIF(@pCsoptip IS NOT NULL, N' AND EXISTS ( SELECT 1 FROM T_CSOPORT_OSSZES WHERE T_CSOPORT_OSSZES.TOROLT = ''F'' AND (T_CSOPORT_OSSZES.ID = tao.C_OSZTALYCSOPORTID ' + IIF(@pCsoptip = 1034 , N' OR T_CSOPORT_OSSZES.C_OSZTALYBONTASID = tao.C_OSZTALYCSOPORTID' , N'') + N') AND T_CSOPORT_OSSZES.C_TIPUSA = @csoptip)' , '') SET @whereClause += IIF(@pFogl IS NOT NULL, N' AND tao.C_FOGLALKOZASID = @fogl', '') SET @whereClause += IIF(@pTargy IS NOT NULL, N' AND tao.C_TANTARGYID = @targy', '') SET @whereClause += IIF(@pOraId IS NOT NULL, N' AND tao.ID = @oraId', '') SET @whereClause += IIF(@pMulTip IS NOT NULL, N' AND tm.C_TIPUS = @mulTip', '') SET @whereClause += IIF(@pKesIdo IS NOT NULL AND @pKesIdo > 0, N' AND tm.C_KESESPERCBEN <= @kesIdo', '') SET @whereClause += CASE @pIgazoltsagAllapota WHEN 0 THEN N' AND tm.C_IGAZOLT = ''F''' WHEN 1 THEN N' AND tm.C_IGAZOLT = ''T''' WHEN 2 THEN N' AND tm.C_IGAZOLT IS NULL' ELSE '' END SET @whereClause += IIF(@pIgazolasTipus IS NOT NULL, N' AND tm.C_IGAZOLASTIPUSA = @igazolasTipus', '') SET @whereClause += N' AND tm.C_TIPUS <> @jelenlet' SET @whereClause += IIF(@pIsNemJelenlevoTanulokMegjelenitese = 1, '', N' AND tm.C_TIPUS != 1817') SET @whereClause += IIF(@pIsNemBesoroltTanulokMulasztasainakMegjelenitese = 0, N' AND EXISTS ( SELECT TOP 1 1 FROM T_TANULOCSOPORT_OSSZES tcs WHERE tcs.C_OSZTALYCSOPORTID = ocs.ID AND tcs.C_TANULOID = fh.ID AND tcs.TOROLT = ''F'' AND tcs.C_BELEPESDATUM <= tao.C_DATUM AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= tao.C_DATUM))', '') SET @whereClause += IIF(@pFeladatKategoriaId IS NOT NULL, N' AND ocs.C_FELADATKATEGORIAID = @feladatKategoriaId', '') SET @whereClause += IIF(@pFeladatEllatasiHelyId IS NOT NULL, N' AND ocs.C_FELADATELLATASIHELYID = @feladatEllatasiHelyId', '') SET @whereClause += IIF(@pIsOnlineOra IS NOT NULL, N' AND ISNULL(totOnlineOra.C_BOOLERTEK, ottOnlineOra.C_BOOLDEFAULT) = ' + IIF(@pIsOnlineOra = 1, '''T''', '''F'''), '') SET @whereClause += IIF(@pTanitasiOraId IS NOT NULL, N' AND tao.ID = @tanitasiOraId', '') IF @pSzervezetTipusId IS NOT NULL BEGIN SET @sql += N' LEFT JOIN T_CSOPORT_OSSZES cs on cs.C_ALTANEVID = ocs.C_TANEVID AND cs.C_ALINTEZMENYID = ocs.C_INTEZMENYID AND cs.TOROLT = ''F'' AND cs.ID = ocs.ID INNER JOIN T_SZERVEZET_OSSZES sz ON sz.C_TANEVID = tm.C_TANEVID AND sz.C_INTEZMENYID = tm.C_INTEZMENYID AND sz.TOROLT = ''F'' AND sz.ID = cs.C_SZERVEZETID AND sz.C_TIPUS = @pSzervezetTipusId' IF (@pSzervezetIdListString IS NOT NULL AND LEN(@pSzervezetIdListString) > 0) BEGIN SET @whereClause += N' AND sz.ID IN (' + @pSzervezetIdListString + ')' END IF @pSzervezetNev IS NOT NULL BEGIN SET @whereClause += N' AND sz.C_NEV LIKE ''%'' + @pSzervezetNev + ''%''' END IF @pSzervezetAzonosito IS NOT NULL BEGIN SET @whereClause += N' AND sz.C_AZONOSITO LIKE ''%'' + @pSzervezetAzonosito + ''%''' END END SET @sql += @whereClause EXEC sp_executesql @sql ,N' @tanevId int ,@csoportVezetoId int = NULL ,@tol datetime = NULL ,@ig datetime = NULL ,@tanuloId int = NULL ,@tanuloNev nvarchar(510) = NULL ,@osztcsop int = NULL ,@csoptip int = NULL ,@fogl int = NULL ,@targy int = NULL ,@oraId int = NULL ,@mulTip int = NULL ,@kesIdo int = NULL ,@igazolasTipus int = NULL ,@feladatKategoriaId int = NULL ,@feladatEllatasiHelyId int = NULL ,@jelenlet int ,@tanitasiOraId int ,@pSzervezetTipusId int = NULL ,@pSzervezetNev nvarchar(255) = NULL ,@pSzervezetAzonosito nvarchar(255) = NULL' ,@tanevId = @pTanevId ,@csoportVezetoId = @pCsoportVezetoId ,@tol = @pTol ,@ig = @pIg ,@tanuloId = @pTanuloId ,@tanuloNev = @pTanuloNev ,@osztcsop = @pOsztcsop ,@csoptip = @pCsoptip ,@fogl = @pFogl ,@targy = @pTargy ,@oraId = @pOraId ,@mulTip = @pMulTip ,@kesIdo = @pKesIdo ,@igazolasTipus = @pIgazolasTipus ,@feladatKategoriaId = @pFeladatKategoriaId ,@feladatEllatasiHelyId = @pFeladatEllatasiHelyId ,@jelenlet = 1498 -- MulasztasTipusEnum.jelenlet ,@tanitasiOraId = @pTanitasiOraId ,@pSzervezetTipusId = @pSzervezetTipusId ,@pSzervezetNev = @pSzervezetNev ,@pSzervezetAzonosito = @pSzervezetAzonosito END GO