﻿SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

DROP PROCEDURE IF EXISTS [dbo].[sp_GetDokumentumErtekelesek] 
GO

CREATE PROCEDURE [dbo].[sp_GetDokumentumErtekelesek]
	@osztalyId			INT,
	@tanevId			INT,
	@ertekelesTipus		INT,
	@isBizonyitvany		INT = 0,
	@nyomtatvanyNyelvEnum		INT = 0,
	@isMuveszetOktatasi	BIT = 0,
	@tanitasiHetekSzamaVegzos		INT = 32,
	@tanitasiHetekSzamaNemVegzos	INT = 36,
	@isAltantargyBeszamitasa BIT = 0
AS
BEGIN
	SET NOCOUNT ON;

--Osztályhoz tartozó tanulók
	DECLARE @TANULO TABLE (TanuloId INT, TanuloCsoportId INT, BelepesDatum DATE, KilepesDatum DATE)
	INSERT INTO @TANULO
	SELECT 
		 TanuloId
		,TanuloCsoportId
		,BelepesDatum
		,KilepesDatum 
	FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyId, 'T') 

--Osztályhoz tartozó értékelések
	CREATE TABLE #ErtekelesekTemp
	(
		ErtekelesId INT primary key NOT NULL,
		Datum DATE,
		TipusId INT,
		ErtekelesSzoveg NVARCHAR(MAX),
		ErtekelesSzovegFormazott 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),
		MagatartasSzovegFormazott NVARCHAR(MAX),
		MagatartasSzovegRovidNev NVARCHAR(3),
		MagatartasErtekId INT,
		MagatartasErtek NVARCHAR(MAX),
		MagatartasErtekOsztalyzatkent INT,
		SzorgalomOsztalyzatId INT,
		SzorgalomOsztalyzatValue INT, 
		SzorgalomOsztalyzatNev NVARCHAR(MAX),
		SzorgalomSzoveg NVARCHAR(MAX),
		SzorgalomSzovegFormazott 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),
		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),
		RENDEZ1	INT,
		RENDEZ2	NVARCHAR(MAX),
		RENDEZ3 INT,
		RENDEZ4	INT,
		RENDEZ5	NVARCHAR(MAX)
	)

	IF (@isMuveszetOktatasi = 0)
	BEGIN
	INSERT INTO #ErtekelesekTemp
	SELECT 
		ErtekelesId 
		,Datum 
		,TipusId
		,ErtekelesSzoveg 
		,ErtekelesSzovegFormazott
		,ErtekelesSzovegRovidNev 
		,ErtekelesOsztalyzatId
		,ErtekelesOsztalyzatValue 
		,ErtekelesOsztalyzatNev
		,ErtekelesSzazalek 
		,MagatartasOsztalyzatId
		,MagatartasOsztalyzatValue 
		,MagatartasOsztalyzatNev 
		,MagatartasSzoveg 
		,MagatartasSzovegFormazott
		,MagatartasSzovegRovidNev
		,MagatartasErtekId 
		,MagatartasErtek 
		,MagatartasErtekOsztalyzatkent
		,SzorgalomOsztalyzatId
		,SzorgalomOsztalyzatValue
		,SzorgalomOsztalyzatNev
		,SzorgalomSzoveg 
		,SzorgalomSzovegFormazott
		,SzorgalomSzovegRovidNev
		,SzorgalomErtekId
		,SzorgalomErtek 
		,SzorgalomErtekOsztalyzatkent 
		,TanuloId
		,OsztalyCsoportId
		,TantargyId 
		,TantargyNevZarojellel 
		,TantargyNevNyomtatvanyban 
		,TantargyNev
		,TantargyAngolNev
		,TantargyNemetNev
		,TargyKategoriaId
		,FotargyE
		,Altantargy
		,FotargyId 
		,ErtekelesTema 
		,ErtekeloId 
		,ErtekelesModjaId 
		,IsMagatartasSzorgalom 
		,Jeloles
		,JelolesAndErtekelesTema
		,RENDEZ1							
		,RENDEZ2
		,RENDEZ3
		,RENDEZ4
		,RENDEZ5
	FROM fnGetDokumentumErtekelesekOsztalyonkent (@tanevId, @osztalyId, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT)
	END
	ELSE
	BEGIN
	INSERT INTO #ErtekelesekTemp
	SELECT 
		ErtekelesId 
		,Datum 
		,TipusId
		,ErtekelesSzoveg 
		,ErtekelesSzovegFormazott
		,ErtekelesSzovegRovidNev 
		,ErtekelesOsztalyzatId
		,ErtekelesOsztalyzatValue 
		,ErtekelesOsztalyzatNev
		,ErtekelesSzazalek 
		,MagatartasOsztalyzatId
		,MagatartasOsztalyzatValue 
		,MagatartasOsztalyzatNev 
		,MagatartasSzoveg 
		,MagatartasSzovegFormazott
		,MagatartasSzovegRovidNev
		,MagatartasErtekId 
		,MagatartasErtek 
		,MagatartasErtekOsztalyzatkent
		,SzorgalomOsztalyzatId
		,SzorgalomOsztalyzatValue
		,SzorgalomOsztalyzatNev
		,SzorgalomSzoveg 
		,SzorgalomSzovegFormazott
		,SzorgalomSzovegRovidNev
		,SzorgalomErtekId
		,SzorgalomErtek 
		,SzorgalomErtekOsztalyzatkent 
		,TanuloId
		,OsztalyCsoportId
		,TantargyId 
		,TantargyNevZarojellel 
		,TantargyNevNyomtatvanyban 
		,TantargyNev
		,NULL
		,NULL
		,TargyKategoriaId
		,FotargyE
		,Altantargy
		,FotargyId 
		,ErtekelesTema 
		,ErtekeloId 
		,ErtekelesModjaId 
		,IsMagatartasSzorgalom 
		,Jeloles
		,JelolesAndErtekelesTema
		,RENDEZ1							
		,RENDEZ2
		,RENDEZ3
		,RENDEZ4
		,RENDEZ5
	FROM fnGetDokumentumErtekelesekMuveszetiOktatasbanOsztalyonkent (@tanevId, @osztalyId, DEFAULT, 0, DEFAULT, 2)
	END

--Tanulóhoz kapcsolódó óraszámok
	DECLARE @Oraszamok TABLE (TanuloId int, Tantargy INT, Oraszam FLOAT)

	INSERT INTO @Oraszamok
	SELECT TanuloId, TantargyId, Oraszam FROM fnGetDokumentumTanulokEvesOraszamaiOsztalyonkent(@tanevId, @osztalyId, @tanitasiHetekSzamaVegzos, @tanitasiHetekSzamaNemVegzos, @isAltantargyBeszamitasa)

--Értékelések	
	CREATE TABLE #temp
	(
		 TANULOID				INT
		,TANULOCSOPORTID		INT
		,TARGY					NVARCHAR(MAX)
		,Jegyzet				NVARCHAR(MAX)
		,Ertekeles				NVARCHAR(MAX)
		,ErtekelesValue			INT
		,ErtekelesJegyzettel	NVARCHAR(MAX)
		,Oraszam				FLOAT
		,RENDEZ1				INT
		,RENDEZ2				NVARCHAR(MAX)
		,RENDEZ3				INT
		,RENDEZ4				INT
		,RENDEZ5				NVARCHAR(MAX)
	)

	DECLARE @NyelvesitettMagatartasNev NVARCHAR(MAX) = CASE @nyomtatvanyNyelvEnum WHEN 0 THEN 'MAGATARTAS' WHEN 1 THEN 'Betragen' WHEN 2 THEN 'Conduct' END
	INSERT INTO #temp
	SELECT 
		 ErtekelesTemp.TanuloId				TANULOID
		,TanuloTable.TanuloCsoportId		TanuloCsoportId
		,@NyelvesitettMagatartasNev			TARGY
		,NULL
		,ISNULL(CONVERT(NVARCHAR(MAX), IIF(@nyomtatvanyNyelvEnum = 0, MagatartasErtek, [dbo].fnGetDokumentumIdegenNyelv(@nyomtatvanyNyelvEnum, MagatartasErtekId, @tanevId))), ISNULL(MagatartasSzovegFormazott, IIF(@nyomtatvanyNyelvEnum = 0, MagatartasOsztalyzatNev, [dbo].fnGetDokumentumIdegenNyelv(@nyomtatvanyNyelvEnum, MagatartasOsztalyzatId, @tanevId))))
		,NULL
		,ISNULL(CONVERT(NVARCHAR(MAX), IIF(@nyomtatvanyNyelvEnum = 0, MagatartasErtek, [dbo].fnGetDokumentumIdegenNyelv(@nyomtatvanyNyelvEnum, MagatartasErtekId, @tanevId))), ISNULL(MagatartasSzovegFormazott, IIF(@nyomtatvanyNyelvEnum = 0, MagatartasOsztalyzatNev, [dbo].fnGetDokumentumIdegenNyelv(@nyomtatvanyNyelvEnum, MagatartasOsztalyzatId, @tanevId)))) ErtekelesJegyzettel
		,NULL					Oraszam
		,-2							
		,RENDEZ2
		,RENDEZ3
		,RENDEZ4
		,RENDEZ5
	FROM #ErtekelesekTemp ErtekelesTemp
		INNER JOIN @TANULO TanuloTable ON TanuloTable.TanuloId = ErtekelesTemp.TanuloId
	WHERE
		(KilepesDatum IS NULL OR KilepesDatum >= ErtekelesTemp.Datum)
		AND (MagatartasErtek IS NOT NULL OR MagatartasSzovegFormazott IS NOT NULL OR MagatartasOsztalyzatNev IS NOT NULL)
		AND TipusId = @ertekelesTipus --????

	
	DECLARE @NyelvesitettSzorgalomNev NVARCHAR(MAX)	= CASE @nyomtatvanyNyelvEnum WHEN 0 THEN 'SZORGALOM' WHEN 1 THEN 'Fleiss' WHEN 2 THEN 'Effort' END   
	INSERT INTO #TEMP
	SELECT 
		 ErtekelesTemp.TanuloId				TANULOID
		 ,TanuloTable.TanuloCsoportId		TanuloCsoportId
		,@NyelvesitettSzorgalomNev			TARGY
		,NULL															
		,ISNULL(CONVERT(NVARCHAR(MAX), IIF(@nyomtatvanyNyelvEnum = 0, SzorgalomErtek, [dbo].fnGetDokumentumIdegenNyelv(@nyomtatvanyNyelvEnum, SzorgalomErtekId, @tanevId))), ISNULL(SzorgalomSzovegFormazott, IIF(@nyomtatvanyNyelvEnum = 0, SzorgalomOsztalyzatNev, [dbo].fnGetDokumentumIdegenNyelv(@nyomtatvanyNyelvEnum, SzorgalomOsztalyzatId, @tanevId))))
		,NULL
		,ISNULL(CONVERT(NVARCHAR(MAX), IIF(@nyomtatvanyNyelvEnum = 0, SzorgalomErtek, [dbo].fnGetDokumentumIdegenNyelv(@nyomtatvanyNyelvEnum, SzorgalomErtekId, @tanevId))), ISNULL(SzorgalomSzovegFormazott, IIF(@nyomtatvanyNyelvEnum = 0, SzorgalomOsztalyzatNev, [dbo].fnGetDokumentumIdegenNyelv(@nyomtatvanyNyelvEnum, SzorgalomOsztalyzatId, @tanevId)))) ErtekelesJegyzettel
		,NULL					Oraszam
		,-1							
		,RENDEZ2
		,RENDEZ3
		,RENDEZ4
		,RENDEZ5
	FROM #ErtekelesekTemp ErtekelesTemp
		INNER JOIN @TANULO TanuloTable ON TanuloTable.TanuloId = ErtekelesTemp.TanuloId
	WHERE
		(KilepesDatum IS NULL OR KilepesDatum >= ErtekelesTemp.Datum)
		AND (SzorgalomErtek IS NOT NULL OR SzorgalomSzovegFormazott IS NOT NULL OR SzorgalomOsztalyzatNev IS NOT NULL)
		AND TipusId = @ertekelesTipus --????

	INSERT INTO #TEMP	
	SELECT 
		 ErtekelesTemp.TanuloId															TANULOID
		,TanuloTable.TanuloCsoportId							TanuloCsoportId
		,CASE 
			WHEN @nyomtatvanyNyelvEnum = 0 THEN
				ISNULL(ErtekelesTemp.TantargyNevNyomtatvanyban, ErtekelesTemp.TantargyNev)
			WHEN @nyomtatvanyNyelvEnum = 1 THEN
				ISNULL(TantargyNemetNev, ISNULL(ErtekelesTemp.TantargyNevNyomtatvanyban, ErtekelesTemp.TantargyNev))
			WHEN @nyomtatvanyNyelvEnum = 2 THEN
				ISNULL(TantargyAngolNev, ISNULL(ErtekelesTemp.TantargyNevNyomtatvanyban, ErtekelesTemp.TantargyNev))
		 END TARGY   
		,ErtekelesTemp.ErtekelesTema
		,ISNULL(CONVERT(NVARCHAR(MAX), IIF(@nyomtatvanyNyelvEnum = 0, ErtekelesTemp.ErtekelesOsztalyzatNev, [dbo].fnGetDokumentumIdegenNyelv(@nyomtatvanyNyelvEnum, ErtekelesTemp.ErtekelesOsztalyzatId, @tanevId))), ISNULL(ErtekelesTemp.ErtekelesSzovegFormazott, CONVERT(NVARCHAR(MAX),ErtekelesTemp.ErtekelesSzazalek)))
		,ErtekelesTemp.ErtekelesOsztalyzatValue
		,ISNULL(CONVERT(NVARCHAR(MAX), IIF(@nyomtatvanyNyelvEnum = 0, ErtekelesTemp.ErtekelesOsztalyzatNev, [dbo].fnGetDokumentumIdegenNyelv(@nyomtatvanyNyelvEnum, ErtekelesTemp.ErtekelesOsztalyzatId, @tanevId))), ISNULL(ErtekelesTemp.ErtekelesSzovegFormazott, CONVERT(NVARCHAR(MAX),ErtekelesTemp.ErtekelesSzazalek))) + IIF(ErtekelesTemp.ErtekelesTema IS NULL, '', +' * ' + ErtekelesTemp.ErtekelesTema) ErtekelesJegyzettel
		,Oraszam											Oraszam
		,RENDEZ1							
		,RENDEZ2
		,RENDEZ3
		,RENDEZ4
		,RENDEZ5
	FROM #ErtekelesekTemp ErtekelesTemp
		INNER JOIN @TANULO TanuloTable ON TanuloTable.TanuloId = ErtekelesTemp.TanuloId
		LEFT JOIN @Oraszamok OraszamTable ON OraszamTable.Tantargy = ErtekelesTemp.TantargyId AND OraszamTable.TanuloId = ErtekelesTemp.TanuloId
	WHERE 	
		ErtekelesTemp.TipusId = @ertekelesTipus 
		AND (ErtekelesTemp.FotargyE = 'T' OR ErtekelesTemp.Altantargy = 'T')
		AND (KilepesDatum IS NULL OR KilepesDatum >= ErtekelesTemp.Datum)
		AND ErtekelesTemp.TargyKategoriaId <> 1248
		AND ErtekelesTemp.isMagatartasSzorgalom = 'F'

	SELECT 
		TANULOID 
		,TanuloCsoportId
		,TARGY 
		,Jegyzet
		,REPLACE(Ertekeles, '(', ' (')
		,ErtekelesValue	
		,REPLACE(ErtekelesJegyzettel, '(', ' (') 
		,Oraszam 
		,RENDEZ1 
		,RENDEZ2
		,RENDEZ3
		,RENDEZ4
		,RENDEZ5
	FROM #temp
	ORDER BY RENDEZ1, RENDEZ2, RENDEZ3, RENDEZ4, RENDEZ5
END

GO