﻿-- =============================================
-- Description:	<Előszedjük a tanuló étrékeléseket tanuló alapján>
-- =============================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

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

CREATE PROCEDURE [dbo].[uspGetTanuloErtekelesDataSetByTanulo]
	 @pIntezmenyId		INT
	,@pTanevId			INT
	,@pTanarId			INT
	,@pTanuloId			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))
		
	DECLARE @OsztalyCsoportIdList TABLE(
  		 ID	INT PRIMARY KEY
	)

	INSERT INTO 
		@OsztalyCsoportIdList (ID)
  	SELECT 
		OsztalyCsoport.ID
	FROM 
		T_TANULOCSOPORT_OSSZES TanuloCsoport
	INNER JOIN
		T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON
				OsztalyCsoport.C_INTEZMENYID	= TanuloCsoport.C_INTEZMENYID
			AND OsztalyCsoport.C_TANEVID		= TanuloCsoport.C_TANEVID
			AND OsztalyCsoport.TOROLT			= 'F'
			AND OsztalyCsoport.ID				= TanuloCsoport.C_OSZTALYCSOPORTID
	WHERE 
			TanuloCsoport.C_INTEZMENYID			= @pIntezmenyId
		AND TanuloCsoport.C_TANEVID				= @pTanevId
		AND TanuloCsoport.TOROLT				= 'F'
		AND TanuloCsoport.C_TANULOID			= @pTanuloId
		AND	TanuloCsoport.C_BELEPESDATUM <= GETDATE()
		AND (TanuloCsoport.C_KILEPESDATUM IS NULL OR TanuloCsoport.C_KILEPESDATUM >= GETDATE())

	DECLARE @Tantargyak TABLE(
  		 ID					INT
		,C_FOTARGYID		INT
		,C_NEV				NVARCHAR(255)
		,C_TARGYKATEGORIA 	INT
		,C_INTEZMENYID	 	INT
		,C_TANEVID 			INT
	)

	--NOTE: A Magatartás/Szorgalom-mat beszúrjuk mint tantárgy
	INSERT INTO 
		@Tantargyak (ID, C_FOTARGYID, C_NEV, C_TARGYKATEGORIA, C_INTEZMENYID, C_TANEVID)
	SELECT DISTINCT
		NULL,
		NULL,
		'Magatartás/Szorgalom',
		0,
		@pIntezmenyId,
		@pTanevID;
			
	WITH tantargy_CTE (C_TANTARGYID, C_FOTARGYID, C_INTEZMENYID, C_TANEVID)  
	AS (  
		SELECT 
			Foglalkozas.C_TANTARGYID,
			Tantargy.C_FOTARGYID,
			Tantargy.C_INTEZMENYID,
			Tantargy.C_TANEVID
		FROM
			T_FOGLALKOZAS_OSSZES Foglalkozas
		INNER JOIN
			T_TANTARGY_OSSZES Tantargy ON
				Tantargy.C_INTEZMENYID			= Foglalkozas.C_INTEZMENYID
			AND Tantargy.C_TANEVID				= Foglalkozas.C_TANEVID
			AND Tantargy.TOROLT					= 'F'
			AND	Tantargy.ID						= Foglalkozas.C_TANTARGYID 
		INNER JOIN
			@OsztalyCsoportIdList OsztalyCsoport ON 
				OsztalyCsoport.ID = Foglalkozas.C_OSZTALYCSOPORTID
		WHERE 
				Foglalkozas.C_INTEZMENYID		= @pIntezmenyId
			AND Foglalkozas.C_TANEVID			= @pTanevId
			AND Foglalkozas.TOROLT				= 'F'

		UNION

		SELECT 
			OrarendiOra.C_TANTARGYID,
			Tantargy.C_FOTARGYID,
			Tantargy.C_INTEZMENYID,
			Tantargy.C_TANEVID
		FROM 
			T_ORARENDIORA_OSSZES OrarendiOra
		INNER JOIN
			T_TANTARGY_OSSZES Tantargy ON
				Tantargy.C_INTEZMENYID			= OrarendiOra.C_INTEZMENYID
			AND Tantargy.C_TANEVID				= OrarendiOra.C_TANEVID
			AND Tantargy.TOROLT					= 'F'
			AND	Tantargy.ID						= OrarendiOra.C_TANTARGYID			
		INNER JOIN
			@OsztalyCsoportIdList OsztalyCsoport ON 
				OsztalyCsoport.ID = OrarendiOra.C_OSZTALYCSOPORTID
		WHERE
				OrarendiOra.C_INTEZMENYID		= @pIntezmenyId
			AND OrarendiOra.C_TANEVID			= @pTanevId
			AND OrarendiOra.TOROLT				= 'F'

		UNION

		SELECT
			TanuloErtekeles.C_TANTARGYID,
			Tantargy.C_FOTARGYID,
			Tantargy.C_INTEZMENYID,
			Tantargy.C_TANEVID
		FROM 
			T_TANULOERTEKELES_OSSZES TanuloErtekeles
		INNER JOIN
			T_TANTARGY_OSSZES Tantargy ON 
				Tantargy.C_INTEZMENYID			= TanuloErtekeles.C_INTEZMENYID
			AND Tantargy.C_TANEVID				= TanuloErtekeles.C_TANEVID
			AND Tantargy.TOROLT					= 'F'
			AND	Tantargy.ID						= TanuloErtekeles.C_TANTARGYID 
		INNER JOIN 
			T_OSZTALYCSOPORT_OSSZES Osztaly ON
					Osztaly.C_INTEZMENYID		= TanuloErtekeles.C_INTEZMENYID
				AND Osztaly.C_TANEVID			= TanuloErtekeles.C_TANEVID
				AND	Osztaly.TOROLT				= 'F'
				AND	Osztaly.ID					= TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID
				AND Osztaly.C_EVFOLYAMTIPUSA	= @evfolyamTipusId
		WHERE 
				TanuloErtekeles.C_INTEZMENYID	= @pIntezmenyId
			AND TanuloErtekeles.C_TANEVID		= @pTanevId
			AND TanuloErtekeles.TOROLT			= 'F'
			AND	TanuloErtekeles.C_TANULOID		= @pTanuloId 
			AND TanuloErtekeles.C_TANTARGYID IS NOT NULL 
	)
  
	INSERT INTO 
		@Tantargyak (ID, C_FOTARGYID, C_NEV, C_TARGYKATEGORIA, C_INTEZMENYID, C_TANEVID)
	SELECT DISTINCT
		KapcsopodoTantargy.ID,
		KapcsopodoTantargy.C_FOTARGYID,
		KapcsopodoTantargy.C_NEV,
		KapcsopodoTantargy.C_TARGYKATEGORIA,
		KapcsopodoTantargy.C_INTEZMENYID,
		KapcsopodoTantargy.C_TANEVID
	FROM 
		tantargy_CTE
	INNER JOIN 
		fnGetKapcsolodoTantargyak(@pIntezmenyId, @pTanevId, NULL) KapcsopodoTantargy ON
				tantargy_CTE.C_TANTARGYID = KapcsopodoTantargy.ID 
			 OR tantargy_CTE.C_FOTARGYID = KapcsopodoTantargy.ID

	SELECT
		 TanuloErtekeles.C_TANULOID												TanuloId
		,Tantargy.ID															TantargyId

		,Tantargy.C_NEV															TantargyNev

		,TanuloErtekeles.ID														ID
		,TanuloErtekeles.C_DATUM												Datum
		,TanuloErtekeles.C_TIPUSID												TipusId
		,FelhasznaloErtekelo.C_NYOMTATASINEV									ErtekeloNyomtatasiNev
		,IIF(TanuloErtekeles.ID IS NULL,										--
				NULL,															--
				CASE															--
					WHEN TanuloErtekeles.C_ERTEKELOID = @pTanarId				--
						THEN 'T'												--
						ELSE 'F'												--
				END																--
		)																		Modosithato
		,IIF(TanuloErtekeles.C_ISMAGATARTASSZORGALOM IS NOT NULL,				--
			TanuloErtekeles.C_ISMAGATARTASSZORGALOM,							--
			IIF (Tantargy.ID IS NOT NULL, 'F',  'T')							--
		)																		IsMagatartasSzorgalom

		,TanuloErtekeles.C_ERTEKELESOSZTALYZATID								ErtekelesOsztalyzatId
		,TanariAtlagSuly.C_SULY													Suly
		,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
		
		,Tantargy.C_TARGYKATEGORIA												TantargyKategoriaId		
		,Fotargy.ID																FotargyId
		,Fotargy.C_NEV															FotargyNev
		,Fotargy.C_TARGYKATEGORIA												FotargyTantargyKategoriaId
	FROM 
		@Tantargyak Tantargy
	LEFT JOIN 
		T_TANULOERTEKELES_OSSZES TanuloErtekeles ON			
				TanuloErtekeles.C_INTEZMENYID			= Tantargy.C_INTEZMENYID
			AND TanuloErtekeles.C_TANEVID				= Tantargy.C_TANEVID
			AND TanuloErtekeles.TOROLT					= 'F'
			AND (TanuloErtekeles.C_TANTARGYID			= Tantargy.ID OR (TanuloErtekeles.C_TANTARGYID IS NULL AND Tantargy.ID IS NULL))
			AND TanuloErtekeles.C_TANULOID				= @pTanuloId
	LEFT JOIN 
		T_OSZTALYCSOPORT_OSSZES Osztaly ON
				Osztaly.C_INTEZMENYID					= Tantargy.C_INTEZMENYID
			AND Osztaly.C_TANEVID						= Tantargy.C_TANEVID
			AND Osztaly.TOROLT							= 'F'
			AND Osztaly.ID								= TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID
			AND	Osztaly.C_EVFOLYAMTIPUSA				= @evfolyamTipusId
	LEFT JOIN
		T_FELHASZNALO_OSSZES FelhasznaloErtekelo ON
				FelhasznaloErtekelo.C_INTEZMENYID		= Tantargy.C_INTEZMENYID
			AND FelhasznaloErtekelo.C_TANEVID			= Tantargy.C_TANEVID
			AND FelhasznaloErtekelo.TOROLT				= 'F'
			AND FelhasznaloErtekelo.ID					= TanuloErtekeles.C_ERTEKELOID
	LEFT JOIN
		T_TANARIATLAGSULY_OSSZES TanariAtlagSuly ON
				TanariAtlagSuly.C_INTEZMENYID			= Tantargy.C_INTEZMENYID
			AND TanariAtlagSuly.C_TANEVID				= Tantargy.C_TANEVID
			AND TanariAtlagSuly.TOROLT					= 'F'
			AND	TanariAtlagSuly.C_ERTEKELESMODID		= TanuloErtekeles.C_ERTEKELESMODID
			AND TanuloErtekeles.C_ISMAGATARTASSZORGALOM = 'F'
			AND TanuloErtekeles.C_ERTEKELESOSZTALYZATID IS NOT NULL
	LEFT JOIN 
		T_TANTARGY_OSSZES Fotargy ON 
				Fotargy.C_INTEZMENYID					= Tantargy.C_INTEZMENYID
			AND Fotargy.C_TANEVID						= Tantargy.C_TANEVID
			AND Fotargy.TOROLT							= 'F'
			AND Fotargy.ID								= Tantargy.C_FOTARGYID

END


GO

