DROP PROCEDURE IF EXISTS uspGetTanuloErtekelesDetailDataSet GO CREATE PROCEDURE uspGetTanuloErtekelesDetailDataSet @pTanevId int ,@pTanuloId int ,@pTantargyId int = NULL ,@pShowToroltElemek bit ,@pTanarId int = NULL ,@pErtekelesMegjelenesFajtaEnumTantargyId int ,@pErtekelesMegjelenesFajtaEnumMagatartasSzorgalomId int ,@pErtekelesMegjelenesFajtaId int ,@pDatum date = NULL ,@pAmiKategoriaId int ,@pFeladatKategoriaId int ,@pOktatasiNevelesiFeladatId int = NULL ,@pIsFromSzervezet bit = 0 AS BEGIN SET NOCOUNT ON; IF @pDatum IS NULL SET @pDatum = CONVERT(date, GETDATE()) DECLARE @evfolyamTipusId int ,@sql nvarchar (max) SELECT TOP (1) @evfolyamTipusId = tanuloOsztaly.EvfolyamTipusId FROM fnGetTanuloOsztaly(@pTanuloId, @pDatum, @pFeladatKategoriaId, 0, @pOktatasiNevelesiFeladatId) tanuloOsztaly ORDER BY tanuloOsztaly.BelepesDatuma DESC SET @sql = N' --NOTE: Azért kell a DISTINCT, ha ugyanoda ki-/besorolgatják a tanulót! 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_ERTEKELESSZOVEGFORMAZOTT AS ErtekelesSzovegFormazott ,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_MAGATARTASSZOVEGFORMAZOTT AS MagatartasSzovegFormazott ,TanuloErtekeles.C_MAGATARTASSZOVEGROVIDNEV AS MagatartasSzovegRovidNev ,TanuloErtekeles.C_MAGATARTASERTEKID AS MagatartasErtekId ,TanuloErtekeles.C_SZORGALOMOSZTALYZATID AS SzorgalomOsztalyzatId ,TanuloErtekeles.C_SZORGALOMSZOVEG AS SzorgalomSzoveg ,TanuloErtekeles.C_SZORGALOMSZOVEGFORMAZOTT AS SzorgalomSzovegFormazott ,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 ,em.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 = @pAmiKategoriaId BEGIN SET @sql += N' INNER JOIN T_OSZTALYCSOPORT_OSSZES Osztaly ON Osztaly.C_TANEVID = TanuloErtekeles.C_TANEVID AND Osztaly.TOROLT = ''F'' AND Osztaly.ID = TanuloErtekeles.C_OSZTALYCSOPORTID ' IF @pOktatasiNevelesiFeladatId IS NULL BEGIN SET @sql += N' AND (Osztaly.C_FELADATKATEGORIAID = @pFeladatKategoriaId OR @pIsFromSzervezet = 1) ' END ELSE BEGIN SET @sql += N' INNER JOIN T_FELADATELLATASIHELY_OSSZES FeladatEllatasiHely ON FeladatEllatasiHely.ID = Osztaly.C_FELADATELLATASIHELYID AND FeladatEllatasiHely.C_OKTATASINEVELESIFELADATTIPUS = @pOktatasiNevelesiFeladatId ' END END ELSE BEGIN SET @sql += N' INNER JOIN T_OSZTALYCSOPORT_OSSZES Osztaly ON Osztaly.C_TANEVID = TanuloErtekeles.C_TANEVID AND Osztaly.TOROLT = ''F'' AND Osztaly.ID = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID ' IF @pOktatasiNevelesiFeladatId IS NULL BEGIN SET @sql += N' AND (Osztaly.C_FELADATKATEGORIAID = @pFeladatKategoriaId OR @pIsFromSzervezet = 1) ' END SET @sql += N' AND Osztaly.C_EVFOLYAMTIPUSA = @evfolyamTipusId INNER JOIN T_TANULOCSOPORT_OSSZES TanuloCsoport ON TanuloCsoport.C_TANEVID = TanuloErtekeles.C_TANEVID AND TanuloCsoport.TOROLT = ''F'' AND TanuloCsoport.C_OSZTALYCSOPORTID = Osztaly.ID AND TanuloCsoport.C_TANULOID = @pTanuloId AND TanuloCsoport.C_BELEPESDATUM <= @pDatum ' IF @pOktatasiNevelesiFeladatId IS NOT NULL BEGIN SET @sql += N' INNER JOIN T_FELADATELLATASIHELY_OSSZES FeladatEllatasiHely ON FeladatEllatasiHely.ID = Osztaly.C_FELADATELLATASIHELYID AND FeladatEllatasiHely.C_OKTATASINEVELESIFELADATTIPUS = @pOktatasiNevelesiFeladatId ' END END SET @sql += N' LEFT JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.C_TANEVID = TanuloErtekeles.C_TANEVID AND Tantargy.TOROLT = ''F'' AND Tantargy.ID = TanuloErtekeles.C_TANTARGYID INNER JOIN T_FELHASZNALO_OSSZES Felhasznalo ON Felhasznalo.C_TANEVID = TanuloErtekeles.C_TANEVID AND Felhasznalo.TOROLT = ''F'' AND Felhasznalo.ID = TanuloErtekeles.C_ERTEKELOID LEFT JOIN T_ERTEKELESMOD_OSSZES em ON em.C_ALTANEVID = TanuloErtekeles.C_TANEVID AND em.TOROLT = ''F'' AND em.ID = TanuloErtekeles.C_ERTEKELESMODID AND TanuloErtekeles.C_ERTEKELESOSZTALYZATID IS NOT NULL WHERE TanuloErtekeles.C_TANEVID = @pTanevId AND TanuloErtekeles.TOROLT = IIF(@pShowToroltElemek = 1, TanuloErtekeles.TOROLT, ''F'') AND TanuloErtekeles.C_TANULOID = @pTanuloId' IF @pIsFromSzervezet = 1 OR @pFeladatKategoriaId <> @pAmiKategoriaId SET @sql += N' AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NOT NULL ' 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 ,@pOktatasiNevelesiFeladatId int ,@pDatum date ,@pIsFromSzervezet bit ' ,@pTanevId = @pTanevId ,@pTanuloId = @pTanuloId ,@pTantargyId = @pTantargyId ,@pShowToroltElemek = @pShowToroltElemek ,@pTanarId = @pTanarId ,@evfolyamTipusId = @evfolyamTipusId ,@pFeladatKategoriaId= @pFeladatKategoriaId ,@pOktatasiNevelesiFeladatId= @pOktatasiNevelesiFeladatId ,@pDatum = @pDatum ,@pIsFromSzervezet = @pIsFromSzervezet END GO