335 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			335 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
-- =============================================
 | 
						|
-- Description:	<Előszedjük a tanuló értékeléseket tanuló alapján>
 | 
						|
-- =============================================
 | 
						|
SET ANSI_NULLS ON
 | 
						|
GO
 | 
						|
SET QUOTED_IDENTIFIER ON
 | 
						|
GO
 | 
						|
 | 
						|
DROP PROCEDURE IF EXISTS uspGetTanuloErtekelesDataSetByTanulo
 | 
						|
GO
 | 
						|
 | 
						|
CREATE PROCEDURE uspGetTanuloErtekelesDataSetByTanulo
 | 
						|
	 @pIntezmenyId			        INT
 | 
						|
	,@pTanevId				        INT
 | 
						|
	,@pTanarId				        INT
 | 
						|
	,@pTanuloId				        INT
 | 
						|
	,@pDatum				        DATE = NULL
 | 
						|
    ,@pAmiKategoriaId				INT
 | 
						|
	,@pFeladatKategoriaId			INT = NULL
 | 
						|
	,@pKiiratkozottNeJelenjenMeg	BIT = 1
 | 
						|
AS
 | 
						|
BEGIN
 | 
						|
	SET NOCOUNT ON;
 | 
						|
 | 
						|
	IF @pDatum IS NULL
 | 
						|
		SET @pDatum = CONVERT(DATE, GETDATE())
 | 
						|
 | 
						|
	DECLARE @evfolyamTipusId INT = (SELECT TOP 1 EvfolyamTipusId
 | 
						|
                                    FROM dbo.fnGetTanuloOsztaly(@pTanuloId, @pDatum, @pFeladatKategoriaId, @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	     = @pIntezmenyId
 | 
						|
					AND OsztalyCsoport.C_TANEVID		     = @pTanevId
 | 
						|
					AND OsztalyCsoport.TOROLT			     = ''F''
 | 
						|
					AND OsztalyCsoport.ID				     = TanuloCsoport.C_OSZTALYCSOPORTID
 | 
						|
					AND (OsztalyCsoport.C_FELADATKATEGORIAID = @pFeladatKategoriaId OR @pFeladatKategoriaId IS NULL)
 | 
						|
			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
 | 
						|
			);
 | 
						|
			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
 | 
						|
					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''
 | 
						|
 | 
						|
				UNION
 | 
						|
 | 
						|
				SELECT
 | 
						|
					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''
 | 
						|
 | 
						|
                UNION
 | 
						|
 | 
						|
			    SELECT
 | 
						|
			    	TanuloErtekeles.C_TANTARGYID,
 | 
						|
			    	Tantargy.C_FOTARGYID,
 | 
						|
			    	Tantargy.C_INTEZMENYID,
 | 
						|
			    	Tantargy.C_TANEVID
 | 
						|
			    FROM
 | 
						|
			    	T_TANULOERTEKELES_OSSZES TanuloErtekeles
 | 
						|
			    LEFT 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'
 | 
						|
 | 
						|
    IF @pFeladatKategoriaId IS NOT NULL AND  @pFeladatKategoriaId <> @pAmiKategoriaId
 | 
						|
    BEGIN
 | 
						|
        SET @sql += N'
 | 
						|
                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
 | 
						|
                    	AND Osztaly.C_FELADATKATEGORIAID = @pFeladatKategoriaId'
 | 
						|
    END
 | 
						|
 | 
						|
	SET @sql += N'
 | 
						|
                WHERE
 | 
						|
					    TanuloErtekeles.C_INTEZMENYID	 = @pIntezmenyId
 | 
						|
			    	AND TanuloErtekeles.C_TANEVID		 = @pTanevId
 | 
						|
			    	AND TanuloErtekeles.TOROLT			 = ''F''
 | 
						|
			    	AND	TanuloErtekeles.C_TANULOID		 = @pTanuloId'
 | 
						|
 | 
						|
    IF @pFeladatKategoriaId IS NOT NULL
 | 
						|
    BEGIN
 | 
						|
        IF @pFeladatKategoriaId = @pAmiKategoriaId
 | 
						|
        BEGIN
 | 
						|
            SET @sql += N' AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NULL'
 | 
						|
        END
 | 
						|
 | 
						|
        ELSE
 | 
						|
        BEGIN
 | 
						|
            SET @sql += N' AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NOT NULL'
 | 
						|
        END
 | 
						|
    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(
 | 
						|
                SELECT
 | 
						|
			        TanuloErtekeles.*
 | 
						|
		        FROM
 | 
						|
			    T_TANULOERTEKELES_OSSZES TanuloErtekeles'
 | 
						|
 | 
						|
    IF @pFeladatKategoriaId IS NOT NULL AND  @pFeladatKategoriaId <> @pAmiKategoriaId
 | 
						|
    BEGIN
 | 
						|
        SET @sql += N'
 | 
						|
                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
 | 
						|
                    	AND Osztaly.C_FELADATKATEGORIAID = @pFeladatKategoriaId'
 | 
						|
    END
 | 
						|
 | 
						|
    SET @sql += N'
 | 
						|
                WHERE
 | 
						|
					    TanuloErtekeles.C_INTEZMENYID	 = @pIntezmenyId
 | 
						|
			    	AND TanuloErtekeles.C_TANEVID		 = @pTanevId
 | 
						|
			    	AND TanuloErtekeles.TOROLT			 = ''F''
 | 
						|
			    	AND	TanuloErtekeles.C_TANULOID		 = @pTanuloId'
 | 
						|
 | 
						|
    IF @pFeladatKategoriaId IS NOT NULL
 | 
						|
    BEGIN
 | 
						|
        IF @pFeladatKategoriaId = @pAmiKategoriaId
 | 
						|
        BEGIN
 | 
						|
            SET @sql += N' AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NULL'
 | 
						|
        END
 | 
						|
 | 
						|
        ELSE
 | 
						|
        BEGIN
 | 
						|
            SET @sql += N' AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NOT NULL'
 | 
						|
        END
 | 
						|
    END
 | 
						|
 | 
						|
    SET @sql += N'
 | 
						|
			) AS TanuloErtekeles ON
 | 
						|
				(TanuloErtekeles.C_TANTARGYID = Tantargy.ID OR (TanuloErtekeles.C_TANTARGYID IS NULL AND Tantargy.ID IS NULL))
 | 
						|
			INNER 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
 | 
						|
			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
 | 
						|
		,@pFeladatKategoriaId	INT
 | 
						|
		,@evfolyamTipusId		INT'
 | 
						|
		,@pIntezmenyId			= @pIntezmenyId
 | 
						|
		,@pTanevId				= @pTanevId
 | 
						|
		,@pTanarId				= @pTanarId
 | 
						|
		,@pTanuloId				= @pTanuloId
 | 
						|
		,@pFeladatKategoriaId	= @pFeladatKategoriaId
 | 
						|
		,@evfolyamTipusId		= @evfolyamTipusId
 | 
						|
END
 | 
						|
 | 
						|
GO
 |