229 lines
		
	
	
		
			9.6 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			229 lines
		
	
	
		
			9.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 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,
 | 
						|
	TanuloCsoportId 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),
 | 
						|
	ErtekeloId INT,
 | 
						|
	ErtekelesModjaId INT,
 | 
						|
	IsMagatartasSzorgalom CHAR(1),
 | 
						|
	Jeloles NVARCHAR(MAX),
 | 
						|
	JelolesAndErtekelesTema NVARCHAR(MAX)
 | 
						|
)
 | 
						|
AS 
 | 
						|
BEGIN
 | 
						|
	    INSERT INTO @retTanuloErtekeles
 | 
						|
			 SELECT DISTINCT
 | 
						|
				   [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],
 | 
						|
				   TanuloCsoportId,
 | 
						|
				   [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_ERTEKELOID] [ErtekeloId],
 | 
						|
				   [tanuloErtekeles].[C_ERTEKELESMODID] [ErtekelesModjaId],
 | 
						|
				   [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]
 | 
						|
			 INNER JOIN
 | 
						|
				 [T_TANULOCSOPORT_OSSZES] [TanuloCsoport] ON [TanuloCsoport].[C_TANULOID] = [tanuloErtekeles].[C_TANULOID]
 | 
						|
													AND [TanuloCsoport].[C_OSZTALYCSOPORTID] = [tanuloErtekeles].[C_OSZTALYCSOPORTID]
 | 
						|
													AND [tanuloErtekeles].[C_DATUM] BETWEEN [TanuloCsoport].[C_BELEPESDATUM] AND ISNULL([TanuloCsoport].[C_KILEPESDATUM], GETDATE())
 | 
						|
													AND [TanuloCsoport].[TOROLT] = 'F'
 | 
						|
			 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_OSZTALYCSOPORTID] IN
 | 
						|
(
 | 
						|
    SELECT
 | 
						|
		 [ID]
 | 
						|
    FROM
 | 
						|
	    [fnGetDokumentumKapcsolodoOsztalycsoportok](@osztalyCsoportId, @tanevId)
 | 
						|
)))
 | 
						|
				 AND (@ertekelesTipusa IS NULL
 | 
						|
					 OR [C_TIPUSID] = @ertekelesTipusa)
 | 
						|
				 AND (@csakKivlasztottOsztalyCsoport = 0
 | 
						|
					 OR [tanuloErtekeles].[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)
 | 
						|
)))
 | 
						|
option (recompile);
 | 
						|
	    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
 |