﻿-- =============================================
-- Description:	<Előszedjük a tanuló értékeléseket részletesen>
-- =============================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

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

CREATE PROCEDURE [dbo].[uspGetTanuloErtekelesDetailDataSet]
	 @pIntezmenyId											INT
	,@pTanevId												INT
	,@pTanuloId												INT
	,@pTantargyId											INT = NULL
	,@pShowToroltElemek										BIT
	,@pTanarId												INT
	,@pErtekelesMegjelenesFajtaEnumTantargyId				INT
	,@pErtekelesMegjelenesFajtaEnumMagatartasSzorgalomId	INT
	,@pErtekelesMegjelenesFajtaId							INT
	,@pDatum												DATE = NULL
AS
BEGIN

	-- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.
	SET NOCOUNT ON;
	
	IF @pDatum IS NULL
		SET @pDatum = CONVERT(DATE, GETDATE())

	DECLARE @evfolyamTipusId INT = (SELECT EvfolyamTipusId FROM dbo.fnGetTanuloOsztaly(@pTanuloId, @pDatum)) /*TODO:Tobb Osztaly*//*OM-1643*/

	DECLARE @sql NVARCHAR(MAX)

	SET @sql = N'
		SELECT
			 TanuloErtekeles.ID								ID
			,TanuloErtekeles.C_DATUM						Datum
			,TanuloErtekeles.C_ROGZITESDATUM				RogzitesDatum
			,TanuloErtekeles.C_TIPUSID						TipusId
			,TanuloErtekeles.C_TANORAID						TanoraId
			,TanuloErtekeles.C_ERTEKELESOSZTALYZATID		ErtekelesOsztalyzatId
			,TanuloErtekeles.C_ERTEKELESSZOVEG				ErtekelesSzoveg
			,TanuloErtekeles.C_ERTEKELESSZOVEGROVIDNEV		ErtekelesSzovegRovidNev
			,TanuloErtekeles.C_ERTEKELESSZAZALEK			ErtekelesSzazalek
			,TanuloErtekeles.C_ERTEKELESMODID				ErtekelesModId
			,TanuloErtekeles.C_ERTEKELESTEMA				ErtekelesTema
			,TanuloErtekeles.C_MAGATARTASOSZTALYZATID		MagatartasOsztalyzatId
			,TanuloErtekeles.C_MAGATARTASSZOVEG				MagatartasSzoveg
			,TanuloErtekeles.C_MAGATARTASSZOVEGROVIDNEV		MagatartasSzovegRovidNev
			,TanuloErtekeles.C_MAGATARTASERTEKID			MagatartasErtekId
			,TanuloErtekeles.C_SZORGALOMOSZTALYZATID		SzorgalomOsztalyzatId
			,TanuloErtekeles.C_SZORGALOMSZOVEG				SzorgalomSzoveg
			,TanuloErtekeles.C_SZORGALOMSZOVEGROVIDNEV		SzorgalomSzovegRovidNev
			,TanuloErtekeles.C_SZORGALOMERTEKID				SzorgalomErtekId
			,TanuloErtekeles.C_ISMAGATARTASSZORGALOM		IsMagatartasSzorgalom
			,TanuloErtekeles.CREATED						Created
			,TanuloErtekeles.TOROLT							Torolt
			,TanuloErtekeles.C_TANULOID						TanuloId
			,TanariAtlagSuly.C_SULY							Suly
			,Felhasznalo.C_NYOMTATASINEV					ErtekeloNyomtatasiNev
			,CASE
				WHEN TanuloErtekeles.C_ERTEKELOID = @pTanarId
					THEN ''T''
					ELSE ''F''
			END												Modosithato
		FROM 
			T_TANULOERTEKELES_OSSZES AS TanuloErtekeles 
		
		INNER JOIN 
			T_OSZTALYCSOPORT Osztaly ON
					Osztaly.ID								= TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID
				AND	Osztaly.TOROLT							= ''F''
				AND Osztaly.C_INTEZMENYID					= @pIntezmenyId
				AND Osztaly.C_TANEVID						= @pTanevId
				AND Osztaly.C_EVFOLYAMTIPUSA				= @evfolyamTipusId
		INNER JOIN 
			T_FELHASZNALO_OSSZES AS Felhasznalo ON
					Felhasznalo.TOROLT						= ''F''
				AND Felhasznalo.C_INTEZMENYID				= @pIntezmenyId
				AND Felhasznalo.C_TANEVID					= @pTanevId
				AND Felhasznalo.ID							= TanuloErtekeles.C_ERTEKELOID
		LEFT JOIN 
			T_TANARIATLAGSULY_OSSZES AS TanariAtlagSuly ON
					TanariAtlagSuly.TOROLT					= ''F''
				AND TanariAtlagSuly.C_INTEZMENYID			= @pIntezmenyId
				AND TanariAtlagSuly.C_TANEVID				= @pTanevId
				AND TanuloErtekeles.C_ISMAGATARTASSZORGALOM = ''F''
				AND	TanariAtlagSuly.C_ERTEKELESMODID		= TanuloErtekeles.C_ERTEKELESMODID
		WHERE	
					--Ha a @pShowToroltElemek változó True, akkor a törölt elemeket is visszaadjuk!
					TanuloErtekeles.TOROLT					= IIF(@pShowToroltElemek = 1, TanuloErtekeles.TOROLT, ''F'')
				AND TanuloErtekeles.C_INTEZMENYID			= @pIntezmenyId
				AND TanuloErtekeles.C_TANEVID				= @pTanevId
				AND TanuloErtekeles.C_TANULOID				= @pTanuloId
	' + 
	CASE
		WHEN @pErtekelesMegjelenesFajtaId = @pErtekelesMegjelenesFajtaEnumTantargyId
		THEN N' AND (TanuloErtekeles.C_ISMAGATARTASSZORGALOM = ''F'' AND TanuloErtekeles.C_TANTARGYID = @pTantargyId)' 
		WHEN @pErtekelesMegjelenesFajtaId = @pErtekelesMegjelenesFajtaEnumMagatartasSzorgalomId
		THEN N' AND (TanuloErtekeles.C_ISMAGATARTASSZORGALOM = ''T'' AND TanuloErtekeles.C_TANTARGYID IS NULL)'
		ELSE N' AND ((TanuloErtekeles.C_ISMAGATARTASSZORGALOM = ''F''AND TanuloErtekeles.C_TANTARGYID = @pTantargyId AND @pTantargyId IS NOT NULL) OR 
					(TanuloErtekeles.C_ISMAGATARTASSZORGALOM = ''T'' AND TanuloErtekeles.C_TANTARGYID IS NULL AND @pTantargyId IS NULL))'
	END
	+ ' ORDER BY
			 Datum DESC
			,RogzitesDatum DESC'

	EXEC sp_executesql @sql, N'
		 @pIntezmenyId		INT
		,@pTanevId			INT
		,@pTanuloId			INT
		,@pTantargyId		INT = NULL
		,@pShowToroltElemek	BIT
		,@pTanarId			INT
		,@evfolyamTipusId	INT'
		,@pIntezmenyId		= @pIntezmenyId
		,@pTanevId			= @pTanevId
		,@pTanuloId			= @pTanuloId
		,@pTantargyId		= @pTantargyId
		,@pShowToroltElemek = @pShowToroltElemek
		,@pTanarId			= @pTanarId
		,@evfolyamTipusId	= @evfolyamTipusId

END


GO

