﻿SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

IF OBJECT_ID('[dbo].[sp_GetTanuloiErtesito]') IS NOT NULL 
BEGIN
  DROP PROCEDURE [dbo].[sp_GetTanuloiErtesito]
END  
GO


CREATE PROCEDURE [dbo].[sp_GetTanuloiErtesito] 
  @pIntezmenyId				INT,
  @pTanevId					  INT,
  @pOsztalyId			    INT,
  @pTanuloId			    INT,
  @pIskolaErdekuSzamit BIT
AS 
BEGIN
SET NOCOUNT ON;

DECLARE @FelevVege DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES tr WHERE C_NAPTIPUSA = 1400 AND C_TANEVID=@pTanevId AND TOROLT = 'F')


DECLARE @NaploSorszam TABLE (
	TanuloId INT
	,Sorszam INT	
	)
	INSERT INTO @NaploSorszam
	EXEC [sp_GetDokumentumTanuloNaploSorszam]
		@osztalyId = @pOsztalyId

CREATE TABLE  #students (ID INT PRIMARY KEY, BelepesDatum DATE, KilepesDatum DATE, NaploSorszam INT)
INSERT INTO #students
SELECT
  t.TanuloId
  ,BelepesDatum
  ,ISNULL(KilepesDatum, GETDATE()) 
  ,nsz.Sorszam
FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@pTanevId, @pOsztalyId, 'F') t
  INNER JOIN @NaploSorszam nsz ON nsz.TanuloId = t.TanuloId
WHERE 
  t.TanuloId = @pTanuloId


/*FEJLEC*/
SELECT DISTINCT
    osztalyCsop.C_NEV                                 OsztalyNeve
    ,ofo.C_NYOMTATASINEV                              Osztalyfonok
    ,INTEZMENY.C_NEV                                  IntezmenyNeve
    ,INTEZMENY.C_IGAZGATONEVE                         IgazgatoNeve
    ,dbo.fnGetDokumentumIntezmenyCime (@pTanevId)     IntezmenyCime
  	,INTEZMENY.C_TELEFONSZAM                          IntezmenyTelefonszam
    ,INTEZMENY.C_EMAILCIM                             IntezmenyEmail
    ,INTEZMENY.C_OMKOD                                IntezmenyOMKod
    ,TANEV.C_NEV                                      Tanev
  FROM T_TANEV_osszes TANEV
    INNER JOIN T_OSZTALYCSOPORT_OSSZES osztalyCsop ON TANEV.C_INTEZMENYID = osztalyCsop.C_INTEZMENYID  
  	INNER JOIN T_OSZTALY_OSSZES o ON osztalyCsop.ID = o.ID AND o.torolt='F'
  	LEFT  JOIN T_FELHASZNALO_OSSZES ofo ON ofo.ID = o.C_OSZTALYFONOKID 
  	INNER JOIN T_INTEZMENYADATOK_OSSZES INTEZMENY on INTEZMENY.C_INTEZMENYID=osztalyCsop.C_INTEZMENYID AND INTEZMENY.C_TANEVID = osztalyCsop.C_TANEVID AND INTEZMENY.Torolt = 'F'
  WHERE osztalyCsop.ID = @pOsztalyId
    AND TANEV.ID = @pTanevId


/*TANULÓ adatai*/
	SELECT DISTINCT 
		tanuloID
		,sorszam
		,torzslapSzam
		,oktAzon
		,tajSzam
		,anyjaNeve
		,szulHely
		,dbo.fnGetDokumentumDatumFormatum(szulIdo) szulIdo
		,IIF(socAdat = '', '', LEFT(socAdat, len(socAdat)- 1)) socAdat
		,kepzes
		,tanuloNeve
		,allampolgarsaga
		,diakIgazolvanySzam
		,dbo.fnGetDokumentumDatumFormatum(kilepesDatum) kilepesDatum
		,beirasiNaploSorszam
	INTO #TanuloAlapAdatok
  FROM (
 SELECT  
  	t.ID						             tanuloID
  	,naploSorszam.Sorszam		     sorszam
  	,f.C_NYILVANTARTASISZAM	     torzslapSzam
  	,f.C_OKTATASIAZONOSITO		   oktAzon
  	,f.C_TAJSZAM				         tajSzam
  	,f.C_ANYJANEVE				       anyjaNeve
  	,f.C_SZULETESIHELY			     szulHely
  	,f.C_SZULETESIDATUM			     szulIdo
  	,IIF(t.C_MAGANTANULO = 'T', 'Magántanuló (eü. ok), ', '') +
     IIF(t.C_JOGVISZONYATSZUNETELTETO = 'T', 'Jogviszony szüneteltetve, ', '') + 
     IIF(t.C_SZAKMAIGYAKORLATON = 'T', 'Szakmai gyakorlat, ', '') + 
     IIF(t.C_SZOCIALISTAMOGATAS = 'T', 'Szociális támogatás, ', '') + 
  	 IIF(t.C_SAJATOSNEVELESU = 'T', 'Sajátos nevelési igényű, ', '') +
  	 IIF(t.C_BEJARO = 'T', 'Bejáró, ', '') 
								                 socAdat
	,tt.C_NEV					             kepzes
	,f.C_NYOMTATASINEV			       tanuloNeve
	,d.C_NAME					             allampolgarsaga
	,t.C_DIAKIGAZOLVANYSZAM	       diakIgazolvanySzam
	,MAX(cs.C_KILEPESDATUM)		     kilepesDatum
	,t.C_BEIRASINAPLOSORSZAM	     beirasiNaploSorszam
  FROM T_TANULO_OSSZES t
    INNER JOIN #students s ON s.ID = t.ID
	  INNER JOIN @NaploSorszam naploSorszam on naploSorszam.TanuloId=s.ID
    INNER JOIN T_TANTERV_OSSZES tt ON tt.ID = t.C_TANTERVID
    INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = t.ID
    INNER JOIN T_TANULOCSOPORT_OSSZES cs ON s.ID = cs.C_TANULOID AND cs.C_OSZTALYCSOPORTID = @pOsztalyId AND cs.TOROLT = 'F'
	  INNER JOIN T_DICTIONARYITEMBASE_OSSZES d on d.id=f.C_ALLAMPOLGARSAGA AND d.C_TANEVID = f.C_TANEVID AND d.C_INTEZMENYID = f.C_INTEZMENYID
  GROUP BY 
	  s.ID, t.ID, naploSorszam.Sorszam, f.C_NYILVANTARTASISZAM, f.C_OKTATASIAZONOSITO, f.C_TAJSZAM, f.C_ANYJANEVE, 
    f.C_SZULETESIHELY, f.C_SZULETESIDATUM, t.C_MAGANTANULO, t.C_JOGVISZONYATSZUNETELTETO, t.C_SZAKMAIGYAKORLATON, C_SAJATOSNEVELESU, t.C_BEJARO,
	  t.C_SZOCIALISTAMOGATAS, tt.C_NEV, f.C_NYOMTATASINEV, d.C_NAME, t.C_DIAKIGAZOLVANYSZAM, t.C_BEIRASINAPLOSORSZAM  
  ) tbl


  SELECT * FROM #TanuloAlapAdatok ORDER BY sorszam


  /*TANULÓ elérhetőségei */
 SELECT
		 tanulo.TanuloId                                                                                      tanuloID
     ,Gondviselo.C_NEV	+ IIF(Gondviselo.C_ISTORVENYESKEPVISELO = 'T', ' (törvényes)', '')				        GondviseloNeve
    ,C_IRANYITOSZAM + ' ' + C_VAROS + ', ' + C_KOZTERULET + ' ' + kozterulet.C_NAME + ' ' + C_HAZSZAM			CimText
	FROM T_GONDVISELO_OSSZES Gondviselo
    INNER JOIN #students TanulokId ON Gondviselo.C_TANULOID = TanulokId.Id
    INNER JOIN fnGetDokumentumOsztalyokCsoportokTanuloi(@pTanevId, @pOsztalyId, 'F') tanulo ON tanulo.TanuloId = Gondviselo.C_TANULOID AND Gondviselo.TOROLT = 'F'
		INNER JOIN T_CIM_OSSZES cim ON cim.C_FELHASZNALOID = TanuloId
		INNER JOIN T_DICTIONARYITEMBASE_OSSZES kozterulet ON kozterulet.Id = C_KOZTERULETJELLEGE AND kozterulet.C_TANEVID = @pTanevId
	WHERE
		cim.TOROLT = 'F'
		AND cim.C_TANEVID = @pTanevId
  ORDER BY
    (SELECT 1)
    --AND Gondviselo.C_ISTORVENYESKEPVISELO = 'T'
  
  
/*TANTARGY ERTEKELESEK*/
	SELECT DISTINCT
		 tanulo.Id                  tanuloID
    ,TARGY.C_NEV					      TargyNev
		,Tanar.C_NYOMTATASINEV			TanarNev
    ,JEGY.C_NAME						    Ertekeles
	FROM T_TANULOCSOPORT_OSSZES TANULOCSOPORT
    INNER JOIN T_TANULOERTEKELES_OSSZES ERTEKELES ON ERTEKELES.C_TANULOID = TANULOCSOPORT.C_TANULOID
    INNER JOIN #students tanulo ON ERTEKELES.C_TANULOID = tanulo.Id
    INNER JOIN T_DICTIONARYITEMBASE_OSSZES JEGY ON ERTEKELES.C_OSZTALYZAT = JEGY.ID
	  INNER JOIN T_TANTARGY_OSSZES TARGY ON ERTEKELES.C_TANTARGYID = TARGY.ID
    INNER JOIN T_FELHASZNALO_OSSZES Tanar ON Tanar.Id = ERTEKELES.C_ERTEKELOID
	WHERE ERTEKELES.C_ERTEKELESTIPUSA = 1519 
    AND TANULOCSOPORT.C_OSZTALYCSOPORTID = @pOsztalyId


/*MULASZTAS ÖSSZESEN*/
SELECT 
		 DATEPART(MONTH, Datum)	  Honap
		 ,TantargyId			        Id
		 ,Igazolt				          IgazoltE
		 ,TanuloId				        TanuloId
		 ,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(@pTanevId, @pOsztalyId, @pIskolaErdekuSzamit) TanulokMulasztasai
		INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.Id = TanulokMulasztasai.TantargyId
		INNER JOIN T_TANULOCSOPORT_OSSZES TanuloCsoport ON 
						TanuloCsoport.C_OSZTALYCSOPORTID = TanulokMulasztasai.OsztalyCsoportId 
					AND TanuloCsoport.C_TANULOID = TanulokMulasztasai.TanuloId
					AND TanuloCsoport.C_BELEPESDATUM <= TanulokMulasztasai.Datum 
					AND (TanuloCsoport.C_KILEPESDATUM IS NULL OR TanuloCsoport.C_KILEPESDATUM >= TanulokMulasztasai.Datum)
					AND TanuloCsoport.TOROLT = 'F'

SELECT 
		[9E]+[10E]+[11E]+[12E]+[1E]+[2E]+[3E]+[4E]+[5E]+[6E] OsszesenE
		,[9G]+[10G]+[11G]+[12G]+[1G]+[2G]+[3G]+[4G]+[5G]+[6G] OsszesenG
	FROM #students s
		LEFT JOIN (SELECT * FROM (SELECT Id, TanuloId, ElmeletGyakorlat FROM #mulasztasTmp WHERE Tipus = 1500) a 
						PIVOT (COUNT(ID) FOR ElmeletGyakorlat IN ([9E], [10E], [11E], [12E], [1E], [2E], [3E], [4E], [5E], [6E],
													   [9G], [10G], [11G], [12G], [1G], [2G], [3G], [4G], [5G], [6G]))piv )ni on ni.TanuloId=s.Id
		LEFT JOIN (SELECT COUNT(Id) FelevG, TanuloId FROM #mulasztasTmp WHERE  Tipus = 1500 AND Datum <= @FelevVege AND isGyakorlat = 'T' GROUP BY TanuloId) felevG on felevG.TanuloId=s.id
		LEFT JOIN (SELECT COUNT(Id) FelevE, TanuloId FROM #mulasztasTmp WHERE  Tipus = 1500 AND Datum <= @FelevVege AND isGyakorlat = 'F' GROUP BY TanuloId) felevE on felevE.TanuloId=s.id     
 
 
 /*IGAZOLATLAN MULASZTAS*/
 SELECT 
		[9E]+[10E]+[11E]+[12E]+[1E]+[2E]+[3E]+[4E]+[5E]+[6E] OsszesenE
		,[9G]+[10G]+[11G]+[12G]+[1G]+[2G]+[3G]+[4G]+[5G]+[6G] OsszesenG
	FROM #students s
		LEFT JOIN (SELECT * FROM (SELECT Id, ElmeletGyakorlat, TanuloId, IgazoltE, Tipus FROM #mulasztasTmp) a PIVOT (COUNT(ID) FOR ElmeletGyakorlat IN ([9E], [10E], [11E], [12E], [1E], [2E], [3E], [4E], [5E], [6E],
													   [9G], [10G], [11G], [12G], [1G], [2G], [3G], [4G], [5G], [6G]))piv WHERE IgazoltE = 'F' AND Tipus = 1500 )ni on ni.TanuloId=s.Id
		LEFT JOIN (SELECT COUNT(Id) FelevG, TanuloId FROM #mulasztasTmp WHERE  Tipus = 1500 AND IgazoltE = 'F' AND Datum <= @FelevVege AND isGyakorlat = 'T' GROUP BY TanuloId) felevG on felevG.TanuloId=s.id
		LEFT JOIN (SELECT COUNT(Id) FelevE, TanuloId FROM #mulasztasTmp WHERE  Tipus = 1500 AND IgazoltE = 'F' AND Datum <= @FelevVege AND isGyakorlat = 'F' GROUP BY TanuloId) felevE on felevE.TanuloId=s.id

/*TANULO FELMENTESEI*/
SELECT 
			 ISNULL(mentesseg.tantargyNev, '-')                        Tantargy
			,ISNULL(mentesseg.mentessegOka, '')                        MentessegOka
			,ISNULL(IIF(mentesseg = '', ''
			,LEFT(mentesseg, LEN(mentesseg)- 1)),' ')                  Mentesseg 
	FROM #students s
	LEFT JOIN  (SELECT DISTINCT 
								mentesseg.C_TANULOID tanuloId
								, IIF(t.C_NEV <> C_NEVNYOMTATVANYBAN AND C_NEVNYOMTATVANYBAN IS NOT NULL, C_NEVNYOMTATVANYBAN + ' (' + t.C_NEV + ')', t.C_NEV) tantargyNev
								, mentesseg.C_MENTESSEGOKA  + ' ' + ISNULL('(' + dbo.fnGetDokumentumDatumFormatum(C_KEZDETE) + ' - ', '') + ISNULL(dbo.fnGetDokumentumDatumFormatum(C_VEGE) + ')', IIF(C_KEZDETE IS NULL, '', ')' )) mentessegOka
								, IIF(mentesseg.C_ERTEKELESMENTESITES = 'T', 'Értékelésmentesség, ', '') + IIF(mentesseg.C_ORAMENTESITES = 'T', 'Óramentesség, ', '') as mentesseg 
				FROM T_TANULOMENTESSEG_OSSZES mentesseg
					INNER JOIN T_TANTARGY_OSSZES t on t.ID=mentesseg.C_TANTARGYID
					INNER JOIN #students s ON s.ID = mentesseg.C_TANULOID 
				WHERE 
					mentesseg.TOROLT='F' 
					AND mentesseg.C_TANEVID=@pTanevId
				) mentesseg ON s.ID=mentesseg.TANULOID
        
/*TANTESTÜLET ZÁRADÉKA*/
SELECT DISTINCT
    ISNULL(C_ZARADEK, '-')       Feljegyzes
  FROM T_TANULOCSOPORT_OSSZES
WHERE
  C_TANULOID = @pTanuloId
 
END

GO
      