SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

IF OBJECT_ID('[dbo].[sp_GetUzenofuzetErtekelolap]') IS NOT NULL 
BEGIN
  DROP PROCEDURE [dbo].[sp_GetUzenofuzetErtekelolap]
END  
GO

CREATE PROCEDURE [dbo].[sp_GetUzenofuzetErtekelolap]
	@osztalyId INT,
	@tanevId   INT

AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	--Intézmény, tanév
	SELECT T_INTEZMENYADATOK_OSSZES.C_NEV				IntezmenyNeve,
		   T_INTEZMENYADATOK_OSSZES.C_VAROS				IntezmenyVaros,
		   dbo.fnGetDokumentumIntezmenyCime(@tanevId)	IntezmenyCime,
		   T_INTEZMENYADATOK_OSSZES.C_TELEFONSZAM		TELEFON,
		   T_INTEZMENYADATOK_OSSZES.C_EMAILCIM			EMAILCIM,
		   T_INTEZMENYADATOK_OSSZES.C_OMKOD				IntezmenyOMKod,
		   T_INTEZMENYADATOK_OSSZES.C_IGAZGATONEVE		Intezmenyvezeto, 
		   (SELECT C_OSZTALYFONOKID FROM T_OSZTALY_OSSZES WHERE T_OSZTALY_OSSZES.ID = @osztalyId AND T_OSZTALY_OSSZES.C_ALTANEVID = @tanevId AND T_OSZTALY_OSSZES.TOROLT = 'F') PartnerID,
		   T_TANEV_OSSZES.C_NEV							TANEV
	FROM T_INTEZMENYADATOK_OSSZES
		INNER JOIN T_TANEV_OSSZES on T_TANEV_OSSZES.ID = T_INTEZMENYADATOK_OSSZES.C_TANEVID AND T_TANEV_OSSZES.C_INTEZMENYID = T_INTEZMENYADATOK_OSSZES.C_INTEZMENYID AND T_TANEV_OSSZES.TOROLT = 'F'
	WHERE 
		T_INTEZMENYADATOK_OSSZES.TOROLT = 'F'
		AND T_TANEV_OSSZES.ID = @tanevId

	--Osztály, évfolyam
	SELECT T_OSZTALYCSOPORT_OSSZES.C_NEV,
		   T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA,
		   T_FELHASZNALO_OSSZES.C_NYOMTATASINEV Osztalyfonok
	FROM T_OSZTALYCSOPORT_OSSZES
		INNER JOIN T_OSZTALY_OSSZES ON T_OSZTALYCSOPORT_OSSZES.id = T_OSZTALY_OSSZES.ID
		INNER JOIN T_FELHASZNALO_OSSZES ON T_FELHASZNALO_OSSZES.id = T_OSZTALY_OSSZES.c_osztalyfonokid
	WHERE T_OSZTALYCSOPORT_OSSZES.TOROLT='F' 
		AND T_OSZTALYCSOPORT_OSSZES.ID = @osztalyId
		AND T_OSZTALYCSOPORT_OSSZES.C_TANEVID = @tanevId

	
	--Tanuló adatai
	SELECT 
		T_FELHASZNALO_OSSZES.ID						TANULOID,
		T_FELHASZNALO_OSSZES.C_NYOMTATASINEV		TANULONEV,
		T_FELHASZNALO_OSSZES.C_OKTATASIAZONOSITO	OKTATASIAZONOSITO
	FROM T_FELHASZNALO_OSSZES
		INNER JOIN fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyId, 'T') Tanulok ON Tanulok.TanuloId = T_FELHASZNALO_OSSZES.Id
	ORDER BY T_FELHASZNALO_OSSZES.C_NYOMTATASINEV
	
	--Jegyek
	SELECT 
		Datum
		,TipusId
		,ErtekelesSzoveg
		,ErtekelesOsztalyzatId
		,ErtekelesOsztalyzatValue
		,ErtekelesOsztalyzatNev
		,ErtekelesSzazalek
		,MagatartasOsztalyzatId
		,MagatartasOsztalyzatNev
		,MagatartasSzoveg
		,MagatartasErtekId
		,MagatartasErtek
		,SzorgalomOsztalyzatId
		,SzorgalomOsztalyzatNev
		,SzorgalomSzoveg
		,SzorgalomErtekId
		,SzorgalomErtek
		,TanuloId
		,OsztalyCsoportId
		,TantargyId
		,TantargyNevZarojellel
		,TantargyNev
		,TantargyNevNyomtatvanyban
		,TargyKategoriaId
		,FotargyE
		,FotargyId
		,Altantargy
		,ErtekelesTema
		,Jeloles
		,JelolesAndErtekelesTema 
		,isMagatartasSzorgalom
	INTO #ErtekelesekTemp
	FROM fnGetDokumentumErtekelesekOsztalyonkent (@tanevId, @osztalyId)

		DECLARE @FelevVegeHonap INT,
				@FelevVegeNap	INT
		SELECT 
			 @FelevVegeHonap = DATEPART(mm, C_DATUM)
			,@FelevVegeNap = DATEPART(dd, C_DATUM)
		FROM T_TANEVRENDJE_OSSZES 
		WHERE 
			C_NAPTIPUSA = 1400 
			AND TOROLT = 'F' 
			AND C_TANEVID = @tanevid

		SELECT * INTO #magatartasSzorgalomTMP FROM
		(SELECT 
			'Magatartás' Tipus
			,IIF(DATEPART(mm, Datum) = @FelevVegeHonap, IIF(DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap, 13, 14), DATEPART(mm, Datum))  Honap
			,TanuloId
			,ISNULL(MagatartasErtek, MagatartasOsztalyzatNev)	Ertekeles
		FROM #ErtekelesekTemp
		WHERE
			(MagatartasErtek IS NOT NULL OR MagatartasOsztalyzatNev IS NOT NULL)
			AND TipusId = 1518

		UNION ALL

		SELECT 
			'Szorgalom'
			,IIF(DATEPART(mm, Datum) = @FelevVegeHonap, IIF(DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap, 13, 14), DATEPART(mm, Datum))  Honap
			,TanuloId
			,ISNULL(SzorgalomErtek, SzorgalomOsztalyzatNev) 
		FROM #ErtekelesekTemp
		WHERE
			(SzorgalomErtek IS NOT NULL OR SzorgalomOsztalyzatNev IS NOT NULL)
			AND TipusId = 1518

		UNION ALL

		SELECT 
			'Szorgalom'
			,15  Honap
			,TanuloId
			,ISNULL(SzorgalomErtek, SzorgalomOsztalyzatNev) 
		FROM #ErtekelesekTemp
		WHERE
			(SzorgalomErtek IS NOT NULL OR SzorgalomOsztalyzatNev IS NOT NULL)
			AND TipusId = 1519

		UNION ALL

		SELECT 
			'Magatartás'
			,15  Honap
			,TanuloId
			,ISNULL(MagatartasErtek, MagatartasOsztalyzatNev)  
		FROM #ErtekelesekTemp
		WHERE
			(MagatartasErtek IS NOT NULL OR MagatartasOsztalyzatNev IS NOT NULL)
			AND TipusId = 1519

		UNION ALL

		SELECT 
			'Szorgalom'
			,16  Honap
			,TanuloId
			,ISNULL(SzorgalomErtek, SzorgalomOsztalyzatNev)  
		FROM #ErtekelesekTemp
		WHERE
			(SzorgalomErtek IS NOT NULL OR SzorgalomOsztalyzatNev IS NOT NULL) 
			AND TipusId = 1520

		UNION ALL

		SELECT 
			'Magatartás'
			,16  Honap
			,TanuloId
			,ISNULL(MagatartasErtek, MagatartasOsztalyzatNev) 
		FROM #ErtekelesekTemp
		WHERE
			(MagatartasErtek IS NOT NULL OR MagatartasOsztalyzatNev IS NOT NULL)
			AND TipusId = 1520

		UNION ALL

		SELECT 
			'Magatartás' Tipus
			,IIF(DATEPART(mm, Datum) = @FelevVegeHonap, IIF(DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap, 13, 14), DATEPART(mm, Datum))  Honap
			,TanuloId
			,ISNULL(MagatartasErtek, MagatartasOsztalyzatNev)	Ertekeles
		FROM #ErtekelesekTemp
		WHERE
			(MagatartasErtek IS NOT NULL OR MagatartasOsztalyzatNev IS NOT NULL)
			AND TipusId = 1518

		UNION ALL

		SELECT 
			'Szorgalom' Tipus
			,IIF(DATEPART(mm, Datum) = @FelevVegeHonap, IIF(DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap, 13, 14), DATEPART(mm, Datum))  Honap
			,TanuloId
			,ISNULL(SzorgalomErtek, SzorgalomOsztalyzatNev) 
		FROM #ErtekelesekTemp
		WHERE
			(SzorgalomErtek IS NOT NULL OR SzorgalomOsztalyzatNev IS NOT NULL)
			AND TipusId = 1518
		)magszorg

		SELECT DISTINCT
			Honap
			,TanuloId
			,Tipus
			,STUFF((
				SELECT ', ' + CAST(Ertekeles AS nvarchar(max))
				FROM #magatartasSzorgalomTMP bmsz 
				WHERE 
					msz.TanuloId = bmsz.TanuloId
					AND msz.Tipus = bmsz.Tipus
					AND msz.Honap = bmsz.Honap
				FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 2,'') Ertekeles 	
			,IIF(Tipus = 'Magatartás', 0, 1) Rendez
			,
			CASE 
				WHEN Honap = 2 THEN 8
				WHEN Honap = 3 THEN 9
				WHEN Honap = 4 THEN 10
				WHEN Honap = 5 THEN 11
				WHEN Honap = 6 THEN 12
				WHEN Honap = 7 THEN 13
				WHEN Honap = 8 THEN 14
				WHEN Honap = 9 THEN  1
				WHEN Honap = 10 THEN 2
				WHEN Honap = 11 THEN 3
				WHEN Honap = 12 THEN 4
				WHEN Honap = 13 THEN 5
				WHEN Honap = 14 THEN 7
				WHEN Honap = 15 THEN 6
				WHEN Honap = 16 THEN 15
			END AS RendezHonap
		INTO #magatartasSzorgalom 
		FROM #magatartasSzorgalomTMP msz

		SELECT * INTO #jegyekTMP FROM
		(SELECT 
			IIF(DATEPART(mm, Datum) = @FelevVegeHonap, IIF(DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap, 13, 14), DATEPART(mm, Datum))  Honap
			,TanuloId
			,TantargyId
			,ISNULL(CONVERT(NVARCHAR(MAX),ErtekelesOsztalyzatValue), ErtekelesSzazalek) Ertekeles 
			,TargyKategoriaId Rendez
		FROM #ErtekelesekTemp
		WHERE
			isMagatartasSzorgalom = 'F'
			AND (ErtekelesOsztalyzatValue IS NOT NULL OR ErtekelesSzazalek IS NOT NULL)
			AND TipusId = 1518

		UNION ALL

		SELECT 
			15  Honap
			,TanuloId
			,TantargyId
			,ISNULL(CONVERT(NVARCHAR(MAX),ErtekelesOsztalyzatValue), ErtekelesSzazalek)  
			,TargyKategoriaId Rendez
		FROM #ErtekelesekTemp
		WHERE
			isMagatartasSzorgalom = 'F'
			AND (ErtekelesOsztalyzatValue IS NOT NULL OR ErtekelesSzazalek IS NOT NULL)
			AND TipusId = 1519

		UNION ALL

		SELECT 
			16  Honap
			,TanuloId
			,TantargyId
			,ISNULL(CONVERT(NVARCHAR(MAX),ErtekelesOsztalyzatValue), ErtekelesSzazalek)  
			,TargyKategoriaId Rendez
		FROM #ErtekelesekTemp
		WHERE
			isMagatartasSzorgalom = 'F'
			AND (ErtekelesOsztalyzatValue IS NOT NULL OR ErtekelesSzazalek IS NOT NULL)
			AND TipusId = 1520
		)jegyek

		SELECT DISTINCT
			Honap
			,TanuloId
			,TantargyId
			,STUFF((
				SELECT ', ' + CAST(Ertekeles AS nvarchar(max))
				FROM #jegyekTMP bj 
				WHERE 
					j.TanuloId = bj.TanuloId
					AND j.TantargyId = bj.TantargyId
					AND j.Honap = bj.Honap
				FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 2,'') Ertekeles 	
			,Rendez
			,
				CASE 
				WHEN Honap = 2 THEN 8
				WHEN Honap = 3 THEN 9
				WHEN Honap = 4 THEN 10
				WHEN Honap = 5 THEN 11
				WHEN Honap = 6 THEN 12
				WHEN Honap = 7 THEN 13
				WHEN Honap = 8 THEN 14
				WHEN Honap = 9 THEN  1
				WHEN Honap = 10 THEN 2
				WHEN Honap = 11 THEN 3
				WHEN Honap = 12 THEN 4
				WHEN Honap = 13 THEN 5
				WHEN Honap = 14 THEN 7
				WHEN Honap = 15 THEN 6
				WHEN Honap = 16 THEN 15
				END AS RendezHonap
		INTO #jegyek 
		FROM #jegyekTMP j

	SELECT * FROM(
		SELECT 
			TanuloId
			, Tipus
			, Rendez
			,[9],[10],[11],[12],[2],[3],[4],[5],[6],[13],[14],[15],[16]	
		FROM (SELECT TanuloId, Ertekeles, Honap, Tipus, IIF(Tipus = 'Magatartás', 0, 1) TantargyId, Rendez
				FROM #magatartasSzorgalom)a
		PIVOT (MAX(Ertekeles) FOR Honap IN ([9],[10],[11],[12],[2],[3],[4],[5],[6],[13],[14],[15],[16])) piv
		
		UNION ALL

		SELECT
			TanuloId		TanuloId
			,C_NEV			TantargyNev
			,Rendez
			,[9],[10],[11],[12],[2],[3],[4],[5],[6],[13],[14],[15],[16]	
		FROM (SELECT TanuloId, Ertekeles, Honap, TantargyId, Rendez FROM #jegyek) j
			INNER JOIN (SELECT Id, C_NEV FROM T_TANTARGY_OSSZES) t ON t.Id = TantargyId
		PIVOT (MAX(Ertekeles) FOR Honap IN ([9],[10],[11],[12],[2],[3],[4],[5],[6],[13],[14],[15],[16])) piv
		)vegleges
		ORDER BY TanuloId, Rendez, Tipus

END

GO