292 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			292 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
-- =============================================
 | 
						|
-- Description:	<Előszedjük a tanuló értékeléseket a megadott paraméterek alapján>
 | 
						|
-- =============================================
 | 
						|
SET ANSI_NULLS ON
 | 
						|
GO
 | 
						|
SET QUOTED_IDENTIFIER ON
 | 
						|
GO
 | 
						|
 | 
						|
DROP PROCEDURE IF EXISTS [dbo].[uspGetTanuloErtekelesListDataSet]
 | 
						|
GO
 | 
						|
 | 
						|
CREATE PROCEDURE [dbo].[uspGetTanuloErtekelesListDataSet]
 | 
						|
	 @pTanevId			INT
 | 
						|
	,@pTanuloId			INT				= NULL
 | 
						|
	,@pOsztalyCsoportId	INT				= NULL
 | 
						|
	,@pCsoportTipusId	INT				= NULL
 | 
						|
	,@pTantargyId		INT				= NULL
 | 
						|
	,@pErtekeloId		INT				= NULL
 | 
						|
	,@pOsztalyzatId		INT				= NULL
 | 
						|
	,@pErtekelesModId	INT				= NULL
 | 
						|
	,@pTipusId			INT				= NULL
 | 
						|
	,@pDatumTol			DATETIME		= NULL
 | 
						|
	,@pDatumIg			DATETIME		= NULL
 | 
						|
	,@pRogzitesDatumTol	DATETIME		= NULL
 | 
						|
	,@pRogzitesDatumIg	DATETIME		= NULL
 | 
						|
	,@pErtekelesSzoveg	NVARCHAR(MAX)	= NULL
 | 
						|
	,@pErtekelesTema	NVARCHAR(255)	= NULL
 | 
						|
AS
 | 
						|
BEGIN
 | 
						|
 | 
						|
	-- SET NOCOUNT ON added to prevent extra result sets frominterfering with SELECT statements.
 | 
						|
	SET NOCOUNT ON;
 | 
						|
	
 | 
						|
	--NOTE: A végén lévő konkatenálás miatt kell mindenova NVARCHAR(MAX). Ha 4000-eket használunk elszáll!
 | 
						|
	DECLARE 
 | 
						|
		 @sql			NVARCHAR(MAX)
 | 
						|
		,@preSelectSql	NVARCHAR(MAX)	= ''
 | 
						|
		,@selectSql		NVARCHAR(MAX)
 | 
						|
		,@joinSql		NVARCHAR(MAX)
 | 
						|
		,@whereSql		NVARCHAR(MAX)
 | 
						|
		,@postSelectSql	NVARCHAR(MAX)	= ''
 | 
						|
 | 
						|
	SET @selectSql = N'
 | 
						|
		SELECT DISTINCT
 | 
						|
			 tanuloErtekeles.ID																ID
 | 
						|
			,tanuloErtekeles.C_DATUM														Datum
 | 
						|
			,tanuloErtekeles.C_TIPUSID														TipusId
 | 
						|
			,tanuloErtekeles.C_ROGZITESDATUM												RogzitesDatum
 | 
						|
			,tanuloErtekeles.C_ERTEKELESMODID												ErtekelesModId
 | 
						|
			,tanuloErtekeles.C_ERTEKELESTEMA												ErtekelesTema
 | 
						|
			,tanuloErtekeles.C_ERTEKELESOSZTALYZATID										ErtekelesOsztalyzatId
 | 
						|
			,tanuloErtekeles.C_ERTEKELESSZOVEG												ErtekelesSzoveg
 | 
						|
			,tanuloErtekeles.C_ERTEKELESSZAZALEK											ErtekelesSzazalek
 | 
						|
			,tanuloErtekeles.C_ISMAGATARTASSZORGALOM										IsMagatartasSzorgalom
 | 
						|
			,tanuloErtekeles.C_MAGATARTASOSZTALYZATID										MagatartasOsztalyzatId
 | 
						|
			,tanuloErtekeles.C_MAGATARTASSZOVEG												MagatartasSzoveg
 | 
						|
			,tanuloErtekeles.C_MAGATARTASERTEKID											MagatartasErtekId
 | 
						|
			,tanuloErtekeles.C_SZORGALOMOSZTALYZATID										SzorgalomOsztalyzatId
 | 
						|
			,tanuloErtekeles.C_SZORGALOMSZOVEG												SzorgalomSzoveg
 | 
						|
			,tanuloErtekeles.C_SZORGALOMERTEKID												SzorgalomErtekId
 | 
						|
			,tanuloErtekeles.CREATED														Created
 | 
						|
			,ISNULL(tanariAtlagSuly.C_SULY, 100)											ErtekelesSuly
 | 
						|
			,tantargy.ID																	TantargyId
 | 
						|
			,ISNULL(tantargy.C_NEV, ''Magatartás/Szorgalom'')								TantargyNev
 | 
						|
			,tantargy.C_TARGYKATEGORIA														TantargyKategoriaId
 | 
						|
			,fotargy.ID																		FotargyId
 | 
						|
			,fotargy.C_NEV																	FotargyNev
 | 
						|
			,fotargy.C_TARGYKATEGORIA														FotargyTantargyKategoriaId
 | 
						|
			,tanuloFelhasznalo.ID															TanuloId
 | 
						|
			,tanuloFelhasznalo.C_NYOMTATASINEV												TanuloNev
 | 
						|
			,IIF(tanuloFelhasznalo.C_NEVSORREND = ''T'',									--
 | 
						|
				 tanuloFelhasznalo.C_UTONEV + '' '' + tanuloFelhasznalo.C_VEZETEKNEV,		--
 | 
						|
				 tanuloFelhasznalo.C_VEZETEKNEV + '' '' + tanuloFelhasznalo.C_UTONEV)		TanuloNevElotagNelkul                       
 | 
						|
			,ertekeloFelhasznalo.ID															ErtekeloId
 | 
						|
			,ertekeloFelhasznalo.C_NYOMTATASINEV											ErtekeloNyomtatasiNev
 | 
						|
			,IIF(ertekeloFelhasznalo.C_NEVSORREND = ''T'',									--
 | 
						|
				 ertekeloFelhasznalo.C_UTONEV + '' '' + ertekeloFelhasznalo.C_VEZETEKNEV,	--
 | 
						|
				 ertekeloFelhasznalo.C_VEZETEKNEV + '' '' + ertekeloFelhasznalo.C_UTONEV)	ErtekeloNyomtatasiNevElotagNelkul
 | 
						|
			,osztalyCsoport.C_NEV															OsztalyCsoportNev
 | 
						|
		FROM
 | 
						|
			T_TANULOERTEKELES_OSSZES tanuloErtekeles'
 | 
						|
		
 | 
						|
	SET @joinSql = N'
 | 
						|
		LEFT JOIN
 | 
						|
			T_TANARIATLAGSULY_OSSZES tanariAtlagSuly ON
 | 
						|
					tanariAtlagSuly.C_TANEVID			= tanuloErtekeles.C_TANEVID
 | 
						|
				AND tanariAtlagSuly.TOROLT				= ''F''
 | 
						|
				AND tanariAtlagSuly.C_ERTEKELESMODID	= tanuloErtekeles.C_ERTEKELESMODID
 | 
						|
		LEFT JOIN
 | 
						|
			T_TANTARGY_OSSZES tantargy ON
 | 
						|
					tantargy.C_TANEVID					= tanuloErtekeles.C_TANEVID
 | 
						|
				AND tantargy.TOROLT						= ''F''
 | 
						|
				AND tantargy.ID							= tanuloErtekeles.C_TANTARGYID
 | 
						|
		LEFT JOIN
 | 
						|
			T_TANTARGY_OSSZES fotargy ON
 | 
						|
					fotargy.C_TANEVID					= tanuloErtekeles.C_TANEVID
 | 
						|
				AND fotargy.TOROLT						= ''F''
 | 
						|
				AND fotargy.ID							= tantargy.C_FOTARGYID
 | 
						|
		INNER JOIN
 | 
						|
			T_FELHASZNALO_OSSZES tanuloFelhasznalo ON
 | 
						|
					tanuloFelhasznalo.C_TANEVID			= tanuloErtekeles.C_TANEVID
 | 
						|
				AND tanuloFelhasznalo.TOROLT			= ''F''
 | 
						|
				AND tanuloFelhasznalo.ID				= tanuloErtekeles.C_TANULOID
 | 
						|
		INNER JOIN
 | 
						|
			T_FELHASZNALO_OSSZES ertekeloFelhasznalo ON
 | 
						|
					ertekeloFelhasznalo.C_TANEVID		= tanuloErtekeles.C_TANEVID
 | 
						|
				AND ertekeloFelhasznalo.TOROLT			= ''F''
 | 
						|
				AND ertekeloFelhasznalo.ID				= tanuloErtekeles.C_ERTEKELOID
 | 
						|
		INNER JOIN
 | 
						|
			T_OSZTALYCSOPORT_OSSZES osztalyCsoport ON
 | 
						|
					osztalyCsoport.C_TANEVID			= tanuloErtekeles.C_TANEVID
 | 
						|
				AND osztalyCsoport.TOROLT				= ''F''
 | 
						|
				AND osztalyCsoport.ID					= tanuloErtekeles.C_OSZTALYCSOPORTID
 | 
						|
				AND osztalyCsoport.C_FELADATKATEGORIAID	= (SELECT C_DEFAULTFELADATKATEGORIAID FROM T_TANEV_OSSZES WHERE ID = osztalyCsoport.C_TANEVID)'
 | 
						|
 | 
						|
	SET @whereSql = N'
 | 
						|
		WHERE
 | 
						|
			    tanuloErtekeles.C_TANEVID = @pTanevId
 | 
						|
			AND tanuloErtekeles.TOROLT = ''F'''
 | 
						|
 | 
						|
	IF @pTanuloId IS NOT NULL
 | 
						|
	BEGIN
 | 
						|
		SET @whereSql += N'
 | 
						|
			AND tanuloErtekeles.C_TANULOID = @pTanuloId'
 | 
						|
	END
 | 
						|
 | 
						|
	IF @pOsztalyCsoportId IS NOT NULL
 | 
						|
	BEGIN
 | 
						|
		SET @preSelectSql += N'
 | 
						|
			CREATE TABLE #OsztalyCsoportIdList(
 | 
						|
  				ID	INT PRIMARY KEY
 | 
						|
			)
 | 
						|
			INSERT INTO
 | 
						|
				#OsztalyCsoportIdList (ID)
 | 
						|
			SELECT
 | 
						|
				ID
 | 
						|
			FROM 
 | 
						|
				fnGetKapcsolodoOsztalycsoportok(@pOsztalyCsoportId)'
 | 
						|
 | 
						|
		SET @joinSql += N'
 | 
						|
			LEFT JOIN
 | 
						|
                T_TANULOCSOPORT_OSSZES tanuloCsoport ON
 | 
						|
						tanuloCsoport.C_TANEVID		= tanuloErtekeles.C_TANEVID
 | 
						|
                    AND tanuloCsoport.TOROLT		= ''F''
 | 
						|
                    AND tanuloCsoport.C_TANULOID	= tanuloFelhasznalo.ID
 | 
						|
                    AND tanuloCsoport.C_BELEPESDATUM < GETDATE()
 | 
						|
                    AND (tanuloCsoport.C_KILEPESDATUM IS NULL OR tanuloCsoport.C_KILEPESDATUM >= GETDATE())'
 | 
						|
 | 
						|
		SET @whereSql += N'
 | 
						|
			AND osztalyCsoport.ID IN (SELECT ID FROM #OsztalyCsoportIdList)
 | 
						|
			AND EXISTS (
 | 
						|
				SELECT 1 
 | 
						|
				FROM 
 | 
						|
					T_TANULOCSOPORT_OSSZES tanuloCsoport
 | 
						|
				WHERE 
 | 
						|
						tanuloCsoport.C_TANEVID				= tanuloErtekeles.C_TANEVID
 | 
						|
					AND tanuloCsoport.TOROLT				= ''F''
 | 
						|
					AND tanuloCsoport.C_OSZTALYCSOPORTID	= @pOsztalyCsoportId 
 | 
						|
					AND tanuloCsoport.C_TANULOID			= tanuloFelhasznalo.ID
 | 
						|
			)'
 | 
						|
 | 
						|
		SET @postSelectSql += N'
 | 
						|
			DROP TABLE IF EXISTS #OsztalyCsoportIdList'
 | 
						|
	END
 | 
						|
 | 
						|
	IF @pCsoportTipusId IS NOT NULL
 | 
						|
	BEGIN
 | 
						|
		SET @joinSql += N'
 | 
						|
			LEFT JOIN
 | 
						|
				T_CSOPORT_OSSZES csoport ON
 | 
						|
						csoport.C_ALTANEVID					= tanuloErtekeles.C_TANEVID
 | 
						|
					AND csoport.TOROLT						= ''F'' 
 | 
						|
					AND csoport.ID							= osztalyCsoport.ID'
 | 
						|
 | 
						|
		SET @whereSql += N'
 | 
						|
			AND csoport.C_TIPUSA = @pCsoportTipusId'
 | 
						|
	END
 | 
						|
 | 
						|
	IF @pTantargyId IS NOT NULL
 | 
						|
	BEGIN
 | 
						|
		SET @whereSql += N'
 | 
						|
			AND tantargy.ID = @pTantargyId'
 | 
						|
	END
 | 
						|
 | 
						|
	IF @pErtekeloId IS NOT NULL
 | 
						|
	BEGIN
 | 
						|
		SET @whereSql += N'
 | 
						|
			AND ertekeloFelhasznalo.ID = @pErtekeloId'
 | 
						|
	END
 | 
						|
 | 
						|
	IF @pOsztalyzatId IS NOT NULL
 | 
						|
	BEGIN
 | 
						|
		SET @whereSql += N'
 | 
						|
			AND (tanuloErtekeles.C_ERTEKELESOSZTALYZATID	= @pOsztalyzatId OR
 | 
						|
				 tanuloErtekeles.C_MAGATARTASOSZTALYZATID	= @pOsztalyzatId OR
 | 
						|
				 tanuloErtekeles.C_SZORGALOMOSZTALYZATID	= @pOsztalyzatId)'
 | 
						|
	END
 | 
						|
 | 
						|
	IF @pErtekelesModId IS NOT NULL
 | 
						|
	BEGIN
 | 
						|
		SET @whereSql += N'
 | 
						|
			AND tanuloErtekeles.C_ERTEKELESMODID = @pErtekelesModId'
 | 
						|
	END
 | 
						|
 | 
						|
	IF @pTipusId IS NOT NULL
 | 
						|
	BEGIN
 | 
						|
		SET @whereSql += N'
 | 
						|
			AND tanuloErtekeles.C_TIPUSID = @pTipusId'
 | 
						|
	END
 | 
						|
 | 
						|
	IF @pDatumTol IS NOT NULL
 | 
						|
	BEGIN
 | 
						|
		--NOTE: Ide az adott nap 00:00:00 időponttal fog bejönni.
 | 
						|
		SET @whereSql += N'
 | 
						|
			AND tanuloErtekeles.C_DATUM >= @pDatumTol'
 | 
						|
	END
 | 
						|
 | 
						|
	IF @pDatumIg IS NOT NULL
 | 
						|
	BEGIN
 | 
						|
		--NOTE: Ide az adott nap 23:59:59 időponttal fog bejönni.
 | 
						|
		SET @whereSql += N'
 | 
						|
			AND tanuloErtekeles.C_DATUM <= @pDatumIg'
 | 
						|
	END
 | 
						|
 | 
						|
	IF @pRogzitesDatumTol IS NOT NULL
 | 
						|
	BEGIN
 | 
						|
		--NOTE: Ide az adott nap 00:00:00 időponttal fog bejönni.
 | 
						|
		SET @whereSql += N'
 | 
						|
			AND tanuloErtekeles.C_ROGZITESDATUM >= @pRogzitesDatumTol'
 | 
						|
	END
 | 
						|
 | 
						|
	IF @pRogzitesDatumIg IS NOT NULL
 | 
						|
	BEGIN
 | 
						|
		--NOTE: Ide az adott nap 23:59:59 időponttal fog bejönni.
 | 
						|
		SET @whereSql += N'
 | 
						|
			AND tanuloErtekeles.C_ROGZITESDATUM <= @pRogzitesDatumIg'
 | 
						|
	END
 | 
						|
 | 
						|
	IF @pErtekelesSzoveg IS NOT NULL
 | 
						|
	BEGIN
 | 
						|
		SET @whereSql += N'
 | 
						|
			AND (tanuloErtekeles.C_ERTEKELESSZOVEG  LIKE ''%'' + @pErtekelesSzoveg + ''%'' OR
 | 
						|
				 tanuloErtekeles.C_MAGATARTASSZOVEG LIKE ''%'' + @pErtekelesSzoveg + ''%'' OR
 | 
						|
				 tanuloErtekeles.C_SZORGALOMSZOVEG  LIKE ''%'' + @pErtekelesSzoveg + ''%'')'
 | 
						|
	END
 | 
						|
 | 
						|
	IF @pErtekelesTema IS NOT NULL
 | 
						|
	BEGIN
 | 
						|
		SET @whereSql += N'
 | 
						|
			AND tanuloErtekeles.C_ERTEKELESTEMA LIKE ''%'' + @pErtekelesTema + ''%'''
 | 
						|
	END
 | 
						|
 | 
						|
	SET @sql = @preSelectSql + @selectSql + @joinSql + @whereSql + @postSelectSql
 | 
						|
	
 | 
						|
	EXEC sp_executesql @sql, N'
 | 
						|
		 @pTanevId			INT
 | 
						|
		,@pTanuloId			INT				= NULL
 | 
						|
		,@pOsztalyCsoportId	INT				= NULL
 | 
						|
		,@pCsoportTipusId	INT				= NULL
 | 
						|
		,@pTantargyId		INT				= NULL
 | 
						|
		,@pErtekeloId		INT				= NULL
 | 
						|
		,@pOsztalyzatId		INT				= NULL
 | 
						|
		,@pErtekelesModId	INT				= NULL
 | 
						|
		,@pTipusId			INT				= NULL
 | 
						|
		,@pDatumTol			DATETIME		= NULL
 | 
						|
		,@pDatumIg			DATETIME		= NULL
 | 
						|
		,@pRogzitesDatumTol	DATETIME		= NULL
 | 
						|
		,@pRogzitesDatumIg	DATETIME		= NULL
 | 
						|
		,@pErtekelesSzoveg	NVARCHAR(MAX)	= NULL
 | 
						|
		,@pErtekelesTema	NVARCHAR(255)	= NULL'
 | 
						|
		,@pTanevId			= @pTanevId
 | 
						|
		,@pTanuloId			= @pTanuloId
 | 
						|
		,@pOsztalyCsoportId = @pOsztalyCsoportId
 | 
						|
		,@pCsoportTipusId	= @pCsoportTipusId
 | 
						|
		,@pTantargyId		= @pTantargyId
 | 
						|
		,@pErtekeloId		= @pErtekeloId
 | 
						|
		,@pOsztalyzatId		= @pOsztalyzatId
 | 
						|
		,@pErtekelesModId	= @pErtekelesModId
 | 
						|
		,@pTipusId			= @pTipusId
 | 
						|
		,@pDatumTol			= @pDatumTol
 | 
						|
		,@pDatumIg			= @pDatumIg
 | 
						|
		,@pRogzitesDatumTol	= @pRogzitesDatumTol
 | 
						|
		,@pRogzitesDatumIg	= @pRogzitesDatumIg
 | 
						|
		,@pErtekelesSzoveg	= @pErtekelesSzoveg
 | 
						|
		,@pErtekelesTema	= @pErtekelesTema
 | 
						|
 | 
						|
END
 | 
						|
 | 
						|
 | 
						|
GO
 | 
						|
 |