DROP PROCEDURE IF EXISTS uspGetTanuloErtekelesDetailDataSet GO CREATE PROCEDURE uspGetTanuloErtekelesDetailDataSet @pTanevId int ,@pTanuloId int ,@pTantargyId int = NULL ,@pShowToroltElemek bit ,@pTanarId int ,@pErtekelesMegjelenesFajtaEnumTantargyId int ,@pErtekelesMegjelenesFajtaEnumMagatartasSzorgalomId int ,@pErtekelesMegjelenesFajtaId int ,@pDatum date = NULL ,@pAmiKategoriaId int ,@pFeladatKategoriaId int = NULL ,@pKiiratkozottNeJelenjenMeg bit = 1 ,@pOsztalyCsoportId int = NULL AS BEGIN SET NOCOUNT ON; DECLARE @evfolyamTipusId int ,@sql nvarchar (max) IF @pDatum IS NULL SET @pDatum = CONVERT(date, GETDATE()) IF @pOsztalyCsoportId IS NULL SELECT TOP (1) @evfolyamTipusId = tanuloOsztaly.EvfolyamTipusId FROM fnGetTanuloOsztaly(@pTanuloId, @pDatum, @pFeladatKategoriaId, @pKiiratkozottNeJelenjenMeg) tanuloOsztaly ORDER BY tanuloOsztaly.BelepesDatuma DESC ELSE SELECT @pFeladatKategoriaId = o.C_FELADATKATEGORIAID ,@evfolyamTipusId = o.C_EVFOLYAMTIPUSA FROM T_OSZTALYCSOPORT_OSSZES o WHERE ID = @pOsztalyCsoportId SET @sql = N' SELECT DISTINCT TanuloErtekeles.ID AS ID ,TanuloErtekeles.C_DATUM AS Datum ,TanuloErtekeles.C_ROGZITESDATUM AS RogzitesDatum ,TanuloErtekeles.C_TIPUSID AS TipusId ,TanuloErtekeles.C_ISERTESITESELKULDVE AS IsErtesitesElkuldve ,TanuloErtekeles.C_TANORAID AS TanoraId ,TanuloErtekeles.C_ERTEKELESOSZTALYZATID AS ErtekelesOsztalyzatId ,TanuloErtekeles.C_ERTEKELESSZOVEG AS ErtekelesSzoveg ,TanuloErtekeles.C_ERTEKELESSZOVEGROVIDNEV AS ErtekelesSzovegRovidNev ,TanuloErtekeles.C_ERTEKELESSZAZALEK AS ErtekelesSzazalek ,TanuloErtekeles.C_ERTEKELESMODID AS ErtekelesModId ,TanuloErtekeles.C_ERTEKELESTEMA AS ErtekelesTema ,TanuloErtekeles.C_MAGATARTASOSZTALYZATID AS MagatartasOsztalyzatId ,TanuloErtekeles.C_MAGATARTASSZOVEG AS MagatartasSzoveg ,TanuloErtekeles.C_MAGATARTASSZOVEGROVIDNEV AS MagatartasSzovegRovidNev ,TanuloErtekeles.C_MAGATARTASERTEKID AS MagatartasErtekId ,TanuloErtekeles.C_SZORGALOMOSZTALYZATID AS SzorgalomOsztalyzatId ,TanuloErtekeles.C_SZORGALOMSZOVEG AS SzorgalomSzoveg ,TanuloErtekeles.C_SZORGALOMSZOVEGROVIDNEV AS SzorgalomSzovegRovidNev ,TanuloErtekeles.C_SZORGALOMERTEKID AS SzorgalomErtekId ,TanuloErtekeles.C_ISMAGATARTASSZORGALOM AS IsMagatartasSzorgalom ,TanuloErtekeles.CREATED AS Created ,TanuloErtekeles.TOROLT AS Torolt ,TanuloErtekeles.C_TANULOID AS TanuloId ,TanariAtlagSuly.C_SULY AS Suly ,Felhasznalo.C_NYOMTATASINEV AS ErtekeloNyomtatasiNev ,Tantargy.C_TARGYKATEGORIA AS TantargyKategoriaId ,CASE WHEN TanuloErtekeles.C_ERTEKELOID = @pTanarId THEN ''T'' ELSE ''F'' END AS Modosithato FROM T_TANULOERTEKELES_OSSZES TanuloErtekeles ' IF @pFeladatKategoriaId IS NOT NULL BEGIN IF @pFeladatKategoriaId <> @pAmiKategoriaId BEGIN SET @sql += N' INNER JOIN T_OSZTALYCSOPORT_OSSZES Osztaly ON Osztaly.ID = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID AND Osztaly.TOROLT = IIF(@pShowToroltElemek = 1, TanuloErtekeles.TOROLT, ''F'') AND Osztaly.C_TANEVID = TanuloErtekeles.C_TANEVID AND Osztaly.C_EVFOLYAMTIPUSA = @evfolyamTipusId AND Osztaly.C_FELADATKATEGORIAID = @pFeladatKategoriaId INNER JOIN T_TANEV_OSSZES Tanev ON Tanev.ID = TanuloErtekeles.C_TANEVID AND Tanev.TOROLT = IIF(@pShowToroltElemek = 1, TanuloErtekeles.TOROLT, ''F'') INNER JOIN T_TANULOCSOPORT_OSSZES TanuloCsoport ON TanuloCsoport.C_OSZTALYCSOPORTID = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID AND TanuloCsoport.C_TANULOID = @pTanuloId AND TanuloCsoport.C_TANEVID = TanuloErtekeles.C_TANEVID AND TanuloCsoport.C_BELEPESDATUM <= @pDatum AND TanuloCsoport.TOROLT = IIF(@pShowToroltElemek = 1, TanuloErtekeles.TOROLT, ''F'') ' IF @pKiiratkozottNeJelenjenMeg = 1 SET @sql += N' AND (TanuloCsoport.C_KILEPESDATUM > @pDatum OR TanuloCsoport.C_KILEPESDATUM IS NULL OR TanuloCsoport.C_KILEPESDATUM >= Tanev.C_UTOLSOTANITASINAP) ' END ELSE SET @sql += N' INNER JOIN T_OSZTALYCSOPORT_OSSZES Osztaly ON Osztaly.ID = TanuloErtekeles.C_OSZTALYCSOPORTID AND Osztaly.TOROLT = IIF(@pShowToroltElemek = 1, TanuloErtekeles.TOROLT, ''F'') AND Osztaly.C_TANEVID = TanuloErtekeles.C_TANEVID AND Osztaly.C_EVFOLYAMTIPUSA = @evfolyamTipusId AND Osztaly.C_FELADATKATEGORIAID = @pFeladatKategoriaId ' END SET @sql += N' LEFT JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.C_TANEVID = TanuloErtekeles.C_TANEVID AND Tantargy.TOROLT = IIF(@pShowToroltElemek = 1, TanuloErtekeles.TOROLT, ''F'') AND Tantargy.ID = TanuloErtekeles.C_TANTARGYID INNER JOIN T_FELHASZNALO_OSSZES AS Felhasznalo ON Felhasznalo.TOROLT = IIF(@pShowToroltElemek = 1, TanuloErtekeles.TOROLT, ''F'') AND Felhasznalo.C_TANEVID = TanuloErtekeles.C_TANEVID AND Felhasznalo.ID = TanuloErtekeles.C_ERTEKELOID LEFT JOIN T_TANARIATLAGSULY_OSSZES AS TanariAtlagSuly ON TanariAtlagSuly.TOROLT = IIF(@pShowToroltElemek = 1, TanuloErtekeles.TOROLT, ''F'') AND TanariAtlagSuly.C_TANEVID = TanuloErtekeles.C_TANEVID AND TanariAtlagSuly.C_ERTEKELESMODID = TanuloErtekeles.C_ERTEKELESMODID AND TanuloErtekeles.C_ERTEKELESOSZTALYZATID IS NOT NULL WHERE TanuloErtekeles.TOROLT = IIF(@pShowToroltElemek = 1, TanuloErtekeles.TOROLT, ''F'') AND TanuloErtekeles.C_TANEVID = @pTanevId AND TanuloErtekeles.C_TANULOID = @pTanuloId' IF @pFeladatKategoriaId IS NOT NULL BEGIN IF @pFeladatKategoriaId = @pAmiKategoriaId SET @sql += N' AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NULL ' ELSE SET @sql += N' AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NOT NULL ' END SET @sql += CASE WHEN @pErtekelesMegjelenesFajtaId = @pErtekelesMegjelenesFajtaEnumTantargyId THEN N' AND (TanuloErtekeles.C_ISMAGATARTASSZORGALOM = ''F'' AND TanuloErtekeles.C_TANTARGYID = @pTantargyId) ' WHEN @pErtekelesMegjelenesFajtaId = @pErtekelesMegjelenesFajtaEnumMagatartasSzorgalomId THEN N' AND (TanuloErtekeles.C_ISMAGATARTASSZORGALOM = ''T'' AND TanuloErtekeles.C_TANTARGYID IS NULL) ' ELSE N' AND ((TanuloErtekeles.C_ISMAGATARTASSZORGALOM = ''F'' AND TanuloErtekeles.C_TANTARGYID = @pTantargyId AND @pTantargyId IS NOT NULL) OR (TanuloErtekeles.C_ISMAGATARTASSZORGALOM = ''T'' AND TanuloErtekeles.C_TANTARGYID IS NULL AND @pTantargyId IS NULL)) ' END SET @sql += N' ORDER BY Datum DESC ,RogzitesDatum DESC' EXEC sp_executesql @sql, N' @pTanevId int ,@pTanuloId int ,@pTantargyId int ,@pShowToroltElemek bit ,@pTanarId int ,@evfolyamTipusId int ,@pFeladatKategoriaId int ,@pDatum date ' ,@pTanevId = @pTanevId ,@pTanuloId = @pTanuloId ,@pTantargyId = @pTantargyId ,@pShowToroltElemek = @pShowToroltElemek ,@pTanarId = @pTanarId ,@evfolyamTipusId = @evfolyamTipusId ,@pFeladatKategoriaId= @pFeladatKategoriaId ,@pDatum = @pDatum END GO