﻿DROP PROCEDURE IF EXISTS [dbo].[sp_GetTanuloiAdatlapAdatok]
GO

CREATE PROCEDURE [dbo].[sp_GetTanuloiAdatlapAdatok]
   @pOsztCsopID int
  ,@pTanevId  int
  ,@pDatum date
AS
BEGIN
  SET NOCOUNT ON;

  CREATE TABLE #JogviszonyVege (
     TanuloId int
    ,BelepesDatum date
    ,KilepesDatum date)
  INSERT INTO #JogviszonyVege
  SELECT
     x.TanuloId AS TanuloId
    ,x.BelepesDatum AS BelepesDatum
    ,x.KilepesDatum AS KilepesDatum
  FROM 
    (SELECT
       TanuloId AS TanuloId
      ,BelepesDatum AS BelepesDatum
      ,ROW_NUMBER() OVER (PARTITION BY TanuloId ORDER BY BelepesDatum DESC ) AS rownumber
      ,KilepesDatum AS KilepesDatum
    FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@pTanevId, @pOsztCsopID, 'T') AS Tanulok
    ) AS x
    WHERE x.rownumber = 1

  DECLARE @DefaultFeladatKategoriaId int = (SELECT C_FELADATKATEGORIAID FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @pOsztCsopID)
  --Fejléc
  SELECT
     T_INTEZMENYADATOK_OSSZES.C_NEV AS IntezmenyNeve
    ,T_INTEZMENYADATOK_OSSZES.C_VAROS AS IntezmenyVaros
    ,dbo.fnGetDokumentumIntezmenyCime(@pTanevId) AS IntezmenyCime
    ,T_INTEZMENYADATOK_OSSZES.C_OMKOD AS OMKod
    ,T_INTEZMENYADATOK_OSSZES.C_TELEFONSZAM AS TELEFON
    ,T_INTEZMENYADATOK_OSSZES.C_EMAILCIM AS EMAILCIM
    ,T_TANEV_OSSZES.C_NEV AS TANEV
    ,o.C_OSZTALYFONOKID AS PartnerID
    ,f.C_NYOMTATASINEV AS OSZTALYFONOK
    ,ocs.C_NEV AS OSZTALYNEV
    ,@pOsztCsopID AS 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 = @pOsztCsopID 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 = @pTanevId

  CREATE TABLE #EmailCimTableTemp (FelhasznaloId INT, EmailCim NVARCHAR(MAX))
  INSERT INTO #EmailCimTableTemp
  SELECT
     TanuloId AS TanuloId
    ,C_EMAILCIM AS C_EMAILCIM
  FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@pTanevId, @pOsztCsopID, 'T') AS tanulo
    INNER JOIN T_EMAIL_OSSZES email ON email.C_FELHASZNALOID = TanuloId AND email.C_GONDVISELOID IS NULL
  WHERE
    email.TOROLT = 'F'
    AND email.C_TANEVID = @pTanevId
    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,'') AS Email
  FROM #EmailCimTableTemp temp

  CREATE TABLE #TelefonszamTableTemp (FelhasznaloId INT, Telefonszam NVARCHAR(MAX))
  INSERT INTO #TelefonszamTableTemp
  SELECT
     TanuloId
    ,C_TELEFONSZAM
  FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@pTanevId, @pOsztCsopID, 'T') tanulo
    INNER JOIN T_TELEFON_OSSZES telefon ON telefon.C_FELHASZNALOID = TanuloId AND telefon.C_GONDVISELOID IS NULL
  WHERE
    telefon.TOROLT = 'F'
    AND telefon.C_TANEVID = @pTanevId
    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,'') AS 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, @pTanevId, @pOsztCsopID, NULL, NULL) btemp
      WHERE
        temp.TanuloId = btemp.TanuloId
      AND temp.CimTipusa = btemp.CimTipusa
      FOR XML PATH(''), TYPE)
    .value('.','NVARCHAR(MAX)'),1,0,'') AS Cim
    ,temp.CimTipusa
  FROM fnGetDokumentumTanuloOrGondviseloCim(0, @pTanevId, @pOsztCsopID, NULL, NULL) temp

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

  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,'') AS Gondviselo
  FROM #GondviselokTableTemp temp

  --Tanulók Adatai
  SELECT DISTINCT
     tta.C_BEIRASINAPLOSORSZAM
    ,tta.C_NAPLOSORSZAM AS NaploSorszam
    ,tta.C_TORZSLAPSZAM AS TorzslapSzam
    ,T_TANEV_OSSZES.C_NEV AS TANEV
    ,T_OSZTALYCSOPORT_OSSZES.C_NEV AS OSZTALYNEV
    ,munkarend.C_NAME AS Munkarend
    ,T_OSZTALYCSOPORT_OSSZES.C_KEPZESIFORMA AS Kepzesiforma
    ,T_FELHASZNALO_OSSZES.C_NYOMTATASINEV AS NEV
    ,gondviselo.Gondviselo AS GONDVISELO
    ,T_FELHASZNALO_OSSZES.C_SZULETESINEV AS SZULETESINEV
    ,T_FELHASZNALO_OSSZES.C_ANYJANEVE ANYJANEVE
    ,T_FELHASZNALO_OSSZES.C_OKTATASIAZONOSITO
    ,T_FELHASZNALO_OSSZES.C_SZULETESIHELY
    ,T_FELHASZNALO_OSSZES.C_SZULETESIORSZAG AS Szuletesiorszag
    ,FORMAT(T_FELHASZNALO_OSSZES.C_SZULETESIDATUM, 'yyyy.MM.dd.') AS C_SZULETESIDATUM
    ,T_FELHASZNALO_OSSZES.C_ALLAMPOLGARSAGA AS Allampolgarsag
    ,T_FELHASZNALO_OSSZES.C_ANYANYELVE AS Anyanyelv
    ,JogviszonyVege.BelepesDatum AS C_NYILVANTARTASKEZDETE
    ,tta.C_TANKOTELEZETT AS 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 AS TartozkodasiHely
    ,telefon.Telefonszam AS C_TELEFONSZAM
    ,email.EmailCim AS C_EMAILCIM
    ,tta.C_BEJARO AS Bejaro
    ,tta.C_SZAKMAIGYAKORLATON AS Szakmaigyak
    ,tta.C_VENDEG AS Vendeg
    ,tta.C_JOGVISZONYATSZUNETELTETO AS Jogviszonyszunetelteto
    ,tta.C_MAGANTANULO AS 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 AS Evismetlo
    ,T_TANULO_OSSZES.C_SZOCIALISTAMOGATAS AS Szoctam
    ,T_TANULO_OSSZES.C_HATRANYOSHELYZETU
    ,T_TANULO_OSSZES.C_VESZELYEZTETETT AS Veszelyeztetett
    ,T_TANULO_OSSZES.C_HALMOZOTTANFOGYATEKOS AS Halmfogyatekos
    ,T_TANULO_OSSZES.C_ETKEZESIKEDVEZMENY
    ,tta.C_TERITESIDIJATFIZETO AS Teriteses
    ,tta.C_TANDIJATFIZETO AS Tandijas
    ,T_TANULO_OSSZES.C_INGYENESTANKONVYELLATASA
    ,tta.C_TANULOSZERZODESES AS Tanszerzodeses
    ,tta.C_POLGARISZERZODESES AS Polgszerzodeses
    ,T_TANULO_OSSZES.C_RENDSZERESGYERMEKVEDELMIKEDV
    ,T_TANULO_OSSZES.C_ALLAMIGONDOZOTT AS Allamigond
    ,T_TANULO_OSSZES.C_KOLLEGIUMIELLATASOS AS Kollegiumi
    ,T_TANULO_OSSZES.C_TARTOSGYOGYKEZELESSZAMA
    ,T_TANULO_OSSZES.C_SAJATOSNEVELESU AS Sajatosnevelesu
    ,T_TANULO_OSSZES.C_SNILETSZAMSULY
    ,T_TANULO_OSSZES.C_SNIKIALLITOINTEZMENY
    ,FORMAT(T_TANULO_OSSZES.C_SNIOKMANYERVENYESSEGKEZDETE, 'yyyy.MM.dd.') AS C_SNIOKMANYERVENYESSEGKEZDETE
    ,T_TANULO_OSSZES.C_BTMPROBLEMAS AS Btmproblemas
    ,T_TANULO_OSSZES.C_BTMLETSZAMSULY
    ,T_TANULO_OSSZES.C_BTMHATAROZATOKMANYSZAM
    ,FORMAT(T_TANULO_OSSZES.C_BTMOKMANYERVENYESSEGKEZDETE, 'yyyy.MM.dd.') AS 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
    ,@pOsztCsopID  AS OsztalyId
    ,JogviszonyVege.KilepesDatum AS JogviszonyVege 
    ,STUFF((SELECT ', ' + Tartalom 
      FROM fnGetDokumentumTanulokFeljegyzesei(@pTanevId, @pOsztCsopID, null) 
      WHERE TanuloId = T_FELHASZNALO_OSSZES.ID
        AND Tipusa = 1545 --KRETA2-3028
      FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,2,'') AS Bejegyzes
      ,ISNULL(tta.C_ELOZOINTEZMENY, T_TANULO_OSSZES.C_ELOZOINTEZMENY) AS ElozoIntezmeny
  FROM T_FELHASZNALO_OSSZES
    INNER JOIN T_TANULOCSOPORT_OSSZES on T_TANULOCSOPORT_OSSZES.C_TANULOID = T_FELHASZNALO_OSSZES.ID AND T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID = @pOsztCsopID
    INNER JOIN T_TANULOTANUGYIADATOK_OSSZES tanugy ON tanugy.C_TANULOCSOPORTID = T_TANULOCSOPORT_OSSZES.ID AND tanugy.TOROLT = 'F'
    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES munkarend ON munkarend.ID = tanugy.C_TANTERVIJELLEGID AND munkarend.C_TANEVID = @pTanevId AND munkarend.TOROLT = 'F'
    INNER JOIN T_TANULO_OSSZES on T_TANULO_OSSZES.ID = T_FELHASZNALO_OSSZES.ID
    INNER 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 (@pOsztCsopID, @pDatum) tta ON tta.TanuloId=T_FELHASZNALO_OSSZES.ID
    INNER 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 = @pTanevId
    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES maganTanuloOk ON tta.C_MAGANTANULOSAGANAKOKAID = maganTanuloOk.ID AND maganTanuloOk.C_TANEVID = @pTanevId 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 = T_TANULOCSOPORT_OSSZES.C_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
      ,o.C_AGAZATUJSZKTTIPUSID AS UjSzktAgazat
      ,o.C_SZAKMATIPUSID AS UjSzktSzakma
      ,o.C_SZAKMAIRANYTIPUSID AS UjSzktSzakmairany
      ,o.C_TANULMANYITERULETNKTTIPUSID AS NktTanulmanyiTerulet
      ,o.C_SZAKKEPESITESNKTTIPUSID AS NktSzakkepesites
      ,o.C_SZAKIRANYNKTTIPUSID AS NktSzakirany
      ,ocs.C_KERESZTFELEVES  OJCSJKeresztfeleves
      ,ocs.C_VEGZOSEVFOLYAM  CSJVegzosEvfolyamu
      ,ocs.C_ISTECHNIKAI  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 = @pOsztCsopID

END

GO
