213 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			213 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
SET ANSI_NULLS ON
 | 
						|
GO
 | 
						|
SET QUOTED_IDENTIFIER ON
 | 
						|
GO
 | 
						|
 | 
						|
DROP FUNCTION IF EXISTS fnGetDokumentumErtekelesekOsztalyonkent
 | 
						|
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),
 | 
						|
	TantargyAngolNev				NVARCHAR(MAX),
 | 
						|
	TantargyNemetNev				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)
 | 
						|
  ,RogzitesDatum DATE
 | 
						|
)
 | 
						|
AS 
 | 
						|
BEGIN
 | 
						|
 | 
						|
DECLARE @DefaultFeladatKategoriaId int = 7553 /*OktNevelesiKategoriaEnum.Alapkepzes*/
 | 
						|
	    INSERT INTO @retTanuloErtekeles
 | 
						|
			 SELECT DISTINCT
 | 
						|
				   tanuloErtekeles.ID,
 | 
						|
				   tanuloErtekeles.C_DATUM,
 | 
						|
				   tanuloErtekeles.C_TIPUSID,
 | 
						|
				   tanuloErtekeles.C_ERTEKELESSZOVEG,
 | 
						|
				   tanuloErtekeles.C_ERTEKELESSZOVEGROVIDNEV,
 | 
						|
				   tanuloErtekeles.C_ERTEKELESOSZTALYZATID,
 | 
						|
				   ertekelesOsztalyzat.C_VALUE,
 | 
						|
				   ertekelesOsztalyzat.C_NAME,
 | 
						|
				   IIF(tanuloErtekeles.C_ERTEKELESSZAZALEK IS NOT NULL, CONVERT(NVARCHAR(3), tanuloErtekeles.C_ERTEKELESSZAZALEK)+'%', NULL),
 | 
						|
				   tanuloErtekeles.C_MAGATARTASOSZTALYZATID,
 | 
						|
				   magatartasOsztalyzat.C_VALUE,
 | 
						|
				   magatartasOsztalyzat.C_NAME,
 | 
						|
				   tanuloErtekeles.C_MAGATARTASSZOVEG,
 | 
						|
				   tanuloErtekeles.C_MAGATARTASSZOVEGROVIDNEV,
 | 
						|
				   tanuloErtekeles.C_MAGATARTASERTEKID,
 | 
						|
				   magatartasErtek.C_NAME,
 | 
						|
				   magatartasErtek.C_VALUE + 1,
 | 
						|
				   tanuloErtekeles.C_SZORGALOMOSZTALYZATID,
 | 
						|
				   szorgalomOsztalyzat.C_VALUE,
 | 
						|
				   szorgalomOsztalyzat.C_NAME,
 | 
						|
				   tanuloErtekeles.C_SZORGALOMSZOVEG,
 | 
						|
				   tanuloErtekeles.C_SZORGALOMSZOVEGROVIDNEV,
 | 
						|
				   tanuloErtekeles.C_SZORGALOMERTEKID,
 | 
						|
				   szorgalomErtek.C_NAME,
 | 
						|
				   szorgalomErtek.C_VALUE + 1,
 | 
						|
				   tanuloErtekeles.C_TANULOID,
 | 
						|
				   TanuloCsoportId,
 | 
						|
				   tanuloErtekeles.C_OSZTALYCSOPORTID,
 | 
						|
				   tanuloErtekeles.C_TANTARGYID,
 | 
						|
				   IIF(tantargy.C_NEV <> tantargy.C_NEVNYOMTATVANYBAN AND tantargy.C_NEVNYOMTATVANYBAN IS NOT NULL, C_NEVNYOMTATVANYBAN +' ('+tantargy.C_NEV+')', tantargy.C_NEV),
 | 
						|
				   tantargy.C_NEVNYOMTATVANYBAN,
 | 
						|
				   tantargy.C_NEV,
 | 
						|
				   tantargy.C_ANGOLNEV,
 | 
						|
				   tantargy.C_NEMETNEV,
 | 
						|
				   tantargy.C_TARGYKATEGORIA,
 | 
						|
				   tantargy.C_FOTARGYE,
 | 
						|
				   tantargy.C_ALTANTARGYKENTNYOMTATVANYBAN,
 | 
						|
				   tantargy.C_FOTARGYID,
 | 
						|
				   tanuloErtekeles.C_ERTEKELESTEMA,
 | 
						|
				   tanuloErtekeles.C_ERTEKELOID,
 | 
						|
				   tanuloErtekeles.C_ERTEKELESMODID,
 | 
						|
				   tanuloErtekeles.C_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>', 
 | 
						|
						''),
 | 
						|
				   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, 
 | 
						|
						'')
 | 
						|
            ,tanuloErtekeles.C_ROGZITESDATUM 
 | 
						|
			 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'and osztalyCsoport.C_FELADATKATEGORIAID = @DefaultFeladatKategoriaId
 | 
						|
				 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.C_TANEVID = @tanevId
 | 
						|
				AND tanuloErtekeles.TOROLT = 'F'
 | 
						|
				AND (@atsoroltTanuloErtekelesek > 0 
 | 
						|
						OR (tanuloErtekeles.C_OSZTALYCSOPORTID 
 | 
						|
						IN(
 | 
						|
							SELECT ID FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@osztalyCsoportId, @tanevId, 0))
 | 
						|
							)
 | 
						|
					   )
 | 
						|
				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)
 | 
						|
								)
 | 
						|
						 )
 | 
						|
					  )
 | 
						|
				AND  BelepesDatum <= tanuloErtekeles.C_DATUM
 | 
						|
				AND (KilepesDatum IS NULL OR KilepesDatum >= tanuloErtekeles.C_DATUM)
 | 
						|
 | 
						|
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, 0)
 | 
						|
						)
 | 
						|
 | 
						|
				    UNION
 | 
						|
 | 
						|
				    SELECT DISTINCT
 | 
						|
						 C_TANTARGYID
 | 
						|
				    FROM
 | 
						|
					    T_FOGLALKOZAS_OSSZES
 | 
						|
				    INNER JOIN fnGetDokumentumKapcsolodoOsztalycsoportok(@osztalyCsoportId, @tanevId, 0) 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
 |