﻿DROP PROCEDURE IF EXISTS sp_GetTanuloiAdatlapAdatok
GO

CREATE PROCEDURE [dbo].[sp_GetTanuloiAdatlapAdatok]
	@osztCsopID INT,
	@TanevId	INT
AS
BEGIN
  SET NOCOUNT ON;

	CREATE TABLE #JogviszonyVege (TanuloId int,Datum date)
	INSERT INTO #JogviszonyVege
	SELECT
		 TanuloId
		,MAX(C_KILEPESDATUM)
	FROM  fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztCsopID, 'T') Tanulok
		INNER JOIN T_TANULOCSOPORT_OSSZES TanuloCsoport ON TanuloCsoport.C_TANULOID = Tanulok.TanuloId AND TanuloCsoport.TOROLT = 'F' AND TanuloCsoport.C_TANEVID = @TanevId
		INNER JOIN T_OSZTALY_OSSZES Osztaly ON Osztaly.ID = TanuloCsoport.C_OSZTALYCSOPORTID AND Osztaly.TOROLT = 'F' AND C_ALTANEVID = @TanevId
	GROUP BY TanuloId

	DECLARE @DefaultFeladatKategoriaId int =  (SELECT C_FELADATKATEGORIAID FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztCsopID)
	--Fejléc
	SELECT
		T_INTEZMENYADATOK_OSSZES.C_NEV				IntezmenyNeve,
		T_INTEZMENYADATOK_OSSZES.C_VAROS			IntezmenyVaros,
		dbo.fnGetDokumentumIntezmenyCime(@tanevId)	IntezmenyCime,
		T_INTEZMENYADATOK_OSSZES.C_OMKOD			OMKod,
		T_INTEZMENYADATOK_OSSZES.C_TELEFONSZAM		TELEFON,
		T_INTEZMENYADATOK_OSSZES.C_EMAILCIM			EMAILCIM,
		T_TANEV_OSSZES.C_NEV						TANEV,
		o.C_OSZTALYFONOKID PartnerID,
		f.C_NYOMTATASINEV OSZTALYFONOK,
		ocs.C_NEV OSZTALYNEV
    ,@osztCsopID  OsztalyId
	FROM T_INTEZMENYADATOK_OSSZES
		INNER JOIN T_TANEV_OSSZES on T_TANEV_OSSZES.ID = T_INTEZMENYADATOK_OSSZES.C_TANEVID and	T_TANEV_OSSZES.TOROLT = 'F'
    INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = @osztCsopID AND ocs.TOROLT = 'F' AND ocs.C_FELADATKATEGORIAID = @DefaultFeladatKategoriaId
    LEFT JOIN T_OSZTALY_OSSZES o ON o.ID = ocs.ID AND o.TOROLT = 'F'
    LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = o.C_OSZTALYFONOKID AND f.TOROLT = 'F'
	WHERE
		T_INTEZMENYADATOK_OSSZES.TOROLT = 'F'
		AND T_INTEZMENYADATOK_OSSZES.C_TANEVID = @TanevId

	CREATE TABLE #EmailCimTableTemp (FelhasznaloId INT, EmailCim NVARCHAR(MAX))
	INSERT INTO #EmailCimTableTemp
	SELECT
		TanuloId
		,C_EMAILCIM
	FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztCsopID, 'T') tanulo
		INNER JOIN T_EMAIL_OSSZES email ON email.C_FELHASZNALOID = TanuloId
	WHERE
		email.TOROLT = 'F'
		AND email.C_TANEVID = @TanevId
		AND LEN(C_EMAILCIM) > 0

	CREATE TABLE #EmailCimTable (FelhasznaloId INT, EmailCim NVARCHAR(MAX))
	INSERT INTO #EmailCimTable
	SELECT DISTINCT
		FelhasznaloId
		,STUFF((
			SELECT DISTINCT CAST(Btemp.EmailCim AS NVARCHAR(MAX))  + CHAR(13) + CHAR(10)
			FROM #EmailCimTableTemp btemp
			WHERE
				temp.FelhasznaloId = btemp.FelhasznaloId
			FOR XML PATH(''), TYPE)
		.value('.','NVARCHAR(MAX)'),1,0,'') Email
	FROM #EmailCimTableTemp temp

	CREATE TABLE #TelefonszamTableTemp (FelhasznaloId INT, Telefonszam NVARCHAR(MAX))
	INSERT INTO #TelefonszamTableTemp
	SELECT
		TanuloId
		,C_TELEFONSZAM
	FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztCsopID, 'T') tanulo
		INNER JOIN T_TELEFON_OSSZES telefon ON telefon.C_FELHASZNALOID = TanuloId
	WHERE
		telefon.TOROLT = 'F'
		AND telefon.C_TANEVID = @TanevId
		AND LEN(C_TELEFONSZAM) > 0

	CREATE TABLE #TelefonszamTable  (FelhasznaloId INT, Telefonszam NVARCHAR(MAX))
	INSERT INTO #TelefonszamTable
	SELECT DISTINCT
		FelhasznaloId
		,STUFF((
			SELECT DISTINCT CAST(Btemp.Telefonszam AS NVARCHAR(MAX)) + CHAR(13) + CHAR(10)
			FROM #TelefonszamTableTemp btemp
			WHERE
				temp.FelhasznaloId = btemp.FelhasznaloId
			FOR XML PATH(''), TYPE)
		.value('.','NVARCHAR(MAX)'),1,0,'') Telefonszam
	FROM #TelefonszamTableTemp temp

	CREATE TABLE #TanuloCimTable (FelhasznaloId INT, Cim NVARCHAR(MAX), Cimtipusa INT)
	INSERT INTO #TanuloCimTable
	SELECT DISTINCT
		TanuloId
		,STUFF((
			SELECT CAST(Btemp.Cim AS NVARCHAR(MAX))  + CHAR(13) + CHAR(10)
			FROM fnGetDokumentumTanuloOrGondviseloCim(0, @tanevId, @osztCsopID) btemp
			WHERE
				temp.TanuloId = btemp.TanuloId
			AND temp.CimTipusa = btemp.CimTipusa
			FOR XML PATH(''), TYPE)
		.value('.','NVARCHAR(MAX)'),1,0,'') Cim
		,temp.CimTipusa
	FROM fnGetDokumentumTanuloOrGondviseloCim(0, @tanevId, @osztCsopID) temp

	CREATE TABLE #GondviselokTableTemp  (FelhasznaloId INT, Gondviselo NVARCHAR(MAX))
	INSERT INTO #GondviselokTableTemp
	SELECT
		Gondviselo.TanuloId													TanuloId
		,Gondviselo.GondviseloNev + ISNULL('('+rokonsagiFoka.C_NAME+')', '')	Gondviselo
	FROM fnGetDokumentumGondviselok (@osztCsopID, @tanevId, 'F', 'T') Gondviselo
		LEFT JOIN T_DICTIONARYITEMBASE_OSSZES rokonsagiFoka ON Gondviselo.RokonsagifokId = rokonsagiFoka.ID AND rokonsagiFoka.C_TANEVID = @TanevId

	CREATE TABLE #GondviselokTable (FelhasznaloId INT, Gondviselo NVARCHAR(MAX))
	INSERT INTO #GondviselokTable
	SELECT DISTINCT
		FelhasznaloId
		,STUFF((
			SELECT ', ' + btemp.Gondviselo
			FROM #GondviselokTableTemp btemp
			WHERE
				temp.FelhasznaloId = btemp.FelhasznaloId
			FOR XML PATH(''), TYPE)
		.value('.','NVARCHAR(MAX)'),1,2,'') Gondviselo
	FROM #GondviselokTableTemp temp


	--Tanulók Adatai
	SELECT DISTINCT
		tta.C_BEIRASINAPLOSORSZAM,
		tanulok.NaploSorszam		NaploSorszam,
		tanulok.TorzslapSzam		TorzslapSzam,
		T_TANEV_OSSZES.C_NEV TANEV,
		T_OSZTALYCSOPORT_OSSZES.C_NEV OSZTALYNEV,
		T_OSZTALYCSOPORT_OSSZES.C_KEPZESIFORMA Kepzesiforma,
		T_FELHASZNALO_OSSZES.C_NYOMTATASINEV NEV,
		gondviselo.Gondviselo GONDVISELO,
		T_FELHASZNALO_OSSZES.C_SZULETESINEV SZULETESINEV,
		T_FELHASZNALO_OSSZES.C_ANYJANEVE ANYJANEVE,
		T_FELHASZNALO_OSSZES.C_OKTATASIAZONOSITO,
		T_FELHASZNALO_OSSZES.C_SZULETESIHELY,
		T_FELHASZNALO_OSSZES.C_SZULETESIORSZAG Szuletesiorszag,
		FORMAT(T_FELHASZNALO_OSSZES.C_SZULETESIDATUM, 'yyyy.MM.dd.') C_SZULETESIDATUM,
		T_FELHASZNALO_OSSZES.C_ALLAMPOLGARSAGA Allampolgarsag,
		T_FELHASZNALO_OSSZES.C_ANYANYELVE Anyanyelv,
		tta.C_NYILVANTARTASKEZDETE,
		tta.C_TANKOTELEZETT Tankotelezett,
		tta.C_TANKOTELEZETTSEGVEGE,
		tta.C_JOGVISZONYVARHATOBEFEJEZESE,
		T_TANULO_OSSZES.C_DIAKIGAZOLVANYSZAM,
		T_TANULO_OSSZES.C_DIAKIGAZOLVANYKELTE,
		T_TANULO_OSSZES.C_BANKSZAMLASZAM,
		AllandoLakcim.Cim,
		TartozkodasiHely.CIM TartozkodasiHely,
		telefon.Telefonszam C_TELEFONSZAM,
		email.EmailCim C_EMAILCIM,
		tta.C_BEJARO Bejaro,
		tta.C_SZAKMAIGYAKORLATON Szakmaigyak,
		tta.C_VENDEG Vendeg,
		tta.C_JOGVISZONYATSZUNETELTETO Jogviszonyszunetelteto,
		tta.C_MAGANTANULO Magantanulo,
		maganTanuloOk.C_NAME as C_MAGANTANULOSAGANAKOKA,
		tta.C_MAGANTANULOSAGKEZDETE,
		T_TANULO_OSSZES.C_SZAKKEPESITESSZAMA,
		T_TANULO_OSSZES.C_TANULOIJOGVISZONYOSELTARTOTT,
		T_TANULO_OSSZES.C_TOBBGYERMEKIGAZOLASSZAMA,
		tta.C_EVISMETLO Evismetlo,
		T_TANULO_OSSZES.C_SZOCIALISTAMOGATAS Szoctam,
		T_TANULO_OSSZES.C_HATRANYOSHELYZETU,
		T_TANULO_OSSZES.C_VESZELYEZTETETT Veszelyeztetett,
		T_TANULO_OSSZES.C_HALMOZOTTANFOGYATEKOS Halmfogyatekos,
		T_TANULO_OSSZES.C_ETKEZESIKEDVEZMENY,
		tta.C_TERITESIDIJATFIZETO Teriteses,
		tta.C_TANDIJATFIZETO Tandijas,
		T_TANULO_OSSZES.C_INGYENESTANKONVYELLATASA,
		tta.C_TANULOSZERZODESES Tanszerzodeses,
		tta.C_POLGARISZERZODESES Polgszerzodeses,
		T_TANULO_OSSZES.C_RENDSZERESGYERMEKVEDELMIKEDV,
		T_TANULO_OSSZES.C_ALLAMIGONDOZOTT Allamigond,
		T_TANULO_OSSZES.C_KOLLEGIUMIELLATASOS Kollegiumi,
		T_TANULO_OSSZES.C_TARTOSGYOGYKEZELESSZAMA,
		T_TANULO_OSSZES.C_SAJATOSNEVELESU Sajatosnevelesu,
		T_TANULO_OSSZES.C_SNILETSZAMSULY,
		T_TANULO_OSSZES.C_SNIKIALLITOINTEZMENY,
		FORMAT(T_TANULO_OSSZES.C_SNIOKMANYERVENYESSEGKEZDETE, 'yyyy.MM.dd.') C_SNIOKMANYERVENYESSEGKEZDETE,
		T_TANULO_OSSZES.C_BTMPROBLEMAS Btmproblemas,
		T_TANULO_OSSZES.C_BTMLETSZAMSULY,
		T_TANULO_OSSZES.C_BTMHATAROZATOKMANYSZAM,
		FORMAT(T_TANULO_OSSZES.C_BTMOKMANYERVENYESSEGKEZDETE, 'yyyy.MM.dd.') C_BTMOKMANYERVENYESSEGKEZDETE,
		T_TANULO_OSSZES.C_BTMKIALLITOINTEZMENY,
		T_TANULO_OSSZES.C_ELSOINTEZMENYOMKOD,
		T_FELHASZNALO_OSSZES.C_IGAZOLVANYSZAM,
		igazolvanyTipusa.C_NAME AS IgazolvanyTipusa
		,T_TANULO_OSSZES.ID AS TanuloId
		,@osztCsopID  AS OsztalyId
		,JogviszonyVege.Datum JogviszonyVege
	FROM T_FELHASZNALO_OSSZES
		INNER JOIN fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztCsopID, 'T') tanulok ON tanulok.TanuloId = T_FELHASZNALO_OSSZES.Id
		INNER JOIN T_TANULO_OSSZES on T_TANULO_OSSZES.ID = T_FELHASZNALO_OSSZES.ID
		INNER JOIN T_TANULOCSOPORT_OSSZES on T_TANULOCSOPORT_OSSZES.C_TANULOID = T_FELHASZNALO_OSSZES.ID
		LEFT JOIN T_OSZTALYCSOPORT_OSSZES on T_OSZTALYCSOPORT_OSSZES.ID = T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID AND T_OSZTALYCSOPORT_OSSZES.C_FELADATKATEGORIAID = @DefaultFeladatKategoriaId
        INNER JOIN T_OSZTALY_OSSZES on T_OSZTALY_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.ID
		LEFT JOIN fnGetOsztalyCsoportTanuloinakTanugyiAdatai (@osztCsopID,default) tta ON tta.TanuloId=T_FELHASZNALO_OSSZES.ID
		LEFT JOIN T_TANEV_OSSZES on T_TANEV_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.C_TANEVID
		LEFT JOIN #TelefonszamTable telefon on telefon.FelhasznaloId = T_FELHASZNALO_OSSZES.ID
		LEFT JOIN #EmailCimTable email on email.FelhasznaloId = T_FELHASZNALO_OSSZES.ID
		LEFT JOIN #GondviselokTable gondviselo on gondviselo.FelhasznaloId = T_FELHASZNALO_OSSZES.ID
		LEFT JOIN T_DICTIONARYITEMBASE_OSSZES igazolvanyTipusa ON T_FELHASZNALO_OSSZES.C_IGAZOLVANYTIPUSA = igazolvanyTipusa.ID AND igazolvanyTipusa.C_TANEVID = @TanevId
		LEFT JOIN T_DICTIONARYITEMBASE_OSSZES maganTanuloOk ON tta.C_MAGANTANULOSAGANAKOKAID = maganTanuloOk.ID AND maganTanuloOk.C_TANEVID = @TanevId AND maganTanuloOk.TOROLT='F'
		LEFT JOIN #TanuloCimTable AllandoLakcim ON AllandoLakcim.FelhasznaloId = T_FELHASZNALO_OSSZES.ID AND AllandoLakcim.Cimtipusa = 907
		LEFT JOIN #TanuloCimTable TartozkodasiHely ON TartozkodasiHely.FelhasznaloId = T_FELHASZNALO_OSSZES.ID AND TartozkodasiHely.Cimtipusa = 909
		INNER JOIN #JogviszonyVege JogviszonyVege ON JogviszonyVege.TanuloId = tanulok.TanuloId
	WHERE
		T_FELHASZNALO_OSSZES.TOROLT = 'F'
		AND T_TANEV_OSSZES.TOROLT = 'F'
		AND T_TANULOCSOPORT_OSSZES.TOROLT = 'F'
		AND T_OSZTALYCSOPORT_OSSZES.TOROLT = 'F'
	ORDER BY T_FELHASZNALO_OSSZES.C_NYOMTATASINEV

  SELECT
    o.ID AS OsztalyId
    ,ocs.C_EVFOLYAMTIPUSA AS EvfolyamTipusa
    ,ocs.C_FELADATELLATASIHELYID AS FeladatEllatasiHelyId
    ,ocs.C_KEPZESIFORMA AS KepzesiForma
    ,o.C_OSZTALYFONOKID AS OsztalyfonokId
    ,o.C_TANTERVID AS TantervId
    ,o.C_SZAKMACSOPORT AS SzakmaCsoport
    ,o.C_AGAZAT AS Agazat
    ,o.C_SZAKKEPESITES AS Szakkepesites
	,o.C_RESZSZAKKEPESITES AS Reszszakkepesites
	,ocs.C_KERESZTFELEVES	OJCSJKeresztfeleves
	,ocs.C_VEGZOSEVFOLYAM	CSJVegzosEvfolyamu
	,o.C_TECHNIKAIOSZTALY	OJTechnikaiOsztaly
	,o.C_NEMZETISEGI		OJNemzetisegi
	,o.C_KETTANNYELVU		OJKettannyelvu
	,o.C_NYELVIELOKESZITO	OJNyelviElokeszito
	,ocs.C_ISGYOGYPEDAGOGIAILOGOPEDIAI			OJIsGyogypedagogiaiLogopediai
	,o.C_SPORT				OJSportOsztaly
	,o.C_AJPROGRAM			OJAranyJanosProgram
  FROM T_OSZTALY_OSSZES AS o
    INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = o.ID AND ocs.TOROLT = 'F'
  WHERE o.ID = @osztCsopID
END

GO