﻿-- =============================================
-- 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 uspGetTanuloErtekelesDetailDataSet
GO

CREATE PROCEDURE uspGetTanuloErtekelesDetailDataSet
	 @pIntezmenyId											INT
	,@pTanevId												INT
	,@pTanuloId												INT
	,@pTantargyId											INT = NULL
	,@pShowToroltElemek										BIT
	,@pTanarId												INT
	,@pErtekelesMegjelenesFajtaEnumTantargyId				INT
	,@pErtekelesMegjelenesFajtaEnumMagatartasSzorgalomId	INT
	,@pErtekelesMegjelenesFajtaId							INT
	,@pDatum												DATE = NULL
    ,@pAmiKategoriaId										INT
	,@pFeladatKategoriaId									INT = NULL
	,@pKiiratkozottNeJelenjenMeg                            BIT = 1
AS
BEGIN
	SET NOCOUNT ON;

	IF @pDatum IS NULL
		SET @pDatum = CONVERT(DATE, GETDATE())

	DECLARE @evfolyamTipusId INT = (SELECT TOP 1 EvfolyamTipusId
                                    FROM dbo.fnGetTanuloOsztaly(@pTanuloId, @pDatum, @pFeladatKategoriaId, @pKiiratkozottNeJelenjenMeg)
                                    ORDER BY BelepesDatuma DESC)

	DECLARE @sql NVARCHAR(MAX)

	SET @sql = N'
			SELECT DISTINCT
				 TanuloErtekeles.ID								ID
				,TanuloErtekeles.C_DATUM						Datum
				,TanuloErtekeles.C_ROGZITESDATUM				RogzitesDatum
				,TanuloErtekeles.C_TIPUSID						TipusId
				,TanuloErtekeles.C_ISERTESITESELKULDVE			IsErtesitesElkuldve
				,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
				,Tantargy.C_TARGYKATEGORIA						TantargyKategoriaId
				,CASE
					WHEN TanuloErtekeles.C_ERTEKELOID = @pTanarId
						THEN ''T''
						ELSE ''F''
				END												Modosithato
			FROM
				T_TANULOERTEKELES_OSSZES AS TanuloErtekeles'

	IF @pFeladatKategoriaId IS NOT NULL AND @pFeladatKategoriaId <> @pAmiKategoriaId
	BEGIN
        SET @sql += N'
			INNER JOIN
				T_OSZTALYCSOPORT_OSSZES Osztaly ON
					    Osztaly.ID								= TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID
					AND	Osztaly.TOROLT							= IIF(@pShowToroltElemek = 1, TanuloErtekeles.TOROLT, ''F'')
					AND Osztaly.C_INTEZMENYID					= @pIntezmenyId
					AND Osztaly.C_TANEVID						= @pTanevId
	  				AND Osztaly.C_EVFOLYAMTIPUSA				= @evfolyamTipusId
                    AND Osztaly.C_FELADATKATEGORIAID            = @pFeladatKategoriaId
            INNER JOIN
				T_TANULOCSOPORT_OSSZES TanuloCsoport ON
                        TanuloCsoport.C_OSZTALYCSOPORTID        = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID
					AND TanuloCsoport.C_TANULOID				= @pTanuloId
                    AND	TanuloCsoport.C_INTEZMENYID			    = @pIntezmenyId
				    AND TanuloCsoport.C_TANEVID				    = @pTanevId
					AND	TanuloCsoport.C_BELEPESDATUM           <= GETDATE()
					AND TanuloCsoport.TOROLT                    = IIF(@pShowToroltElemek = 1, TanuloErtekeles.TOROLT, ''F'')'

        IF @pKiiratkozottNeJelenjenMeg = 1
	    BEGIN
	      	SET @sql += N' AND (TanuloCsoport.C_KILEPESDATUM IS NULL OR TanuloCsoport.C_KILEPESDATUM >= GETDATE())'
	    END
    END

    SET @sql += N'
            LEFT JOIN
				T_TANTARGY_OSSZES Tantargy ON
			    		Tantargy.C_INTEZMENYID			        = @pIntezmenyId
			    	AND Tantargy.C_TANEVID				        = @pTanevId
			    	AND Tantargy.TOROLT					        = IIF(@pShowToroltElemek = 1, TanuloErtekeles.TOROLT, ''F'')
			    	AND	Tantargy.ID						        = TanuloErtekeles.C_TANTARGYID
	  		INNER JOIN
				T_FELHASZNALO_OSSZES AS Felhasznalo ON
						Felhasznalo.TOROLT						= IIF(@pShowToroltElemek = 1, TanuloErtekeles.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					= IIF(@pShowToroltElemek = 1, TanuloErtekeles.TOROLT, ''F'')
					AND TanariAtlagSuly.C_INTEZMENYID			= @pIntezmenyId
					AND TanariAtlagSuly.C_TANEVID				= @pTanevId

					AND	TanariAtlagSuly.C_ERTEKELESMODID		= TanuloErtekeles.C_ERTEKELESMODID
			        AND TanuloErtekeles.C_ERTEKELESOSZTALYZATID IS NOT NULL
			WHERE
						TanuloErtekeles.TOROLT					= IIF(@pShowToroltElemek = 1, TanuloErtekeles.TOROLT, ''F'')
					AND TanuloErtekeles.C_INTEZMENYID			= @pIntezmenyId
					AND TanuloErtekeles.C_TANEVID				= @pTanevId
					AND TanuloErtekeles.C_TANULOID				= @pTanuloId'

    IF @pFeladatKategoriaId IS NOT NULL
    BEGIN
        IF @pFeladatKategoriaId = @pAmiKategoriaId
        BEGIN
            SET @sql += N' AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NULL'
        END

        ELSE
        BEGIN
            SET @sql += N' AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NOT NULL'
        END
    END

    SET @sql +=
    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

	SET @sql += N'
            ORDER BY
			     Datum DESC
			    ,RogzitesDatum DESC'


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

GO
