-- ============================================= -- Description: -- ============================================= SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO DROP PROCEDURE IF EXISTS [dbo].[uspGetTanuloErtekelesDataSetByTanulo] GO CREATE PROCEDURE [dbo].[uspGetTanuloErtekelesDataSetByTanulo] @pIntezmenyId INT ,@pTanevId INT ,@pTanarId INT ,@pTanuloId INT ,@pDatum DATE = NULL ,@pFeladatKategoriaId INT ,@pAmiKategoriaId INT ,@pAlapKategoriaId INT ,@pKiiratkozottNeJelenjenMeg BIT = 1 AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements. SET NOCOUNT ON; IF @pDatum IS NULL SET @pDatum = CONVERT(DATE, GETDATE()) DECLARE @evfolyamTipusId INT = (SELECT TOP 1 EvfolyamTipusId FROM dbo.fnGetTanuloOsztaly(@pTanuloId, @pDatum, @pAlapKategoriaId, @pKiiratkozottNeJelenjenMeg) ORDER BY BelepesDatuma DESC) DECLARE @sql NVARCHAR(MAX) SET @sql = N' CREATE TABLE #KapcsopodoTantargyak( ID INT ,C_FOTARGYID INT ,C_NEV NVARCHAR(255) ,C_TARGYKATEGORIA INT ,C_INTEZMENYID INT ,C_TANEVID INT ) INSERT INTO #KapcsopodoTantargyak SELECT ID ,C_FOTARGYID ,C_NEV ,C_TARGYKATEGORIA ,C_INTEZMENYID ,C_TANEVID FROM fnGetKapcsolodoTantargyak(@pIntezmenyId, @pTanevId, NULL) CREATE TABLE #OsztalyCsoportIdList( ID INT PRIMARY KEY ) INSERT INTO #OsztalyCsoportIdList (ID) SELECT DISTINCT OsztalyCsoport.ID FROM T_TANULOCSOPORT_OSSZES TanuloCsoport INNER JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON OsztalyCsoport.C_INTEZMENYID = TanuloCsoport.C_INTEZMENYID AND OsztalyCsoport.C_TANEVID = TanuloCsoport.C_TANEVID AND OsztalyCsoport.TOROLT = ''F'' AND OsztalyCsoport.ID = TanuloCsoport.C_OSZTALYCSOPORTID WHERE TanuloCsoport.C_INTEZMENYID = @pIntezmenyId AND TanuloCsoport.C_TANEVID = @pTanevId AND TanuloCsoport.TOROLT = ''F'' AND TanuloCsoport.C_TANULOID = @pTanuloId AND TanuloCsoport.C_BELEPESDATUM <= GETDATE() ' IF @pKiiratkozottNeJelenjenMeg = 1 BEGIN SET @sql += N' AND (TanuloCsoport.C_KILEPESDATUM IS NULL OR TanuloCsoport.C_KILEPESDATUM >= GETDATE()) ' END SET @sql += N' CREATE TABLE #Tantargyak( ID INT ,C_FOTARGYID INT ,C_NEV NVARCHAR(255) ,C_TARGYKATEGORIA INT ,C_INTEZMENYID INT ,C_TANEVID INT ); --NOTE: A Magatartást/Szorgalmat beszúrjuk mint tantárgy INSERT INTO #Tantargyak (ID, C_FOTARGYID, C_NEV, C_TARGYKATEGORIA, C_INTEZMENYID, C_TANEVID) SELECT NULL, NULL, ''Magatartás/Szorgalom'', 0, @pIntezmenyId, @pTanevID; WITH tantargy_CTE (C_TANTARGYID, C_FOTARGYID, C_INTEZMENYID, C_TANEVID) AS ( SELECT DISTINCT Foglalkozas.C_TANTARGYID, Tantargy.C_FOTARGYID, Tantargy.C_INTEZMENYID, Tantargy.C_TANEVID FROM T_FOGLALKOZAS_OSSZES Foglalkozas INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.C_INTEZMENYID = Foglalkozas.C_INTEZMENYID AND Tantargy.C_TANEVID = Foglalkozas.C_TANEVID AND Tantargy.TOROLT = ''F'' AND Tantargy.ID = Foglalkozas.C_TANTARGYID INNER JOIN #OsztalyCsoportIdList OsztalyCsoport ON OsztalyCsoport.ID = Foglalkozas.C_OSZTALYCSOPORTID WHERE Foglalkozas.C_INTEZMENYID = @pIntezmenyId AND Foglalkozas.C_TANEVID = @pTanevId AND Foglalkozas.TOROLT = ''F'' ' SET @sql += N' UNION SELECT DISTINCT OrarendiOra.C_TANTARGYID, Tantargy.C_FOTARGYID, Tantargy.C_INTEZMENYID, Tantargy.C_TANEVID FROM T_ORARENDIORA_OSSZES OrarendiOra INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.C_INTEZMENYID = OrarendiOra.C_INTEZMENYID AND Tantargy.C_TANEVID = OrarendiOra.C_TANEVID AND Tantargy.TOROLT = ''F'' AND Tantargy.ID = OrarendiOra.C_TANTARGYID INNER JOIN #OsztalyCsoportIdList OsztalyCsoport ON OsztalyCsoport.ID = OrarendiOra.C_OSZTALYCSOPORTID WHERE OrarendiOra.C_INTEZMENYID = @pIntezmenyId AND OrarendiOra.C_TANEVID = @pTanevId AND OrarendiOra.TOROLT = ''F'' ' IF @pFeladatKategoriaId = @pAlapKategoriaId OR @pFeladatKategoriaId IS NULL BEGIN SET @sql += N' UNION SELECT DISTINCT TanuloErtekeles.C_TANTARGYID, Tantargy.C_FOTARGYID, Tantargy.C_INTEZMENYID, Tantargy.C_TANEVID FROM T_TANULOERTEKELES_OSSZES TanuloErtekeles INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.C_INTEZMENYID = TanuloErtekeles.C_INTEZMENYID AND Tantargy.C_TANEVID = TanuloErtekeles.C_TANEVID AND Tantargy.TOROLT = ''F'' AND Tantargy.ID = TanuloErtekeles.C_TANTARGYID INNER JOIN T_OSZTALYCSOPORT_OSSZES Osztaly ON Osztaly.C_INTEZMENYID = TanuloErtekeles.C_INTEZMENYID AND Osztaly.C_TANEVID = TanuloErtekeles.C_TANEVID AND Osztaly.TOROLT = ''F'' AND Osztaly.ID = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID AND Osztaly.C_EVFOLYAMTIPUSA = @evfolyamTipusId WHERE TanuloErtekeles.C_INTEZMENYID = @pIntezmenyId AND TanuloErtekeles.C_TANEVID = @pTanevId AND TanuloErtekeles.TOROLT = ''F'' AND TanuloErtekeles.C_TANULOID = @pTanuloId AND TanuloErtekeles.C_TANTARGYID IS NOT NULL ' END IF @pFeladatKategoriaId = @pAmiKategoriaId OR @pFeladatKategoriaId IS NULL BEGIN -- NOTE: Ami-s értékelésnél a C_ROGZITESKORITANULOOSZTALYID null, ezeket mindig meg kell jeleníteni SET @sql += N' UNION ALL SELECT DISTINCT TanuloErtekeles.C_TANTARGYID, Tantargy.C_FOTARGYID, Tantargy.C_INTEZMENYID, Tantargy.C_TANEVID FROM T_TANULOERTEKELES_OSSZES TanuloErtekeles INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.C_INTEZMENYID = TanuloErtekeles.C_INTEZMENYID AND Tantargy.C_TANEVID = TanuloErtekeles.C_TANEVID AND Tantargy.TOROLT = ''F'' AND Tantargy.ID = TanuloErtekeles.C_TANTARGYID WHERE TanuloErtekeles.C_INTEZMENYID = @pIntezmenyId AND TanuloErtekeles.C_TANEVID = @pTanevId AND TanuloErtekeles.TOROLT = ''F'' AND TanuloErtekeles.C_TANULOID = @pTanuloId AND TanuloErtekeles.C_TANTARGYID IS NOT NULL AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NULL ' END SET @sql += N' ) INSERT INTO #Tantargyak (ID, C_FOTARGYID, C_NEV, C_TARGYKATEGORIA, C_INTEZMENYID, C_TANEVID) SELECT DISTINCT KapcsopodoTantargy.ID, KapcsopodoTantargy.C_FOTARGYID, KapcsopodoTantargy.C_NEV, KapcsopodoTantargy.C_TARGYKATEGORIA, KapcsopodoTantargy.C_INTEZMENYID, KapcsopodoTantargy.C_TANEVID FROM tantargy_CTE INNER JOIN #KapcsopodoTantargyak KapcsopodoTantargy ON tantargy_CTE.C_TANTARGYID = KapcsopodoTantargy.ID OR tantargy_CTE.C_FOTARGYID = KapcsopodoTantargy.ID SELECT @pTanuloId TanuloId ,Tantargy.ID TantargyId ,Tantargy.C_NEV TantargyNev ,TanuloErtekeles.ID ID ,TanuloErtekeles.C_DATUM Datum ,TanuloErtekeles.C_ROGZITESDATUM RogzitesDatum ,TanuloErtekeles.C_TIPUSID TipusId ,FelhasznaloErtekelo.C_NYOMTATASINEV ErtekeloNyomtatasiNev ,IIF(TanuloErtekeles.ID IS NULL, -- NULL, -- CASE -- WHEN TanuloErtekeles.C_ERTEKELOID = @pTanarId -- THEN ''T'' -- ELSE ''F'' -- END -- ) Modosithato ,TanuloErtekeles.CREATED Created ,IIF(TanuloErtekeles.C_ISMAGATARTASSZORGALOM IS NOT NULL, -- TanuloErtekeles.C_ISMAGATARTASSZORGALOM, -- IIF (Tantargy.ID IS NOT NULL, ''F'', ''T'') -- ) IsMagatartasSzorgalom ,TanuloErtekeles.C_ISERTESITESELKULDVE IsErtesitesElkuldve ,TanuloErtekeles.C_ERTEKELESOSZTALYZATID ErtekelesOsztalyzatId ,TanariAtlagSuly.C_SULY Suly ,TanuloErtekeles.C_ERTEKELESSZOVEG ErtekelesSzoveg ,TanuloErtekeles.C_ERTEKELESSZOVEGROVIDNEV ErtekelesSzovegRovidNev ,TanuloErtekeles.C_ERTEKELESSZAZALEK ErtekelesSzazalek ,TanuloErtekeles.C_ERTEKELESMODID ErtekelesModId ,TanuloErtekeles.C_ERTEKELESTEMA ErtekelesTema ,TanuloErtekeles.C_MAGATARTASOSZTALYZATID MagatartasOsztalyzatId ,TanuloErtekeles.C_MAGATARTASSZOVEG MagatartasSzoveg ,TanuloErtekeles.C_MAGATARTASSZOVEGROVIDNEV MagatartasSzovegRovidNev ,TanuloErtekeles.C_MAGATARTASERTEKID MagatartasErtekId ,TanuloErtekeles.C_SZORGALOMOSZTALYZATID SzorgalomOsztalyzatId ,TanuloErtekeles.C_SZORGALOMSZOVEG SzorgalomSzoveg ,TanuloErtekeles.C_SZORGALOMSZOVEGROVIDNEV SzorgalomSzovegRovidNev ,TanuloErtekeles.C_SZORGALOMERTEKID SzorgalomErtekId ,Tantargy.C_TARGYKATEGORIA TantargyKategoriaId ,Fotargy.ID FotargyId ,Fotargy.C_NEV FotargyNev ,Fotargy.C_TARGYKATEGORIA FotargyTantargyKategoriaId FROM #Tantargyak Tantargy LEFT JOIN( ' IF @pFeladatKategoriaId = @pAlapKategoriaId OR @pFeladatKategoriaId IS NULL BEGIN SET @sql += N' SELECT TanuloErtekeles.* FROM T_TANULOERTEKELES_OSSZES TanuloErtekeles INNER JOIN T_OSZTALYCSOPORT_OSSZES Osztaly ON Osztaly.C_INTEZMENYID = TanuloErtekeles.C_INTEZMENYID AND Osztaly.C_TANEVID = TanuloErtekeles.C_TANEVID AND Osztaly.TOROLT = ''F'' AND Osztaly.ID = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID AND Osztaly.C_EVFOLYAMTIPUSA = @evfolyamTipusId WHERE TanuloErtekeles.C_INTEZMENYID = @pIntezmenyId AND TanuloErtekeles.C_TANEVID = @pTanevId AND TanuloErtekeles.TOROLT = ''F'' AND TanuloErtekeles.C_TANULOID = @pTanuloId ' END IF @pFeladatKategoriaId IS NULL BEGIN SET @sql += N' UNION ALL ' END IF @pFeladatKategoriaId = @pAmiKategoriaId OR @pFeladatKategoriaId IS NULL BEGIN -- NOTE: Ami-s értékelésnél a C_ROGZITESKORITANULOOSZTALYID null, ezeket mindig meg kell jeleníteni SET @sql += N' SELECT TanuloErtekeles.* FROM T_TANULOERTEKELES_OSSZES TanuloErtekeles WHERE TanuloErtekeles.C_INTEZMENYID = @pIntezmenyId AND TanuloErtekeles.C_TANEVID = @pTanevId AND TanuloErtekeles.TOROLT = ''F'' AND TanuloErtekeles.C_TANULOID = @pTanuloId AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NULL ' END SET @sql += N' ) AS TanuloErtekeles ON (TanuloErtekeles.C_TANTARGYID = Tantargy.ID OR (TanuloErtekeles.C_TANTARGYID IS NULL AND Tantargy.ID IS NULL)) LEFT JOIN T_FELHASZNALO_OSSZES FelhasznaloErtekelo ON FelhasznaloErtekelo.C_INTEZMENYID = Tantargy.C_INTEZMENYID AND FelhasznaloErtekelo.C_TANEVID = Tantargy.C_TANEVID AND FelhasznaloErtekelo.TOROLT = ''F'' AND FelhasznaloErtekelo.ID = TanuloErtekeles.C_ERTEKELOID LEFT JOIN T_TANARIATLAGSULY_OSSZES TanariAtlagSuly ON TanariAtlagSuly.C_INTEZMENYID = Tantargy.C_INTEZMENYID AND TanariAtlagSuly.C_TANEVID = Tantargy.C_TANEVID AND TanariAtlagSuly.TOROLT = ''F'' AND TanariAtlagSuly.C_ERTEKELESMODID = TanuloErtekeles.C_ERTEKELESMODID AND TanuloErtekeles.C_ISMAGATARTASSZORGALOM = ''F'' AND TanuloErtekeles.C_ERTEKELESOSZTALYZATID IS NOT NULL LEFT JOIN T_TANTARGY_OSSZES Fotargy ON Fotargy.C_INTEZMENYID = Tantargy.C_INTEZMENYID AND Fotargy.C_TANEVID = Tantargy.C_TANEVID AND Fotargy.TOROLT = ''F'' AND Fotargy.ID = Tantargy.C_FOTARGYID ' EXEC sp_executesql @sql, N' @pIntezmenyId INT ,@pTanevId INT ,@pTanarId INT ,@pTanuloId INT ,@pDatum DATE ,@pFeladatKategoriaId INT ,@evfolyamTipusId INT ,@pAmiKategoriaId INT ,@pAlapKategoriaId INT' ,@pIntezmenyId = @pIntezmenyId ,@pTanevId = @pTanevId ,@pTanarId = @pTanarId ,@pTanuloId = @pTanuloId ,@pDatum = @pDatum ,@pFeladatKategoriaId = @pFeladatKategoriaId ,@evfolyamTipusId = @evfolyamTipusId ,@pAmiKategoriaId = @pAmiKategoriaId ,@pAlapKategoriaId = @pAlapKategoriaId END GO