176 lines
		
	
	
		
			8.6 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			176 lines
		
	
	
		
			8.6 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
SET ANSI_NULLS ON
 | 
						|
GO
 | 
						|
SET QUOTED_IDENTIFIER ON
 | 
						|
GO
 | 
						|
 | 
						|
IF OBJECT_ID('fnGetDokumentumErtekelesekOsztalyonkent') IS NOT NULL
 | 
						|
BEGIN
 | 
						|
	DROP FUNCTION fnGetDokumentumErtekelesekOsztalyonkent
 | 
						|
END
 | 
						|
GO
 | 
						|
 | 
						|
CREATE FUNCTION fnGetDokumentumErtekelesekOsztalyonkent (@tanevId INT, @osztalyCsoportId INT, @ertekelesTipusa INT = NULL, @csakTanorai BIT = 1, @csakKivlasztottOsztalyCsoport BIT = 0, @atsoroltTanuloErtekelesek INT = 0)
 | 
						|
RETURNS @retTanuloErtekeles TABLE 
 | 
						|
(
 | 
						|
	ErtekelesId INT primary key NOT NULL,
 | 
						|
	Datum DATE,
 | 
						|
	TipusId INT,
 | 
						|
	ErtekelesSzoveg NVARCHAR(MAX),
 | 
						|
	ErtekelesSzovegRovidNev NVARCHAR(3),
 | 
						|
	ErtekelesOsztalyzatId INT,
 | 
						|
	ErtekelesOsztalyzatValue INT, 
 | 
						|
	ErtekelesOsztalyzatNev NVARCHAR(MAX),
 | 
						|
	ErtekelesSzazalek NVARCHAR(MAX),
 | 
						|
	MagatartasOsztalyzatId INT,
 | 
						|
	MagatartasOsztalyzatValue INT, 
 | 
						|
	MagatartasOsztalyzatNev NVARCHAR(MAX),
 | 
						|
	MagatartasSzoveg NVARCHAR(MAX),
 | 
						|
	MagatartasSzovegRovidNev NVARCHAR(3),
 | 
						|
	MagatartasErtekId INT,
 | 
						|
	MagatartasErtek NVARCHAR(MAX),
 | 
						|
	MagatartasErtekOsztalyzatkent INT,
 | 
						|
	SzorgalomOsztalyzatId INT,
 | 
						|
	SzorgalomOsztalyzatValue INT, 
 | 
						|
	SzorgalomOsztalyzatNev NVARCHAR(MAX),
 | 
						|
	SzorgalomSzoveg NVARCHAR(MAX),
 | 
						|
	SzorgalomSzovegRovidNev NVARCHAR(3),
 | 
						|
	SzorgalomErtekId INT,
 | 
						|
	SzorgalomErtek NVARCHAR(MAX),
 | 
						|
	SzorgalomErtekOsztalyzatkent INT,
 | 
						|
	TanuloId INT,
 | 
						|
	OsztalyCsoportId INT,
 | 
						|
	TantargyId INT,
 | 
						|
	TantargyNevZarojellel NVARCHAR(MAX),
 | 
						|
	TantargyNevNyomtatvanyban NVARCHAR(MAX),
 | 
						|
	TantargyNev NVARCHAR(MAX),
 | 
						|
	TargyKategoriaId INT,
 | 
						|
	FotargyE CHAR(1),
 | 
						|
	Altantargy CHAR(1),
 | 
						|
	FotargyId INT,
 | 
						|
	ErtekelesTema NVARCHAR(MAX),
 | 
						|
	IsMagatartasSzorgalom CHAR(1),
 | 
						|
	Jeloles NVARCHAR(MAX),
 | 
						|
	JelolesAndErtekelesTema NVARCHAR(MAX)
 | 
						|
)
 | 
						|
AS 
 | 
						|
BEGIN
 | 
						|
	INSERT INTO @retTanuloErtekeles
 | 
						|
	SELECT 
 | 
						|
		 tanuloErtekeles.ID																					    ErtekelesId
 | 
						|
		,tanuloErtekeles.C_DATUM																				Datum
 | 
						|
		,tanuloErtekeles.C_TIPUSID																				TipusId
 | 
						|
		,tanuloErtekeles.C_ERTEKELESSZOVEG																		ErtekelesSzoveg
 | 
						|
		,tanuloErtekeles.C_ERTEKELESSZOVEGROVIDNEV																ErtekelesSzovegRovidNev
 | 
						|
		,tanuloErtekeles.C_ERTEKELESOSZTALYZATID																ErtekelesOsztalyzatId
 | 
						|
		,ertekelesOsztalyzat.C_VALUE																			ErtekelesOsztalyzatValue
 | 
						|
		,ertekelesOsztalyzat.C_NAME																			    ErtekelesOsztalyzatNev
 | 
						|
		,IIF(tanuloErtekeles.C_ERTEKELESSZAZALEK IS NOT NULL													--
 | 
						|
			,CONVERT(NVARCHAR(3), tanuloErtekeles.C_ERTEKELESSZAZALEK) + '%'									--
 | 
						|
			,NULL)																								ErtekelesSzazalek
 | 
						|
		,tanuloErtekeles.C_MAGATARTASOSZTALYZATID																MagatartasOsztalyzatId
 | 
						|
		,magatartasOsztalyzat.C_VALUE																			MagatartasOsztalyzatValue
 | 
						|
		,magatartasOsztalyzat.C_NAME																			MagatartasOsztalyzatNev
 | 
						|
		,tanuloErtekeles.C_MAGATARTASSZOVEG																		MagatartasSzoveg
 | 
						|
		,tanuloErtekeles.C_MAGATARTASSZOVEGROVIDNEV																MagatartasSzovegRovidNev
 | 
						|
		,tanuloErtekeles.C_MAGATARTASERTEKID																	MagatartasErtekId
 | 
						|
		,magatartasErtek.C_NAME																					MagatartasErtek
 | 
						|
		,magatartasErtek.C_VALUE + 1																			MagatartasErtekOsztalyzatkent
 | 
						|
		,tanuloErtekeles.C_SZORGALOMOSZTALYZATID																SzorgalomOsztalyzatId
 | 
						|
		,szorgalomOsztalyzat.C_VALUE																			SzorgalomOsztalyzatValue
 | 
						|
		,szorgalomOsztalyzat.C_NAME																				SzorgalomOsztalyzatNev
 | 
						|
		,tanuloErtekeles.C_SZORGALOMSZOVEG																		SzorgalomSzoveg
 | 
						|
		,tanuloErtekeles.C_SZORGALOMSZOVEGROVIDNEV																SzorgalomSzovegRovidNev
 | 
						|
		,tanuloErtekeles.C_SZORGALOMERTEKID																		SzorgalomErtekId
 | 
						|
		,szorgalomErtek.C_NAME																					SzorgalomErtek
 | 
						|
		,szorgalomErtek.C_VALUE + 1																				SzorgalomErtekOsztalyzatkent
 | 
						|
		,tanuloErtekeles.C_TANULOID																				TanuloId
 | 
						|
		,tanuloErtekeles.C_OSZTALYCSOPORTID																		OsztalyCsoportId
 | 
						|
		,tanuloErtekeles.C_TANTARGYID																			TantargyId
 | 
						|
		,IIF(tantargy.C_NEV <> tantargy.C_NEVNYOMTATVANYBAN AND tantargy.C_NEVNYOMTATVANYBAN IS NOT NULL		--
 | 
						|
			,C_NEVNYOMTATVANYBAN + ' (' + tantargy.C_NEV + ')'													--
 | 
						|
			,tantargy.C_NEV)																					TantargyNevZarojellel
 | 
						|
		,tantargy.C_NEVNYOMTATVANYBAN																			TantargyNevNyomtatvanyban
 | 
						|
		,tantargy.C_NEV																							TantargyNev
 | 
						|
		,tantargy.C_TARGYKATEGORIA																				TargyKategoriaId
 | 
						|
		,tantargy.C_FOTARGYE																					FotargyE
 | 
						|
		,tantargy.C_ALTANTARGYKENTNYOMTATVANYBAN																Altantargy
 | 
						|
		,tantargy.C_FOTARGYID																					FotargyId
 | 
						|
		,tanuloErtekeles.C_ERTEKELESTEMA																		ErtekelesTema
 | 
						|
		,tanuloErtekeles.C_ISMAGATARTASSZORGALOM																IsMagatartasSzorgalom
 | 
						|
		,IIF(																									--
 | 
						|
			tanuloErtekeles.C_ERTEKELESTEMA IS NOT NULL AND tanuloErtekeles.C_TIPUSID IN (1519, 1520), '<i>(' + CAST(CHAR(ROW_NUMBER() OVER (PARTITION BY tanuloErtekeles.C_TANULOID, tanuloErtekeles.C_TIPUSID, IIF(tanuloErtekeles.C_ERTEKELESTEMA IS NOT NULL, 1, 0) ORDER BY tanuloErtekeles.C_DATUM) + 96) AS NVARCHAR(10)) + ')</i>', ''
 | 
						|
		 )																										Jeloles
 | 
						|
		,IIF(																									--
 | 
						|
			tanuloErtekeles.C_ERTEKELESTEMA IS NOT NULL AND tanuloErtekeles.C_TIPUSID IN (1519, 1520), '<i>(' + CAST(CHAR(ROW_NUMBER() OVER (PARTITION BY tanuloErtekeles.C_TANULOID, tanuloErtekeles.C_TIPUSID, IIF(tanuloErtekeles.C_ERTEKELESTEMA IS NOT NULL, 1, 0) ORDER BY tanuloErtekeles.C_DATUM) + 96) AS NVARCHAR(10)) + ')</i>: ' + tanuloErtekeles.C_ERTEKELESTEMA, ''
 | 
						|
		 )																										JelolesAndErtekelesTema 
 | 
						|
	FROM T_TANULOERTEKELES_OSSZES tanuloErtekeles
 | 
						|
		INNER JOIN 
 | 
						|
			fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyCsoportId, 'T') tanulo ON 
 | 
						|
				tanulo.TanuloId = tanuloErtekeles.C_TANULOID
 | 
						|
		LEFT JOIN 
 | 
						|
			T_TANTARGY_OSSZES tantargy ON 
 | 
						|
					tantargy.Id = tanuloErtekeles.C_TANTARGYID
 | 
						|
				AND (tantargy.C_TARGYKATEGORIA <> 1248 OR tantargy.C_TARGYKATEGORIA IS NULL)
 | 
						|
		LEFT JOIN 
 | 
						|
			T_DICTIONARYITEMBASE_OSSZES ertekelesOsztalyzat ON 
 | 
						|
					ertekelesOsztalyzat.ID = tanuloErtekeles.C_ERTEKELESOSZTALYZATID 
 | 
						|
				AND ertekelesOsztalyzat.C_TANEVID = @tanevId
 | 
						|
				AND ertekelesOsztalyzat.C_TYPE LIKE 'OsztalyzatTipus'
 | 
						|
		LEFT JOIN 
 | 
						|
			T_DICTIONARYITEMBASE_OSSZES magatartasOsztalyzat ON 
 | 
						|
					magatartasOsztalyzat.ID = tanuloErtekeles.C_MAGATARTASOSZTALYZATID 
 | 
						|
				AND magatartasOsztalyzat.C_TANEVID = @tanevId
 | 
						|
				AND magatartasOsztalyzat.C_TYPE LIKE 'OsztalyzatTipus'
 | 
						|
		LEFT JOIN 
 | 
						|
			T_DICTIONARYITEMBASE_OSSZES szorgalomOsztalyzat ON 
 | 
						|
					szorgalomOsztalyzat.ID = tanuloErtekeles.C_SZORGALOMOSZTALYZATID 
 | 
						|
				AND szorgalomOsztalyzat.C_TANEVID = @tanevId
 | 
						|
				AND szorgalomOsztalyzat.C_TYPE LIKE 'OsztalyzatTipus'
 | 
						|
		LEFT JOIN 
 | 
						|
			T_DICTIONARYITEMBASE_OSSZES magatartasErtek ON
 | 
						|
					magatartasErtek.ID = tanuloErtekeles.C_MAGATARTASERTEKID 
 | 
						|
				AND magatartasErtek.C_TANEVID = @tanevId	
 | 
						|
				AND magatartasErtek.C_TYPE LIKE 'MagatartasErtekelesTipus'	
 | 
						|
		LEFT JOIN 
 | 
						|
			T_DICTIONARYITEMBASE_OSSZES szorgalomErtek ON
 | 
						|
					szorgalomErtek.ID = tanuloErtekeles.C_SZORGALOMERTEKID 
 | 
						|
				AND szorgalomErtek.C_TANEVID = @tanevId
 | 
						|
				AND szorgalomErtek.C_TYPE LIKE 'SzorgalomErtekelesTipus'
 | 
						|
		INNER JOIN 
 | 
						|
			T_OSZTALYCSOPORT_OSSZES osztalyCsoport ON 
 | 
						|
					osztalyCsoport.ID = tanuloErtekeles.C_OSZTALYCSOPORTID AND osztalyCsoport.TOROLT = 'F'
 | 
						|
		LEFT JOIN 
 | 
						|
			T_CSOPORT_OSSZES csoport ON 
 | 
						|
					csoport.ID = tanuloErtekeles.C_OSZTALYCSOPORTID
 | 
						|
		LEFT JOIN 
 | 
						|
			T_OSZTALY_OSSZES osztaly ON 
 | 
						|
					osztaly.ID = tanuloErtekeles.C_OSZTALYCSOPORTID
 | 
						|
	WHERE
 | 
						|
			tanuloErtekeles.Torolt = 'F'
 | 
						|
		AND (@atsoroltTanuloErtekelesek > 0 OR (tanuloErtekeles.C_DATUM >= BelepesDatum AND C_OSZTALYCSOPORTID IN (SELECT ID FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@osztalyCsoportId, @tanevId))))
 | 
						|
		AND (tanuloErtekeles.C_DATUM <= KilepesDatum OR KilepesDatum IS NULL)
 | 
						|
		AND (@ertekelesTipusa IS NULL OR C_TIPUSID = @ertekelesTipusa)	
 | 
						|
		AND (@csakKivlasztottOsztalyCsoport = 0 OR C_OSZTALYCSOPORTID = @osztalyCsoportId)
 | 
						|
		AND (@csakTanorai = 0 OR osztaly.ID IS NOT NULL OR (csoport.ID IS NOT NULL AND csoport.C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@tanevId))))
 | 
						|
	IF @atsoroltTanuloErtekelesek = 1
 | 
						|
		BEGIN
 | 
						|
			DECLARE @osztalyTantargyak TABLE (TantargyId INT)
 | 
						|
			INSERT INTO @osztalyTantargyak	
 | 
						|
			SELECT DISTINCT TantargyId FROM @retTanuloErtekeles
 | 
						|
			WHERE OsztalyCsoportId IN (SELECT ID FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@osztalyCsoportId, @tanevId))
 | 
						|
		  UNION
 | 
						|
			SELECT DISTINCT C_TANTARGYID
 | 
						|
			FROM T_FOGLALKOZAS_OSSZES
 | 
						|
			INNER JOIN fnGetDokumentumKapcsolodoOsztalycsoportok(@osztalyCsoportId, @tanevId) AS OSZTALYCSOPORT ON OSZTALYCSOPORT.ID = T_FOGLALKOZAS_OSSZES.C_OSZTALYCSOPORTID
 | 
						|
			WHERE T_FOGLALKOZAS_OSSZES.TOROLT = 'F'
 | 
						|
			DELETE FROM @retTanuloErtekeles
 | 
						|
			WHERE ErtekelesId NOT IN (
 | 
						|
				SELECT ErtekelesId FROM @retTanuloErtekeles
 | 
						|
				WHERE TantargyId IS NULL OR TantargyId IN (SELECT TantargyId FROM @osztalyTantargyak)
 | 
						|
			)
 | 
						|
		END
 | 
						|
	RETURN
 | 
						|
END;
 | 
						|
 | 
						|
GO
 |