﻿DROP FUNCTION IF EXISTS fnGetDokumentumTanulokAdatai
GO

CREATE FUNCTION fnGetDokumentumTanulokAdatai (
   @tanevId int
  ,@osztalyCsoportId int
)
RETURNS @tanuloAdatok TABLE (
   TanuloId int
  ,TanuloCsoportId int
  ,Sorszam int
  ,TorzslapSzam varchar(1000)
  ,OktAzon nvarchar(40)
  ,TajSzam nvarchar(18)
  ,AnyjaNeve nvarchar(128)
  ,SzulHely nvarchar(100)
  ,SzulIdo nvarchar(20)--formázás miatt
  ,SocAdat nvarchar(200)
  ,Kepzes nvarchar(510)
  ,TanuloNeve nvarchar(510)
  ,Allampolgarsaga nvarchar(500)
  ,DiakIgazolvanySzam nvarchar(510)
  ,KilepesDatum nvarchar(20) --formázás miatt
  ,BeirasiNaploSorszam nvarchar(100)
  ,AktualisOsztaly nvarchar(200)
  ,AktualisOsztalyId int
  ,AdottOsztaly nvarchar(200)
  ,AdottOsztalyId int
  ,BelepesDatum nvarchar(20) --formázás miatt
)
AS BEGIN

  DECLARE @kategoriaId int = (SELECT C_FELADATKATEGORIAID FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyCsoportId)

  INSERT INTO @tanuloAdatok
  SELECT DISTINCT
    tmp.TanuloId
   ,tmp.TanuloCsoportId
   ,tmp.Sorszam
   ,tmp.TorzslapSzam
   ,tmp.OktAzon
   ,tmp.TajSzam
   ,tmp.AnyjaNeve
   ,tmp.SzulHely
   ,dbo.fnGetDokumentumDatumFormatum(tmp.szulIdo) AS SzulIdo
   ,tmp.SocAdat
   ,tmp.Kepzes
   ,tmp.TanuloNeve
   ,tmp.Allampolgarsaga
   ,tmp.DiakIgazolvanySzam
   ,dbo.fnGetDokumentumDatumFormatum(tmp.KilepesDatum) AS KilepesDatum
   ,tmp.BeirasiNaploSorszam
   ,tmp.AktualisOsztaly
   ,tmp.AktualisOsztalyId
   ,tmp.AdottOsztaly
   ,tmp.AdottOsztalyId
   ,dbo.fnGetDokumentumDatumFormatum(tmp.BelepesDatum) AS BelepesDatum
  FROM (
    SELECT
       OsztalyCsoportTanuloi.TanuloId AS TanuloId
      ,OsztalyCsoportTanuloi.TanuloCsoportId AS TanuloCsoportId
      ,tta.C_NAPLOSORSZAM AS Sorszam
      ,tta.C_TORZSLAPSZAM AS TorzslapSzam
      ,Felhasznalo.C_OKTATASIAZONOSITO AS OktAzon
      ,Felhasznalo.C_TAJSZAM AS TajSzam
      ,Felhasznalo.C_ANYJANEVE AS AnyjaNeve
      ,Felhasznalo.C_SZULETESIHELY AS SzulHely
      ,Felhasznalo.C_SZULETESIDATUM AS SzulIdo
      ,IIF(tta.C_MAGANTANULO = 'T', N'Magántanuló ('
        + ISNULL(MagantanulosagOka.C_NAME, N'-') + N')', N'')
        + IIF(tta.C_JOGVISZONYATSZUNETELTETO = 'T', N', Jogviszony szüneteltetve', N'')
        + IIF(tta.C_SZAKMAIGYAKORLATON = 'T', N', Szakmai gyakorlat', N'')
        + IIF(Tanulo.C_SZOCIALISTAMOGATAS = 'T', N', Szociális támogatás', N'')
        + IIF(tta.C_BEJARO = 'T', N', Bejáró', N'') AS SocAdat
      ,Tanterv.C_NEV AS Kepzes
      ,Felhasznalo.C_NYOMTATASINEV AS TanuloNeve
      ,AllampolgarsagDic.C_NAME AS Allampolgarsaga
      ,Tanulo.C_DIAKIGAZOLVANYSZAM AS DiakIgazolvanySzam
      ,OsztalyCsoportTanuloi.KilepesDatum AS KilepesDatum
      ,tta.C_BEIRASINAPLOSORSZAM AS BeirasiNaploSorszam
      ,dbo.fnGetDokumentumTanuloAktualisOsztaly(OsztalyCsoportTanuloi.TanuloId) AS AktualisOsztaly
      ,dbo.fnGetDokumentumTanuloAktualisOsztalyId(OsztalyCsoportTanuloi.TanuloId) AS AktualisOsztalyId
      ,TanuloOsztaly.OsztalyNev AS AdottOsztaly
      ,TanuloOsztaly.ID AS AdottOsztalyId
      ,OsztalyCsoportTanuloi.BelepesDatum AS BelepesDatum
    FROM T_TANULO_OSSZES Tanulo
      INNER JOIN fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyCsoportId, 'T') OsztalyCsoportTanuloi ON OsztalyCsoportTanuloi.TanuloId = Tanulo.ID
      INNER JOIN T_FELHASZNALO_OSSZES Felhasznalo ON Felhasznalo.ID = Tanulo.ID
        AND Felhasznalo.TOROLT = 'F'
      INNER JOIN T_DICTIONARYITEMBASE_OSSZES AllampolgarsagDic ON AllampolgarsagDic.ID = Felhasznalo.C_ALLAMPOLGARSAGA
        AND AllampolgarsagDic.C_TANEVID = Felhasznalo.C_TANEVID
        AND AllampolgarsagDic.TOROLT = 'F'
      CROSS APPLY (
        SELECT TOP 1
           ID
          ,OsztalyNev
        FROM dbo.fnGetTanuloOsztaly(OsztalyCsoportTanuloi.TanuloId, OsztalyCsoportTanuloi.BelepesDatum, @kategoriaId, 1)
      ) TanuloOsztaly
      LEFT JOIN fnGetOsztalyCsoportTanuloinakTanugyiAdatai(@osztalyCsoportId, DEFAULT) tta ON tta.TanuloId = Tanulo.ID
      LEFT JOIN T_TANTERV_OSSZES AS Tanterv ON Tanterv.ID = tta.C_TANTERVID
        AND Tanterv.TOROLT = 'F'
      LEFT JOIN T_DICTIONARYITEMBASE_OSSZES MagantanulosagOka ON MagantanulosagOka.ID = tta.C_MAGANTANULOSAGANAKOKAID
        AND MagantanulosagOka.C_TANEVID = Felhasznalo.C_TANEVID
        AND MagantanulosagOka.TOROLT = 'F'
    WHERE Tanulo.TOROLT = 'F'
  ) tmp

  RETURN

END
GO
