﻿DROP PROCEDURE IF EXISTS uspGetDokumentumTantargyakErtekeleshez
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE uspGetDokumentumTantargyakErtekeleshez 
	@intezmenyId int, 
	@tanevId int,
  @osztalyCsoportId int
AS
BEGIN
	SET NOCOUNT ON;

    DECLARE @evfolyamTipusId INT = (SELECT C_EVFOLYAMTIPUSA FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyCsoportId AND TOROLT = 'F')

	CREATE TABLE #KapcsopodoTantargyak(
  		 ID					INT
		,C_FOTARGYID		INT
		,C_NEV				NVARCHAR(255)
    ,C_NEVNYOMTATVANYBAN NVARCHAR(255)
		,C_TARGYKATEGORIA 	INT
		,C_INTEZMENYID	 	INT
		,C_TANEVID 			INT
	)
	INSERT INTO
		#KapcsopodoTantargyak
	SELECT
		 kt.ID
		,kt.C_FOTARGYID
		,kt.C_NEV
    ,t.C_NEVNYOMTATVANYBAN
		,kt.C_TARGYKATEGORIA
		,kt.C_INTEZMENYID
		,kt.C_TANEVID
	FROM
		dbo.fnGetKapcsolodoTantargyak(@intezmenyId, @tanevId, NULL) AS kt
    INNER JOIN T_TANTARGY_OSSZES AS t ON t.ID = kt.ID;

  -- Összeszedjük minden tanuló-tanulócsoporthoz a tárgyakat
	WITH tantargy_CTE (C_TANTARGYID, C_FOTARGYID, C_TANULOID, C_TANULOCSOPORTID, C_INTEZMENYID, C_TANEVID)
	AS (
  -- TTF-es tárgyak
	SELECT DISTINCT
		Foglalkozas.C_TANTARGYID,
		Tantargy.C_FOTARGYID,
        f.ID as c_tanuloid,
        tcsOsztaly.ID as c_tanulocsoportid,
        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
        INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON
                tcs.C_OSZTALYCSOPORTID = OsztalyCsoport.ID
                    AND tcs.TOROLT = 'F'
        INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID AND f.TOROLT = 'F'
        INNER JOIN 
            T_TANULOCSOPORT_OSSZES tcsOsztaly ON
                tcsOsztaly.C_OSZTALYCSOPORTID = @osztalyCsoportId 
                    AND tcsOsztaly.C_TANULOID = f.ID
                    AND tcsOsztaly.TOROLT = 'F'
	WHERE
			Foglalkozas.C_INTEZMENYID		= @intezmenyId
		AND Foglalkozas.C_TANEVID			= @tanevId
		AND Foglalkozas.TOROLT				= 'F'

	UNION
  -- ttf-ben nem szereplő tárgyak
	SELECT DISTINCT
		OrarendiOra.C_TANTARGYID,
		Tantargy.C_FOTARGYID,
        f.ID as c_tanuloid,
        tcsOsztaly.ID as c_tanulocsoportid,
		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
        INNER JOIN 
            T_TANULOCSOPORT_OSSZES tcs ON
                tcs.C_OSZTALYCSOPORTID = OsztalyCsoport.ID
                AND (tcs.C_BELEPESDATUM < OrarendiOra.C_ORAERVENYESSEGVEGE AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= OrarendiOra.C_ORAERVENYESSEGKEZDETE))
                AND tcs.TOROLT = 'F'
        INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID AND f.TOROLT = 'F'
        INNER JOIN 
            T_TANULOCSOPORT_OSSZES tcsOsztaly ON
                tcsOsztaly.C_OSZTALYCSOPORTID = @osztalyCsoportId
                AND (tcsOsztaly.C_BELEPESDATUM < OrarendiOra.C_ORAERVENYESSEGVEGE AND (tcsOsztaly.C_KILEPESDATUM IS NULL OR tcsOsztaly.C_KILEPESDATUM >= OrarendiOra.C_ORAERVENYESSEGKEZDETE))
                AND tcsOsztaly.C_TANULOID = f.ID
                AND tcsOsztaly.TOROLT = 'F'
	WHERE
			OrarendiOra.C_INTEZMENYID		= @intezmenyId
		AND OrarendiOra.C_TANEVID			= @tanevId
		AND OrarendiOra.TOROLT				= 'F'

	UNION
    -- Értékelést kapott tárgyak
    SELECT DISTINCT
		TanuloErtekeles.TantargyId,
		TanuloErtekeles.FotargyId,
        TanuloErtekeles.TanuloId,
        TanuloErtekeles.TanuloCsoportId as C_TANULOCSOPORTID,
		@intezmenyId,
		@tanevId
	FROM
        fnGetDokumentumErtekelesekOsztalyonkent(@tanevId, @osztalyCsoportId, DEFAULT, DEFAULT, 1, DEFAULT) AS TanuloErtekeles

--			UNION ALL
--      -- AMI-s értékelés
---- összevonható-e az alap értékeléssel
--        SELECT DISTINCT
--				TanuloErtekeles.C_TANTARGYID,
--				Tantargy.C_FOTARGYID,
--        TanuloErtekeles.C_TANULOID,
--        tcs.ID as C_TANULOCSOPORTID,
--				Tantargy.C_INTEZMENYID,
--				Tantargy.C_TANEVID
--			FROM
---- helyett az fnGetDokumentumErtekelesekOsztalyonkent
--				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
--      INNER JOIN 
--        T_TANULOCSOPORT_OSSZES tcs ON
--          tcs.C_OSZTALYCSOPORTID = Osztaly.ID
--          AND tcs.C_TANULOID = TanuloErtekeles.C_TANULOID
---- and ertekels-datum between tcs.belépés and tcs. kilépés
--			WHERE
--					TanuloErtekeles.C_INTEZMENYID	= @intezmenyId
--				AND TanuloErtekeles.C_TANEVID		= @tanevId
--				AND TanuloErtekeles.TOROLT			= 'F'
--				AND TanuloErtekeles.C_TANTARGYID IS NOT NULL
--				AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NULL
	)
SELECT
	NULL,
	NULL,
	'Magatartás',
    '',
	0,
    f.ID,
    tcs.ID
	,0
    ,''
	,0
	,0
	,''
	,@intezmenyId
	,@tanevId
FROM T_TANULOCSOPORT_OSSZES tcs 
    LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID AND f.TOROLT = 'F'
WHERE tcs.C_OSZTALYCSOPORTID = @osztalyCsoportId AND tcs.TOROLT = 'F'

UNION

SELECT
	NULL,
	NULL,
	'Szorgalom',
    '',
	0,
    f.ID,
    tcs.ID
	,1
    ,''
	,0
	,0
	,''
	,@intezmenyId
	,@tanevId
FROM T_TANULOCSOPORT_OSSZES tcs 
    LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID AND f.TOROLT = 'F'
WHERE tcs.C_OSZTALYCSOPORTID = @osztalyCsoportId AND tcs.TOROLT = 'F'

UNION

SELECT DISTINCT
	KapcsopodoTantargy.ID,
	KapcsopodoTantargy.C_FOTARGYID,
	KapcsopodoTantargy.C_NEV,
    KapcsopodoTantargy.C_NEVNYOMTATVANYBAN,
	KapcsopodoTantargy.C_TARGYKATEGORIA,
    tantargy_CTE.c_tanuloId,
    tantargy_CTE.c_tanulocsoportid
	,CASE WHEN KapcsopodoTantargy.C_FOTARGYID IS NULL THEN ISNULL(TargyKategoriaDictionary.C_ORDER, 10000) ELSE ISNULL(FotargyKategoriaDictionary.C_ORDER, 10000) END
	,ISNULL(ISNULL(Fotargy.C_NEVNYOMTATVANYBAN, Fotargy.C_NEV), ISNULL(KapcsopodoTantargy.C_NEVNYOMTATVANYBAN, KapcsopodoTantargy.C_NEV)) AS RENDEZ2
	,ISNULL(KapcsopodoTantargy.C_FOTARGYID, KapcsopodoTantargy.ID) AS RENDEZ3
	,KapcsopodoTantargy.C_FOTARGYID AS RENDEZ4
	,ISNULL(KapcsopodoTantargy.C_NEVNYOMTATVANYBAN, KapcsopodoTantargy.C_NEV) AS RENDEZ5
	,KapcsopodoTantargy.C_INTEZMENYID
	,KapcsopodoTantargy.C_TANEVID
FROM tantargy_CTE
	INNER JOIN
		#KapcsopodoTantargyak KapcsopodoTantargy ON
				tantargy_CTE.C_TANTARGYID = KapcsopodoTantargy.ID
			 OR tantargy_CTE.C_FOTARGYID = KapcsopodoTantargy.ID
	LEFT JOIN
		T_TANTARGY_OSSZES Fotargy ON
				Fotargy.C_INTEZMENYID					= tantargy_CTE.C_INTEZMENYID
			AND Fotargy.C_TANEVID						= tantargy_CTE.C_TANEVID
			AND Fotargy.TOROLT							= 'F'
			AND Fotargy.ID								= tantargy_CTE.C_FOTARGYID 
	LEFT JOIN 
        T_DICTIONARYITEMBASE_OSSZES TargyKategoriaDictionary ON
                TargyKategoriaDictionary.Id = KapcsopodoTantargy.C_TARGYKATEGORIA 
			AND TargyKategoriaDictionary.TOROLT = 'F' 
			AND TargyKategoriaDictionary.C_TANEVID = @tanevId
	LEFT JOIN 
        T_DICTIONARYITEMBASE_OSSZES FotargyKategoriaDictionary ON 
                FotargyKategoriaDictionary.ID = Fotargy.C_TARGYKATEGORIA 
		    AND FotargyKategoriaDictionary.TOROLT = 'F' 
		    AND FotargyKategoriaDictionary.C_TANEVID = Fotargy.C_TANEVID
END
GO
