﻿SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

DROP PROCEDURE IF EXISTS dbo.sp_GetCsoportNaplo
GO

CREATE PROCEDURE [dbo].[sp_GetCsoportNaplo]
	@tanevId				INT,
	@intezmenyid			INT,
	@csoportId				INT,
	@iskolaErdekuSzamit		BIT,
	@isGyakorlatiTargyak	BIT, 
	@isElmeletiTargyak		BIT

AS
BEGIN
  SET NOCOUNT ON;
  SET DATEFIRST 1; -- Sets the first day of the week to a number from 1 (Monday) through 7 (Sunday).

  DECLARE @isreszletesmulasztasok BIT = 0

  DECLARE @isGyakorlatVagyElmelet BIT  /*0 csak elmeleti || 1 csak gyakorlati || NULL elmeleti és gyakorlati*/
  DECLARE @isGyakorlatVagyElmeletFalse BIT = NULL
   
  IF(@isGyakorlatiTargyak = 1)
	SET @isGyakorlatVagyElmelet = 1

  IF(@isElmeletiTargyak = 1)
	SET @isGyakorlatVagyElmelet = 0

  IF(@isGyakorlatiTargyak = 1 AND @isElmeletiTargyak = 1)
	SET @isGyakorlatVagyElmelet = NULL

  IF(@isGyakorlatiTargyak = 0 AND @isElmeletiTargyak = 0)
	SET @isGyakorlatVagyElmeletFalse = 0

--Kezdőoldal
  SELECT 
     ia.C_NEV	 		IntezmenyNev
    ,dbo.fnGetDokumentumIntezmenyCime(@tanevId)	IntezmenyCim
    ,ia.C_OMKOD 		OMKOD
    ,ia.C_IGAZGATONEVE  IntezmenyVezeto
    ,ocs.C_NEV			Csoport 
	,ocs.ID				CsoportId
	,ISNULL(f.C_NYOMTATASINEV,'-')			 CsoportVezeto
    ,ISNULL(cs.C_CSOPORTNAPLOLEIRAS,'-')	 CsoportNaploLeiras
    ,FORMAT(cs.C_CSOPORTNAPLOMEGNYITASA, 'yyyy. MMMM dd.', 'hu-hu')			Megnyitas 
	,ISNULL(FORMAT(cs.C_CSOPORTNAPLOZARASA, 'yyyy. MMMM dd.', 'hu-hu'),'-')	Lezaras
	,ISNULL(ocs.C_EVFOLYAMTIPUSA, 1296)	AS EvfolyamTipusa              -- 1296 = Na
	,ocs.C_FELADATELLATASIHELYID FeladatEllatasiHelyId
	,ocs.C_KERESZTFELEVES	OJCSJKeresztfeleves
	,ocs.C_VEGZOSEVFOLYAM	CSJVegzosEvfolyamu
	,cs.C_TIPUSA	CsoportTipusa
  FROM T_INTEZMENY_OSSZES i
	  INNER JOIN T_INTEZMENYADATOK_OSSZES ia ON ia.c_intezmenyid = i.id
	  INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.c_intezmenyid = i.id AND ocs.c_tanevid = @tanevid
	  INNER JOIN T_CSOPORT_OSSZES cs ON cs.id = ocs.id 
	  LEFT JOIN T_FELHASZNALO_OSSZES f ON f.id=cs.c_csoportvezetoid
  WHERE 
	i.id = @intezmenyid 
	AND ia.c_tanevid = @tanevid 
	AND ocs.id = @csoportId

  --Csoportot vezette
  SELECT 
	ISNULL(felhasznaloNev.C_NYOMTATASINEV,'-') CsoportVezeto 
	,csoport.C_CSOPORTVEZETOID CsoportVezetoId
  FROM T_CSOPORT_OSSZES csoport
  INNER JOIN 
	T_FELHASZNALO_OSSZES felhasznaloNev ON felhasznaloNev.id = csoport.C_CSOPORTVEZETOID
  WHERE 
	csoport.id = @csoportId 

  --Tanulók
	SELECT  
		 TanuloId	Id
		,TanuloCsoportId
		,Sorszam
		,TorzslapSzam
		,OktAzon
		,TajSzam
		,AnyjaNeve
		,SzulHely
		,SzulIdo
		,SocAdat
		,Kepzes
		,TanuloNeve
		,Allampolgarsaga
		,DiakIgazolvanySzam
		,KilepesDatum
		,BeirasiNaploSorszam
		,AdottOsztaly	Osztaly
		,AdottOsztalyId	OsztalyId
    ,BelepesDatum AS  BelepesDatum
	INTO #studentsWithTanuloCsoport
	FROM fnGetDokumentumTanulokAdatai(@tanevId, @csoportId)

	SELECT
		 Id
		,Osztaly
		,OktAzon
		,TanuloNeve			Nev
    ,BelepesDatum AS BelepesDatum
	FROM #studentsWithTanuloCsoport

	SELECT DISTINCT
		 Id
	INTO #students
	FROM #studentsWithTanuloCsoport

--Napló adatok
DECLARE @TanitasiNapTipusok TABLE (Id INT)
INSERT INTO @TanitasiNapTipusok
SELECT DISTINCT ID FROM T_DICTIONARYITEMBASE_OSSZES WHERE ID IN (1385, 1393, 1394, 1395, 1400, 1402, 1403, 1404)

DECLARE @ElsoNapTanevRendje DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_NAPTIPUSA = 1394 AND C_TANEVID = @tanevId AND TOROLT = 'F')
DECLARE @UtolsoNapTanevRendje DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_NAPTIPUSA = 1395 AND C_TANEVID = @tanevId AND TOROLT = 'F')
DECLARE @ElsoNapTanev DATE = (SELECT TOP 1 C_ELSOTANITASINAP FROM T_TANEV_OSSZES WHERE ID = @tanevId AND TOROLT = 'F')
DECLARE @UtolsoNapTanev DATE = (SELECT TOP 1 C_UTOLSOTANITASINAP FROM T_TANEV_OSSZES WHERE ID = @tanevId AND TOROLT = 'F')

DECLARE @isVegzos VARCHAR(1) = (SELECT TOP 1  C_VEGZOSEVFOLYAM FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @csoportId)
DECLARE @VegzosUtolsoNap DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_TANEVID = @tanevId AND C_NAPTIPUSA = 1402 AND TOROLT = 'F') 

DECLARE @NapSorszam TABLE (Datum DATE, Sorszam NVARCHAR(4))
INSERT INTO @NapSorszam
SELECT
	C_NAPDATUMA
	,CAST(DENSE_RANK() OVER(ORDER BY C_NAPDATUMA) AS NVARCHAR(4))
FROM T_NAPTARINAP_OSSZES
WHERE
	C_TANEVID = @tanevId
	AND TOROLT = 'F'
	AND C_NAPTIPUSA IN (SELECT Id FROM @TanitasiNapTipusok) 
	AND C_NAPDATUMA <= ISNULL(@UtolsoNapTanevRendje, @UtolsoNapTanev)

DECLARE @datum DATE = GETDATE()

CREATE TABLE #OraSorszam (TanitasioraId INT PRIMARY KEY, OraSorszam INT)

INSERT INTO #OraSorszam
EXEC	sp_GetOraSorszamByOsztaly
  	@osztalyCsoportId = @csoportId,
  	@datum = @datum,
  	@intezmenyId = @intezmenyId,
  	@tanevId = @tanevId

	  SELECT 
		 tao.Id						TanitasioraId
		,tao.C_DATUM				Datum		
		,CONVERT(VARCHAR(5), tao.C_ORAKEZDETE, 108) + '-' + CONVERT(VARCHAR(5), tao.C_ORAVEGE, 108)	KezdetVeg
		,C_ORATULAJDONOSID			PedagogusId
		,ISNULL('Helyettesítő: ' + helyettesito.C_NYOMTATASINEV, pedagogus.C_NYOMTATASINEV)	PedagogusNev
		,IIF(C_MEGTARTOTT = 'T', ISNULL(CONVERT(NVARCHAR(MAX), OraSorszam),'-'), '-')	OraSorszam
		,IIF(C_MEGTARTOTT = 'T', REPLACE(REPLACE(C_TEMA, CHAR(0x0007),''), CHAR(0x000B), ''), 'Elmaradt')		Tema
		,IIF(C_MEGTARTOTT = 'T', ISNULL(CONVERT(NVARCHAR(MAX), OraSorszam),'-') +'.: ' + REPLACE(REPLACE(C_TEMA, CHAR(0x0007),''), CHAR(0x000B), ''), 'Elmaradt')	TemaOraSzammal
		,tao.C_HETNAPJA				HetNapja
		,C_HETSORSZAMA				HetSorszama
		,C_MEGTARTOTT				Megtartott
		,C_TANTARGYID				TantargyId	
		,IIF(tantargy.C_NEV <> C_NEVNYOMTATVANYBAN AND C_NEVNYOMTATVANYBAN IS NOT NULL, C_NEVNYOMTATVANYBAN + ' (' + tantargy.C_NEV + ')', tantargy.C_NEV)	Tantargynev
		,C_OSZTALYCSOPORTID			OsztalyCsoportId
		,C_NAPSORSZAMA				NapSorszama
		,C_ORAKEZDETE				Kezdete
	INTO #megtartottOrak
	FROM T_TANITASIORA_OSSZES tao 
		INNER JOIN T_FELHASZNALO_OSSZES pedagogus ON pedagogus.Id = tao.C_TANARID
		LEFT JOIN T_FELHASZNALO_OSSZES helyettesito ON helyettesito.Id = tao.C_HELYETTESITOTANARID
		INNER JOIN T_TANTARGY_OSSZES tantargy ON tantargy.Id = tao.C_TANTARGYID AND (tantargy.C_GYAKORLATI = CASE @isGyakorlatVagyElmelet 
																												WHEN 1 THEN 'T' 		 
																												WHEN 0 THEN 'F' 
																											 END OR @isGyakorlatVagyElmelet IS NULL)
		LEFT JOIN (SELECT DISTINCT OraSorszam, TanitasioraId FROM #OraSorszam) oraSorszam ON oraSorszam.TanitasioraId = tao.Id
	WHERE 
		C_OSZTALYCSOPORTID = @csoportId
		AND tao.TOROLT = 'F'

  CREATE TABLE #hetek (
     Het                  int
    ,HetEleje             nvarchar(11)
    ,HetVege              nvarchar(11)
    ,IsSzombatiMulasztas  bit
    ,IsVasarnapiMulasztas bit
    ,PRIMARY KEY (Het)
  )

  INSERT INTO #Hetek
  SELECT
    nn.C_HETSORSZAMA
    ,FORMAT(MIN(nn.C_NAPDATUMA), 'yyyy.MM.dd.')
    ,FORMAT(MAX(nn.C_NAPDATUMA), 'yyyy.MM.dd.')
    ,0  --default
    ,0  --default
	FROM T_NAPTARINAP_OSSZES nn
	WHERE 
		nn.C_NAPDATUMA BETWEEN ISNULL(@ElsoNapTanevRendje, @ElsoNapTanev) AND IIF(@isVegzos = 'T', COALESCE(@VegzosUtolsoNap,@UtolsoNapTanevRendje, @UtolsoNapTanev), ISNULL(@UtolsoNapTanevRendje, @UtolsoNapTanev))
		AND nn.C_HETNAPJA BETWEEN 1407 AND 1413
		AND nn.TOROLT='F' 
		AND nn.c_tanevId = @tanevId
	GROUP BY nn.C_HETSORSZAMA
	ORDER BY MIN(nn.C_NAPDATUMA)

  /* Naplo */
  -- Hétfőtől vasárnapig kellenek, mert ez csak segédtábla
  SELECT DISTINCT 
     nn.C_HETSORSZAMA									Het
    ,NapDictionary.C_NAME								Nap
    ,FORMAT(nn.C_NAPDATUMA, 'yyyy. MMMM dd.', 'hu-hu')	Datum 
	,nn.C_NAPDATUMA
  FROM T_NAPTARINAP_OSSZES nn 
  	LEFT JOIN T_TANITASIORA_OSSZES tao ON tao.c_datum = nn.c_napdatuma AND tao.c_osztalycsoportid = @csoportid AND tao.torolt = 'F'
  	LEFT JOIN T_DICTIONARYITEMBASE_OSSZES NapDictionary ON NapDictionary.id = nn.C_ALAPHETNAPJA AND NapDictionary.C_TANEVID = @tanevId 
  WHERE nn.c_napdatuma >= ISNULL(@ElsoNapTanevRendje, @ElsoNapTanev) AND nn.c_napdatuma <= ISNULL(@UtolsoNapTanevRendje, @UtolsoNapTanev)
  ORDER BY nn.C_HETSORSZAMA, nn.C_NAPDATUMA
	
	SELECT
		 mto.Datum									C_NAPDATUMA
		,FORMAT(mto.Datum, 'dddd', 'hu-hu')			Napneve
		,null										C_MEGJEGYZES
		,nh.C_HETKEZDONAPJA							C_HETKEZDONAPJA
		,nh.C_HETUTOLSONAPJA						C_HETUTOLSONAPJA
		,HetSorszama								C_HETSORSZAMA
		,KezdetVeg									KezdetVeg
		,nsz.Sorszam								Napszam
		,Tantargynev								Tantargy
		,PedagogusNev								Tanar
		,Tema										Oraanyaga
		,OraSorszam									C_ORAEVESSORSZAM
		,Kezdete									Kezdete
	INTO #szoveges
	FROM #megtartottOrak mto 
		INNER JOIN T_NAPTARIHET_OSSZES nh ON Datum BETWEEN nh.C_HETKEZDONAPJA AND nh.C_HETUTOLSONAPJA AND nh.C_TANEVID = @tanevId and nh.torolt='F' 
		LEFT JOIN @NapSorszam nsz ON nsz.Datum = mto.Datum

  /* NaploAdatok */
	IF(@isGyakorlatVagyElmeletFalse IS NULL) BEGIN
		IF((@isGyakorlatVagyElmelet = 1) OR (@isGyakorlatVagyElmelet = 0) OR (@isGyakorlatVagyElmelet IS NULL)) BEGIN
		SELECT DISTINCT 
				FORMAT(C_NAPDATUMA, 'yyyy. MMMM dd.', 'hu-hu') Datum
				, napneve
				, c_megjegyzes
				, c_hetkezdonapja
				, c_hetutolsonapja
				, c_hetsorszama
				, KezdetVeg
				, napszam
				, STUFF((SELECT ' | ' + CAST(bszov.TANTARGY AS VARCHAR(max)) 
						 FROM #szoveges bszov 
						 WHERE 
							 bszov.C_NAPDATUMA=szov.C_NAPDATUMA
							 and bszov.KezdetVeg=szov.KezdetVeg
						 FOR XML PATH(''), TYPE)
						.value('.','NVARCHAR(MAX)'),1,3,'') TANTARGY
				, STUFF((SELECT ' | ' + CAST(bszov.TANAR AS VARCHAR(max)) 
						 FROM #szoveges bszov 
						 WHERE 
							 bszov.C_NAPDATUMA=szov.C_NAPDATUMA
							 and bszov.KezdetVeg=szov.KezdetVeg
						 FOR XML PATH(''), TYPE)
						.value('.','NVARCHAR(MAX)'),1,3,'') TANAR
				, STUFF((SELECT ' | ' + CAST(bszov.ORAANYAGA AS VARCHAR(max)) 
						 FROM #szoveges bszov 
						 WHERE 
							 bszov.C_NAPDATUMA=szov.C_NAPDATUMA
							 and bszov.KezdetVeg=szov.KezdetVeg
						 FOR XML PATH(''), TYPE)
						.value('.','NVARCHAR(MAX)'),1,3,'') ORAANYAGA
				, STUFF((SELECT ' | ' + CAST(bszov.C_ORAEVESSORSZAM AS VARCHAR(max)) 
						 FROM #szoveges bszov 
						 WHERE 
							 bszov.C_NAPDATUMA=szov.C_NAPDATUMA
							 and bszov.KezdetVeg=szov.KezdetVeg
						 FOR XML PATH(''), TYPE)
						.value('.','NVARCHAR(MAX)'),1,3,'') OraEvesSorszama
				,Kezdete
				,C_NAPDATUMA
		FROM #szoveges szov
		ORDER BY C_NAPDATUMA, Kezdete
		END
	END
	ELSE IF(@isGyakorlatVagyElmeletFalse = 0) BEGIN
		SELECT 
		'' Datum, '' napneve, '' c_megjegyzes, '' c_hetkezdonapja, '' c_hetutolsonapja, '' c_hetsorszama, '' KezdetVeg, '' napszam, '' TANTARGY,'' TANAR,'' ORAANYAGA,'' OraEvesSorszama,'' Kezdete
	END  

  CREATE TABLE #hianyzasok (
     C_HETSORSZAMA    int
    ,C_NYOMTATASINEV  nvarchar(255)
    ,TanuloId         int
    ,Hetfo            nvarchar(128)
    ,Kedd             nvarchar(128)
    ,Szerda           nvarchar(128)
    ,Csutortok        nvarchar(128)
    ,Pentek           nvarchar(128)
    ,Szombat          nvarchar(128)
    ,Vasarnap         nvarchar(128)
    ,Primary Key (C_HETSORSZAMA, TanuloId)
  )
    /*Hiányzások*/
  INSERT INTO #hianyzasok
  SELECT C_HETSORSZAMA, C_NYOMTATASINEV, TanuloId,
    MAX([1]) AS [Hetfo], MAX([2]) AS [Kedd], MAX([3]) AS [Szerda], 
    MAX([4]) AS [Csutortok], MAX([5]) AS [Pentek],
    MAX([6]) AS [Szombat], MAX([7]) AS [Vasarnap]
  FROM (
      SELECT C_HETSORSZAMA, C_NYOMTATASINEV, C_ORATANULOIID as TanuloId, [1], [2], [3], [4], [5], [6], [7]
      FROM (
       SELECT DISTINCT n.C_NAPTARINAPID, DATEPART(dw,n.C_DATUM) AS NAP, t.C_NYOMTATASINEV, C_ORATANULOIID, n.C_HETSORSZAMA,
        '[' + STUFF((
          SELECT  ', ' + CAST(OraSorszam AS VARCHAR(3)) + IIF(tm.C_TIPUS = 1499, '(k)','')
          FROM T_TANULOMULASZTAS_OSSZES tm
            INNER JOIN T_TANITASIORA_OSSZES o ON o.ID = tm.C_TANITASIORAKID
			INNER JOIN #students s ON s.Id = tm.C_ORATANULOIID
			LEFT JOIN (SELECT DISTINCT * FROM #OraSorszam) oraSorszam ON oraSorszam.TanitasioraId = O.Id
          WHERE n.C_NAPTARINAPID = o.C_NAPTARINAPID
            AND m.C_ORATANULOIID = tm.C_ORATANULOIID
            AND tm.C_TANEVID = @tanevId
			AND tm.torolt='F' AND o.c_tanevId=@tanevId
			AND o.TOROLT = 'F'
			AND tm.C_TIPUS IN (1499, 1500)
			AND o.C_OSZTALYCSOPORTID = @csoportId
          ORDER BY o.C_NAPTARINAPID, o.C_ORASZAM
          FOR XML PATH(''), TYPE).value('.', 'varchar(max)'),1,2,'') + '] ' + CAST(SUM(IIF(m.C_IGAZOLT = 'T', 1, 0)) AS varchar(2)) + '/' + CAST(SUM(IIF(m.C_IGAZOLT = 'F', 1, 0)) AS varchar(2)) AS hianyzas
        FROM T_TANITASIORA_OSSZES n
          INNER JOIN T_TANULOMULASZTAS_OSSZES m ON m.C_TANITASIORAKID = n.ID  and m.torolt='F' 
          INNER JOIN #students s ON s.Id = m.C_ORATANULOIID
          INNER JOIN T_FELHASZNALO_OSSZES t ON t.ID = m.C_ORATANULOIID
        WHERE 
			n.C_TANEVID = @tanevId 
			AND m.C_TANEVID = @tanevId 
			AND (@iskolaErdekuSzamit = 1 OR C_IGAZOLASTIPUSA <> 1533)
			and m.C_TIPUS IN (1499, 1500)
			and n.TOROLT = 'F'
			AND n.C_OSZTALYCSOPORTID = @csoportId
        GROUP BY n.C_NAPTARINAPID, C_ORATANULOIID, C_NYOMTATASINEV, n.C_HETSORSZAMA, n.C_DATUM) AS SUB
        PIVOT
        (
            MAX(HIANYZAS)
            FOR NAP IN ([1], [2], [3], [4], [5], [6], [7])
        ) AS PivotTable
    ) AS ASD
    GROUP BY C_HETSORSZAMA, C_NYOMTATASINEV, TanuloId

    UPDATE #hetek SET #hetek.IsSzombatiMulasztas=h.Sz, #hetek.IsVasarnapiMulasztas=h.V
    FROM (SELECT C_HETSORSZAMA AS hetsorszama
            ,(CASE WHEN MAX(Szombat) IS NOT NULL THEN 1 ELSE 0 END) AS Sz
            ,(CASE WHEN MAX(Vasarnap) IS NOT NULL THEN 1 ELSE 0 END) AS V
          FROM #hianyzasok GROUP BY C_HETSORSZAMA) AS h
    WHERE h.hetsorszama=#hetek.Het

    /* NaploMulasztas */
    SELECT
      hi.C_HETSORSZAMA, hi.C_NYOMTATASINEV, hi.Hetfo, hi.Kedd,
      hi.Szerda, hi.Csutortok, hi.Pentek, hi.Szombat, hi.Vasarnap
    FROM  #hianyzasok hi
    ORDER BY hi.C_HETSORSZAMA

    /* NaptariHetek */
    SELECT
      h.Het, h.HetEleje, h.HetVege, h.IsSzombatiMulasztas, h.IsVasarnapiMulasztas
    FROM #hetek h
    ORDER BY h.Het

	 /*TANULÓ adatai*/
	SELECT  
		 Id TanuloId
		,TanuloCsoportId
		,Sorszam
		,TorzslapSzam
		,OktAzon
		,TajSzam
		,AnyjaNeve
		,SzulHely
		,SzulIdo
		,SocAdat
		,Kepzes
		,TanuloNeve
		,Allampolgarsaga
		,DiakIgazolvanySzam
		,KilepesDatum
		,BeirasiNaploSorszam
		,Osztaly
		,OsztalyId
    ,BelepesDatum
	FROM #studentsWithTanuloCsoport

  /*TANULÓ elérhetőségei */
	DECLARE @TanuloCimTable TABLE (FelhasznaloId INT, Cim NVARCHAR(MAX), Cimtipusa NVARCHAR(MAX))
	INSERT INTO @TanuloCimTable
	SELECT DISTINCT
		TanuloId
		,STUFF((
			SELECT DISTINCT CAST(Btemp.Cim AS NVARCHAR(MAX))  + CHAR(13) + CHAR(10)
			FROM fnGetDokumentumTanuloOrGondviseloCim (0, @tanevId, @csoportid) btemp
			WHERE 
				temp.TanuloId = btemp.TanuloId
				AND temp.CimTipusa = btemp.CimTipusa
			FOR XML PATH(''), TYPE)
		.value('.','NVARCHAR(MAX)'),1,0,'')
		,cimTipusa.C_NAME 
	FROM fnGetDokumentumTanuloOrGondviseloCim (0, @tanevId, @csoportid) temp
	INNER JOIN T_DICTIONARYITEMBASE_OSSZES cimTipusa ON cimTipusa.Id = temp.CimTipusa

	DECLARE @GondViseloCimTable TABLE (GondviseloId INT, Cim NVARCHAR(MAX), Cimtipusa NVARCHAR(MAX))
	INSERT INTO @GondViseloCimTable
	SELECT DISTINCT
		GondviseloId
		,STUFF((
			SELECT DISTINCT CAST(btemp.Cim AS NVARCHAR(MAX))  + CHAR(13) + CHAR(10)
			FROM fnGetDokumentumTanuloOrGondviseloCim (1, @tanevId, @csoportid) btemp
			WHERE 
				temp.GondviseloId = btemp.GondviseloId
				AND temp.CimTipusa = btemp.CimTipusa
			FOR XML PATH(''), TYPE)
		.value('.','NVARCHAR(MAX)'),1,0,'')
		,cimTipusa.C_NAME  
	FROM fnGetDokumentumTanuloOrGondviseloCim (1, @tanevId, @csoportid) temp
	INNER JOIN T_DICTIONARYITEMBASE_OSSZES cimTipusa ON cimTipusa.Id = temp.CimTipusa

	DECLARE @EmailCimTableTemp TABLE (FelhasznaloId INT, EmailCim NVARCHAR(MAX), GondviseloId INT)
	INSERT INTO @EmailCimTableTemp
	SELECT 
		TanuloId
		,C_EMAILCIM 
		,C_GONDVISELOID
	FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @csoportid, '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

	DECLARE @EmailCimTanuloTable TABLE (FelhasznaloId INT, EmailCim NVARCHAR(MAX))
	INSERT INTO @EmailCimTanuloTable
	SELECT DISTINCT
		FelhasznaloId
		,STUFF((
			SELECT DISTINCT CAST(btemp.EmailCim AS NVARCHAR(MAX))  + CHAR(13) + CHAR(10)
			FROM @EmailCimTableTemp btemp
			WHERE 
				temp.FelhasznaloId = btemp.FelhasznaloId
				AND btemp.GondviseloId IS NULL
			FOR XML PATH(''), TYPE)
		.value('.','NVARCHAR(MAX)'),1,0,'') Email
	FROM @EmailCimTableTemp temp
	WHERE
		GondviseloId IS NULL

	DECLARE @EmailCimGondviseloTable TABLE (GondviseloId INT, EmailCim NVARCHAR(MAX))
	INSERT INTO @EmailCimGondviseloTable
	SELECT DISTINCT
		GondviseloId
		,STUFF((
			SELECT DISTINCT CAST(btemp.EmailCim AS NVARCHAR(MAX))  + CHAR(13) + CHAR(10)
			FROM @EmailCimTableTemp btemp
			WHERE 
				temp.GondviseloId = btemp.GondviseloId
				AND btemp.GondviseloId IS NOT NULL
			FOR XML PATH(''), TYPE)
		.value('.','NVARCHAR(MAX)'),1,0,'') Email
	FROM @EmailCimTableTemp temp
	WHERE 
		GondviseloId IS NOT NULL

	DECLARE @TelefonTableTemp TABLE (FelhasznaloId INT, Telefon NVARCHAR(MAX),  GondviseloId INT)
	INSERT INTO @TelefonTableTemp
	SELECT 
		TanuloId
		,C_TELEFONSZAM
		,C_GONDVISELOID
	FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @csoportid, 'T') tanulo
		INNER JOIN T_TELEFON_OSSZES telefon ON telefon.C_FELHASZNALOID = TanuloId
	WHERE
		telefon.TOROLT = 'F'
		AND telefon.C_TANEVID = @tanevId
		AND LEN(telefon.C_TELEFONSZAM) > 0 

	DECLARE @TanuloTelefonTable TABLE (FelhasznaloId INT, Telefon NVARCHAR(MAX))
	INSERT INTO @TanuloTelefonTable
	SELECT DISTINCT
		FelhasznaloId
		,STUFF((
			SELECT DISTINCT CAST(btemp.Telefon AS NVARCHAR(MAX))  + CHAR(13) + CHAR(10)
			FROM @TelefonTableTemp btemp
			WHERE 
				temp.FelhasznaloId = btemp.FelhasznaloId
				AND GondviseloId IS NULL
			FOR XML PATH(''), TYPE)
		.value('.','NVARCHAR(MAX)'),1,0,'') 
	FROM @TelefonTableTemp temp
	WHERE 
		GondviseloId IS NULL

	DECLARE @GondviseloTelefonTable TABLE (GondviseloId INT, Telefon NVARCHAR(MAX))
	INSERT INTO @GondviseloTelefonTable
	SELECT DISTINCT
		GondviseloId
		,STUFF((
			SELECT DISTINCT CAST(btemp.Telefon AS NVARCHAR(MAX))  + CHAR(13) + CHAR(10)
			FROM @TelefonTableTemp btemp
			WHERE 
					temp.GondviseloId = btemp.GondviseloId
				AND temp.FelhasznaloId = btemp.FelhasznaloId
				AND GondviseloId IS NOT NULL
			FOR XML PATH(''), TYPE)
		.value('.','NVARCHAR(MAX)'),1,0,'') 
	FROM @TelefonTableTemp temp
	WHERE 
		GondviseloId IS NOT NULL

	SELECT 
		 s.Id tanuloid 
		,cim.Cimtipusa cimtipus
		,cim.Cim 
		,email.EmailCim email
		,telefon.Telefon telefonszam
	FROM #students s
		LEFT JOIN @TanuloCimTable cim ON cim.FelhasznaloId = s.Id
		LEFT JOIN @EmailCimTanuloTable email ON email.FelhasznaloId = s.Id
		LEFT JOIN @TanuloTelefonTable telefon ON telefon.FelhasznaloId = s.Id
	ORDER BY Cimtipusa

	  /* TANULO mulasztása */
DECLARE @Mulasztasok TABLE ( IgazoltE nvarchar(1), Tanulo int, Tipus int)

--Félév kezdete
	DECLARE @FelevVege DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES tr WHERE C_NAPTIPUSA = 1400 AND C_TANEVID=@tanevId AND TOROLT = 'F')

	SELECT 
		 DATEPART(MONTH, Datum)				Honap
		 ,TantargyId						Id
		 ,Igazolt							IgazoltE
		 ,TanuloId							TanuloId
		 ,TanuloCsoportId					TanuloCsoportId
		 ,IgazolasTipusa					IgazolasTipus
		 ,Datum								Datum
		 ,Tipusa							Tipus
		 ,KesesPercben						KesesPercben
		 ,HetSorszama						HetSorszama
		 ,Oraszam							Oraszam
		 ,CAST(DATEPART(MONTH, Datum) AS NVARCHAR(10)) + IIF(C_GYAKORLATI = 'T', 'G', 'E') ElmeletGyakorlat
		 ,C_GYAKORLATI						isGyakorlat
	INTO #mulasztasTmp 
	FROM fnGetDokumentumMulasztasokOsztalyonkentReszletes(@tanevId, @csoportId, @iskolaErdekuSzamit, 1, 0, DEFAULT, DEFAULT, 0) TanulokMulasztasai
		INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.Id = TanulokMulasztasai.TantargyId


EXEC sp_GetDokumentumMulasztasokIdoszakonkent
	@tanevId					= @tanevId,
	@osztalyCsoportId			= @csoportId,
	@iskolaErdekuSzamit			= @iskolaErdekuSzamit,
	@isReszletesMulasztasok		= @isreszletesmulasztasok

DECLARE @gondviselok TABLE (Id INT)
INSERT INTO @gondviselok
SELECT 
	 GondviseloId
FROM fnGetDokumentumGondviselok (@csoportId, @tanevId, 'F', 'T')

  /*gondviselő elérhetőségei */

	SELECT DISTINCT
		 Gondviselo.TanuloId	TanuloId
		,Gondviselo.Gondviselonev	C_NEV
		,cim.Cimtipusa		C_CIMTIPUSA
		,cim.cim			C_OSSZETETTCIM
		,telefon.telefon	C_TELEFONSZAM
		,email.emailcim		C_EMAILCIM 
	FROM fnGetDokumentumGondviselok (@csoportId, @tanevId, 'F', 'T') Gondviselo
		LEFT JOIN @EmailCimGondviseloTable email ON email.GondviseloId = Gondviselo.GondviseloId
		LEFT JOIN @GondviseloTelefonTable telefon ON telefon.GondviseloId = Gondviselo.GondviseloId
		LEFT JOIN @GondViseloCimTable cim ON cim.GondviseloId = Gondviselo.GondviseloId
	ORDER BY Cimtipusa
		
  /*TANULÓ osztályzatai*/
  	SELECT 
		Datum
		,TipusId
		,TanuloCsoportId
		,ErtekelesSzoveg
		,ErtekelesOsztalyzatId
		,ErtekelesOsztalyzatValue
		,ErtekelesOsztalyzatNev
		,ErtekelesSzazalek
		,MagatartasOsztalyzatId
		,MagatartasOsztalyzatNev
		,MagatartasSzoveg
		,MagatartasErtekId
		,MagatartasErtek
		,SzorgalomOsztalyzatId
		,SzorgalomOsztalyzatNev
		,SzorgalomSzoveg
		,SzorgalomErtekId
		,SzorgalomErtek
		,TanuloId
		,OsztalyCsoportId
		,TantargyId
		,TantargyNevZarojellel
		,TantargyNev
		,TantargyNevNyomtatvanyban
		,TargyKategoriaId
		,FotargyE
		,FotargyId
		,Altantargy
		,ErtekelesTema
		,Jeloles
		,JelolesAndErtekelesTema 
		,isMagatartasSzorgalom
	INTO #ErtekelesekTemp
	FROM fnGetDokumentumErtekelesekOsztalyonkent (@tanevId, @csoportId, DEFAULT, 0, 1, DEFAULT)
	WHERE	
		OsztalyCsoportId = @csoportId

	EXEC sp_GetDokumentumErtekelesekIdoszakonkent
	@tanevId						= @tanevId,
	@osztalyCsoportId				= @csoportid,
	@ertekelesTipusa				= NULL, 
	@csakTanorai					= 0, 
	@csakKivlasztottOsztalyCsoport	= 1, 
	@atsoroltTanuloErtekelesek		= 0,
	@fuggolegesTantargyak			= 0
		
 /*Szöveges minősítések*/
	SELECT 
		a.tanuloId
		,a.TanuloCsoportId
		,a.Honap
		,a.Tantargy
		,a.Ertekeles 
		,a.Tipus 
	FROM 
	(
	SELECT 
		s.Id tanuloId
		,s.TanuloCsoportId
		,szoveges.Honap
		,szoveges.Tantargy
		,szoveges.Ertekeles 
		,szoveges.Tipus
		,szoveges.RendezHonap
	FROM #studentsWithTanuloCsoport s
	LEFT JOIN (SELECT 
					TanuloId tanuloId
					,TanuloCsoportId
					,'['+CONVERT(NVARCHAR(MAX),DATEPART(MONTH, Datum))+'. hónap]' Honap
					,IIF(TantargyNev <> TantargyNevNyomtatvanyban AND TantargyNevNyomtatvanyban IS NOT NULL, TantargyNevNyomtatvanyban + ' (' + TantargyNev + ')', TantargyNev) Tantargy
					,ErtekelesSzoveg + Jeloles			Ertekeles 
					,ErtekelesTipusDictionary.C_NAME	Tipus 
					,CASE 
						WHEN DATEPART(MONTH, Datum) = 1 THEN 5
						WHEN DATEPART(MONTH, Datum) = 2 THEN 6
						WHEN DATEPART(MONTH, Datum) = 3 THEN 7
						WHEN DATEPART(MONTH, Datum) = 4 THEN 8
						WHEN DATEPART(MONTH, Datum) = 5 THEN 9
						WHEN DATEPART(MONTH, Datum) = 6 THEN 10
						WHEN DATEPART(MONTH, Datum) = 7 THEN 11
						WHEN DATEPART(MONTH, Datum) = 8 THEN 12
						WHEN DATEPART(MONTH, Datum) = 9 THEN  1
						WHEN DATEPART(MONTH, Datum) = 10 THEN 2
						WHEN DATEPART(MONTH, Datum) = 11 THEN 3
						WHEN DATEPART(MONTH, Datum) = 12 THEN 4
				END AS RendezHonap
				FROM #ErtekelesekTemp ErtekelesTemp
					INNER JOIN T_DICTIONARYITEMBASE_OSSZES ErtekelesTipusDictionary ON ErtekelesTipusDictionary.ID = ErtekelesTemp.TipusId AND ErtekelesTipusDictionary.C_TANEVID = @tanevId
				WHERE 
					ErtekelesSzoveg IS NOT NULL 
			) szoveges on szoveges.TANULOID=s.Id AND s.TanuloCsoportId = szoveges.TanuloCsoportId
	)a
	ORDER BY RendezHonap, Tantargy

  SELECT 
	COUNT(distinct Id) TanulokSzama
	,Osztaly
  FROM #studentsWithTanuloCsoport
  GROUP BY Osztaly

  	--értékelésekhez tartozó feljegyzések
	SELECT DISTINCT
		TanuloId
		,TanuloCsoportId
		,STUFF((SELECT DISTINCT ', ' +  JelolesAndErtekelesTema 
					FROM #ErtekelesekTemp ErtekelesTemavalOsszefuz
				WHERE 
					LEN(JelolesAndErtekelesTema) > 0
					AND ErtekelesTemavalOsszefuz.TanuloId = ErtekelesTemaval.TanuloId
					AND (ErtekelesTemavalOsszefuz.ErtekelesSzoveg IS NULL AND ErtekelesTemavalOsszefuz.MagatartasSzoveg IS NULL AND ErtekelesTemavalOsszefuz.SzorgalomSzoveg IS NULL)
				FOR XML PATH(''), TYPE)
		.value('.','NVARCHAR(MAX)'),1,2,'')  JelolesTemaval
	FROM #ErtekelesekTemp  ErtekelesTemaval
		WHERE 
			LEN(JelolesAndErtekelesTema) > 0
			AND (ErtekelesTemaval.ErtekelesSzoveg IS NULL AND ErtekelesTemaval.MagatartasSzoveg IS NULL AND ErtekelesTemaval.SzorgalomSzoveg IS NULL)

	--megtartott órák száma
    SELECT 
		COUNT(TantargyId)				TantargyOraszam
		,Tantargynev					TantargyNev
	INTO #megtartottOrakSzama 
	FROM #megtartottOrak
	WHERE Megtartott = 'T'
	GROUP BY TantargyId, TantargyNev

	SELECT DISTINCT
		SUM(tmp.TantargyOraszam)		OsszesTantargySzam
		,STUFF((
			SELECT DISTINCT ', ' + btmp.TantargyNev + '(' + CAST(btmp.TantargyOraszam AS NVARCHAR(MAX)) + ')'  
			FROM #megtartottOrakSzama btmp
		FOR XML PATH(''), TYPE)
		.value('.','NVARCHAR(MAX)'),1,2,'')	  Tantargyak
	FROM #megtartottOrakSzama tmp

	-- Csoport tanárai
  SELECT 
	 targy.C_NEV			TargyNev
	,tanar.C_NYOMTATASINEV	TanarNev
	,targykategoria.C_ORDER
	,tanar.ID TanarId
	,tanar.C_OKTATASIAZONOSITO TanarOktAzon
  FROM T_FELHASZNALO_OSSZES tanar
  	INNER JOIN T_FOGLALKOZAS_OSSZES f ON f.C_TANARID = tanar.ID and f.TOROLT='F' and f.C_OSZTALYCSOPORTID = @csoportId
  	INNER JOIN T_TANTARGY_OSSZES targy ON targy.ID = f.C_TANTARGYID and targy.TOROLT='F'
	INNER JOIN T_TARGYKATEGORIATIPUS_OSSZES ON T_TARGYKATEGORIATIPUS_OSSZES.ID = targy.C_TARGYKATEGORIA
    INNER JOIN T_DICTIONARYITEMBASE_OSSZES targykategoria ON targykategoria.ID = T_TARGYKATEGORIATIPUS_OSSZES.ID AND targykategoria.TOROLT = 'F' AND targykategoria.C_TANEVID = @tanevId
  WHERE tanar.TOROLT = 'F' AND f.TOROLT = 'F'
    AND tanar.C_INTEZMENYID = @intezmenyid
    AND tanar.c_tanevId = @tanevId
  GROUP BY 
	C_ORDER, targy.C_NEV, tanar.C_NYOMTATASINEV, tanar.ID, tanar.C_OKTATASIAZONOSITO
  ORDER BY 
	C_ORDER, targy.C_NEV, tanar.C_NYOMTATASINEV

	DROP TABLE #megtartottOrakSzama
	DROP TABLE #students
END
GO