﻿SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

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

CREATE PROCEDURE dbo.[sp_GetDokumentumErtekelesek]
	@osztalyId			INT,
	@tanevId			INT,
	@ertekelesTipus		INT,
	@isBizonyitvany		INT = 0,
	@isNemet			BIT = 0,
	@isMuveszetOktatasi	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),
		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),
		ErtekeloId INT,
		ErtekelesModjaId INT,
		IsMagatartasSzorgalom CHAR(1),
		Jeloles NVARCHAR(MAX),
		JelolesAndErtekelesTema NVARCHAR(MAX)
	)

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

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

	INSERT INTO @Oraszamok
	SELECT * FROM fnGetDokumentumTanulokEvesOraszamaiOsztalynkonet(@tanevId, @osztalyId)

--É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				INT
		,RENDEZ1				INT
		,RENDEZ2				NVARCHAR(MAX)
		,RENDEZ3				INT
		,RENDEZ4				INT
		,RENDEZ5				NVARCHAR(MAX)
	)

	INSERT INTO #temp
	SELECT 
		 ErtekelesTemp.TanuloId									TANULOID
		,TanuloTable.TanuloCsoportId							TanuloCsoportId
		,IIF(@isNemet = 0, 'MAGATARTAS', 'Betragen')			TARGY
		,NULL
		,ISNULL(CONVERT(NVARCHAR(MAX), IIF(@isNemet = 0, MagatartasErtek, dbo.fnGetDokumentumNemet(MagatartasOsztalyzatId))), ISNULL(MagatartasSzoveg, IIF(@isNemet = 0, MagatartasOsztalyzatNev, dbo.fnGetDokumentumNemet(MagatartasOsztalyzatId))))
		,NULL
		,ISNULL(CONVERT(NVARCHAR(MAX), IIF(@isNemet = 0, MagatartasErtek, dbo.fnGetDokumentumNemet(MagatartasOsztalyzatId))), ISNULL(MagatartasSzoveg, IIF(@isNemet = 0, MagatartasOsztalyzatNev, dbo.fnGetDokumentumNemet(MagatartasOsztalyzatId)))) ErtekelesJegyzettel
		,NULL					Oraszam
		,-1 					RENDEZ1
		,'aaa'					RENDEZ2
		,-1						RENDEZ3
		,-1						RENDEZ4
		,'aaa'					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 MagatartasSzoveg IS NOT NULL OR MagatartasOsztalyzatNev IS NOT NULL)
		AND TipusId = @ertekelesTipus --????

	
	INSERT INTO #TEMP
	SELECT 
		 ErtekelesTemp.TanuloId								TANULOID
		 ,TanuloTable.TanuloCsoportId							TanuloCsoportId
		,IIF(@isNemet = 0, 'SZORGALOM', 'Fleiss')			TARGY
		,NULL															
		,ISNULL(CONVERT(NVARCHAR(MAX), IIF(@isNemet = 0, SzorgalomErtek, dbo.fnGetDokumentumNemet(SzorgalomOsztalyzatId))), ISNULL(SzorgalomSzoveg, IIF(@isNemet = 0, SzorgalomOsztalyzatNev, dbo.fnGetDokumentumNemet(SzorgalomOsztalyzatId))))
		,NULL
		,ISNULL(CONVERT(NVARCHAR(MAX), IIF(@isNemet = 0, SzorgalomErtek, dbo.fnGetDokumentumNemet(SzorgalomOsztalyzatId))), ISNULL(SzorgalomSzoveg, IIF(@isNemet = 0, SzorgalomOsztalyzatNev, dbo.fnGetDokumentumNemet(SzorgalomOsztalyzatId)))) ErtekelesJegyzettel
		,NULL					Oraszam
		,0						RENDEZ1
		,'aab'					RENDEZ2
		,0						RENDEZ3
		,0						RENDEZ4
		,'aab'					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 SzorgalomSzoveg IS NOT NULL OR SzorgalomOsztalyzatNev IS NOT NULL)
		AND TipusId = @ertekelesTipus --????

	INSERT INTO #TEMP	
	SELECT 
		 ErtekelesTemp.TanuloId															TANULOID
		 ,TanuloTable.TanuloCsoportId							TanuloCsoportId
		,ISNULL(ErtekelesTemp.TantargyNevNyomtatvanyban, ErtekelesTemp.TantargyNev)		TARGY   
		,ErtekelesTemp.ErtekelesTema
		,ISNULL(CONVERT(NVARCHAR(MAX), IIF(@isNemet = 0, ErtekelesTemp.ErtekelesOsztalyzatNev, dbo.fnGetDokumentumNemet(ErtekelesTemp.ErtekelesOsztalyzatId))), ISNULL(ErtekelesTemp.ErtekelesSzoveg, CONVERT(NVARCHAR(MAX),ErtekelesTemp.ErtekelesSzazalek)))
		,ErtekelesTemp.ErtekelesOsztalyzatValue
		,ISNULL(CONVERT(NVARCHAR(MAX), IIF(@isNemet = 0, ErtekelesTemp.ErtekelesOsztalyzatNev, dbo.fnGetDokumentumNemet(ErtekelesTemp.ErtekelesOsztalyzatId))), ISNULL(ErtekelesTemp.ErtekelesSzoveg, CONVERT(NVARCHAR(MAX),ErtekelesTemp.ErtekelesSzazalek))) + IIF(ErtekelesTemp.ErtekelesTema IS NULL, '', +' * ' + ErtekelesTemp.ErtekelesTema) ErtekelesJegyzettel
		,Oraszam											Oraszam
		,CASE WHEN ErtekelesTemp.FotargyId IS NULL THEN ISNULL(TargyKategoriaDictionary.C_ORDER, 10000) ELSE ISNULL(FotargyKategoriaDictionary.C_ORDER, 10000) END 
		,ISNULL(ISNULL(FotargyTable.C_NEVNYOMTATVANYBAN, FotargyTable.C_NEV), ISNULL(ErtekelesTemp.TantargyNevNyomtatvanyban, ErtekelesTemp.TantargyNev))
		,ISNULL(ErtekelesTemp.FotargyId, ErtekelesTemp.TantargyId)
		,ErtekelesTemp.FotargyId
		,ISNULL(ErtekelesTemp.TantargyNevNyomtatvanyban, ErtekelesTemp.TantargyNev)
	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
		LEFT JOIN T_DICTIONARYITEMBASE_OSSZES TargyKategoriaDictionary ON TargyKategoriaDictionary.Id = ErtekelesTemp.TargyKategoriaId AND TargyKategoriaDictionary.TOROLT = 'F' AND TargyKategoriaDictionary.C_TANEVID = @tanevId
		LEFT JOIN T_TANTARGY_OSSZES FotargyTable ON Ertekelestemp.FotargyId = FotargyTable.ID
		LEFT JOIN T_DICTIONARYITEMBASE_OSSZES FotargyKategoriaDictionary ON FotargyKategoriaDictionary.ID = FotargyTable.C_TARGYKATEGORIA AND FotargyKategoriaDictionary.C_TANEVID = FotargyTable.C_TANEVID
	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
		,Ertekeles
		,ErtekelesValue	
		,ErtekelesJegyzettel 
		,Oraszam 
		,RENDEZ1 
		,RENDEZ2
		,RENDEZ3
		,RENDEZ4
		,RENDEZ5
	FROM #temp
	ORDER BY RENDEZ1, RENDEZ2, RENDEZ3, RENDEZ4, RENDEZ5
END

GO