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

CREATE PROCEDURE [dbo].[uspGetTanuloszerzodes]
  @pOsztalyId  INT,
  @pIntezmenyId  INT,
  @pTanevId  INT,
  @pTanuloIdList nvarchar(max)
AS
BEGIN

  SET NOCOUNT ON;
     
  CREATE TABLE #Tanulok (Id int PRIMARY KEY)
  INSERT INTO #Tanulok
  SELECT CAST(value as int) FROM string_split(@pTanuloIdList, ',')
  
/*TANULO*/
  SELECT
     t.ID AS tanuloId
    ,f.C_NYILVANTARTASISZAM AS torzslapSzam
    ,f.C_OKTATASIAZONOSITO AS oktAzon
    ,f.C_TAJSZAM AS tajSzam
    ,f.C_ANYJANEVE AS anyjaNeve
    ,f.C_SZULETESIHELY AS szulHely
    ,dbo.fnGetDokumentumDatumFormatum(f.C_SZULETESIDATUM) AS szulIdo
    ,f.C_NYOMTATASINEV AS tanuloNeve
    ,f.C_SZULETESINEV AS szuletesiNev
    ,d.C_NAME AS allampolgarsaga
    ,ISNULL(Cim.Cim, '') AS  tanuloCimText
    ,ISNULL(Email.C_EMAILCIM, '') AS  tanuloEmailCim
    ,ISNULL(Telefon.C_TELEFONSZAM, '') AS  tanuloTelefonszam
    ,IIF(t.C_SZAKKEPESITESSZAMA IS NOT NULL, 'van, '
    + 'OKJ száma: ............., megnevezése:   ', 'nincs') AS okj
    ,ISNULL(g.GondviseloNeve, '') AS GondviseloNeve
    ,ISNULL(g.GondviseloCime, '') AS GondviseloCime
    ,ISNULL(g.GondviseloTelSzam, '') AS GondviseloTelSzam
    ,ISNULL(g.GondviseloEmail, '') AS GondviseloEmail
  FROM T_TANULO_OSSZES t
    INNER JOIN #Tanulok Tanulok ON t.ID = Tanulok.Id              
    LEFT JOIN (SELECT DISTINCT TanuloId, Cim, IsAlapertelmezett FROM fnGetDokumentumTanuloOrGondviseloCim (0, @pTanevId, @pOsztalyId, NULL, NULL)) Cim on Cim.TanuloId = t.ID
    LEFT JOIN (
                SELECT 
                   g.C_NEV AS GondviseloNeve
                  ,c.C_IRANYITOSZAM + ' ' + c.C_VAROS + ', ' + c.C_KOZTERULET + ' ' + c.C_KOZTERULETJELLEGENEV + ' ' + c.C_HAZSZAM + '.' + ' ' + ISNULL(c.C_EMELET + '/', ' ') + ISNULL(c.C_AJTO, ' ') AS GondviseloCime
                  ,c.C_ALAPERTELMEZETT AS GondviseloCimeAlapertelmezett
                  ,t.C_TELEFONSZAM AS GondviseloTelSzam
                  ,e.C_EMAILCIM AS GondviseloEmail
                  ,g.C_TANULOID AS TanuloId
                  ,g.C_ISTORVENYESKEPVISELO AS TorvenyesKepviselo
                  ,g.CREATED AS GondviseloCreated
                FROM T_GONDVISELO_OSSZES g
                  LEFT JOIN T_CIM_OSSZES c ON c.C_GONDVISELOID = g.ID AND c.TOROLT = 'F'
                  LEFT JOIN T_TELEFON_OSSZES t ON t.C_GONDVISELOID = g.ID AND t.TOROLT = 'F' AND t.C_ALAPERTELMEZETT = 'T'
                  LEFT JOIN T_EMAIL_OSSZES e ON e.C_GONDVISELOID = g.ID AND e.TOROLT = 'F' AND e.C_ALAPERTELMEZETT = 'T'
                WHERE g.C_TANEVID = @pTanevId
                  AND g.TOROLT = 'F'
    ) AS g ON g.TanuloId = t.ID
    LEFT JOIN T_EMAIL_OSSZES Email ON Email.C_FELHASZNALOID = t.ID
      AND Email.C_TANEVID = @pTanevId
      AND Email.TOROLT = 'F'
      AND Email.C_ALAPERTELMEZETT = 'T'
      AND Email.C_GONDVISELOID IS NULL
    LEFT JOIN T_TELEFON_OSSZES Telefon ON Telefon.C_FELHASZNALOID = t.ID
      AND Telefon.C_TANEVID = @pTanevId
      AND Telefon.TOROLT = 'F'
      AND Telefon.C_ALAPERTELMEZETT= 'T'
      AND Telefon.C_GONDVISELOID IS NULL
    INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = t.ID 
      AND f.TOROLT = 'F'
    INNER JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.id=f.C_ALLAMPOLGARSAGA 
      AND d.C_TANEVID = f.C_TANEVID
      AND d.TOROLT = 'F'
  WHERE t.TOROLT = 'F'
  ORDER BY g.TorvenyesKepviselo DESC, g.GondviseloCreated ASC, g.GondviseloCimeAlapertelmezett DESC, Cim.IsAlapertelmezett DESC
    
/*INTEZMENYADATOK*/
  SELECT DISTINCT
     INTEZMENY.C_INTEZMENYID AS intezmenyId
    ,INTEZMENY.C_NEV AS Nev
    ,INTEZMENY.C_IGAZGATONEVE AS IgazgatoNev
    ,dbo.fnGetDokumentumIntezmenyCime (@pTanevId) AS IntezmenyCim
    ,INTEZMENY.C_TELEFONSZAM AS IntezmenyTelefonszam
    ,INTEZMENY.C_EMAILCIM AS IntezmenyEmail
    ,INTEZMENY.C_OMKOD AS OktAzon
    ,TANEV.C_NEV
  INTO #IntemenyAdatok
  FROM T_TANEV_OSSZES TANEV
    INNER JOIN T_INTEZMENYADATOK_OSSZES INTEZMENY ON TANEV.ID = INTEZMENY.C_TANEVID AND INTEZMENY.TOROLT = 'F'
  WHERE TANEV.ID = @pTanevId
    AND TANEV.TOROLT = 'F'
    AND INTEZMENY.C_INTEZMENYID = @pIntezmenyId
  
  CREATE TABLE #Osztalyok (Id int, FeladatellatasiHelyId int);
  INSERT INTO #Osztalyok
  SELECT DISTINCT C_OSZTALYCSOPORTID, C_FELADATELLATASIHELYID 
  FROM T_TANULOCSOPORT_OSSZES tcs
  INNER JOIN #Tanulok Tanulok ON Tanulok.Id = tcs.C_TANULOID
  INNER JOIN T_OSZTALY_OSSZES o ON o.ID = tcs.C_OSZTALYCSOPORTID AND o.TOROLT = 'F'
  INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = o.ID 
    AND ocs.C_FELADATKATEGORIAID = 7553 /*OktNevelesiKategoriaEnum.Alapkepzes*/ 
    AND ocs.TOROLT = 'F'
  WHERE tcs.TOROLT = 'F'
    AND tcs.C_TANEVID = @pTanevId

 /*TAGINTEZMENYADATOK*/
  SELECT DISTINCT
     TAGINTEZMENY.C_INTEZMENYID AS intezmenyId
    ,TAGINTEZMENY.C_NEV AS TagintezmenyNev                    
    ,TAGINTEZMENY.C_IRANYITOSZAM + ' ' + TAGINTEZMENY.C_VAROS + ', ' 
    + TAGINTEZMENY.C_KOZTERULETNEV + ' ' + TAGINTEZMENY.C_KOZTERULETJELLEGENEV + ' '
    + TAGINTEZMENY.C_HAZSZAM
    + ISNULL(', ' + TAGINTEZMENY.C_EMELET + '. EMELET', '') 
    + ISNULL(', ' + TAGINTEZMENY.C_AJTO + '. AJTÓ', '') AS TagintezmenyCim
    INTO #TagintezmenyAdatok
  FROM T_TANEV_OSSZES TANEV 
    INNER JOIN T_FELADATELLATASIHELY_OSSZES feh ON feh.C_TANEVID = TANEV.ID AND feh.TOROLT = 'F' 
    INNER JOIN #Osztalyok o ON o.FeladatellatasiHelyId = feh.ID
    INNER JOIN T_MUKODESIHELY_OSSZES TAGINTEZMENY ON TAGINTEZMENY.ID = feh.C_MUKODESIHELYID AND TAGINTEZMENY.TOROLT = 'F'
  WHERE TANEV.ID = @pTanevId
    AND TANEV.TOROLT = 'F'
    AND TAGINTEZMENY.C_INTEZMENYID = @pIntezmenyId

/*==============INTÉZMÉNY/TAGINTÉZMÉNY==================*/   
  SELECT DISTINCT 
  *   
  FROM #IntemenyAdatok intezmeny
  INNER JOIN #TagintezmenyAdatok tagintezmeny ON intezmeny.intezmenyId = tagintezmeny.intezmenyId

/*BESOROLAS*/
  SELECT DISTINCT 
     TANCSOP.C_TANULOID AS tanuloId 
    ,OKTATASINEVELESIFELADAT.C_NAME AS FeladatEllatasiHely
    ,NappaliRend.C_NAME AS NappaliRend
    ,munkarend.C_NAME AS Munkarend
    ,EVFOLYAM.C_NAME_1 AS Evfolyam
  FROM T_TANULOCSOPORT_OSSZES TANCSOP
    INNER JOIN #Tanulok Tanulok ON TANCSOP.C_TANULOID = Tanulok.Id
    INNER JOIN T_TANULOTANUGYIADATOK_OSSZES tta ON TANCSOP.ID = tta.C_TANULOCSOPORTID AND tta.TOROLT = 'F'
    INNER JOIN T_OSZTALY_OSSZES OSZTALY ON OSZTALY.ID = TANCSOP.C_OSZTALYCSOPORTID AND OSZTALY.TOROLT = 'F'
    INNER JOIN T_OSZTALYCSOPORT_OSSZES OSZTALYCSOP ON OSZTALYCSOP.ID = OSZTALY.ID AND OSZTALYCSOP.C_FELADATKATEGORIAID = 7553 /*OktNevelesiKategoriaEnum.Alapkepzes*/ AND OSZTALYCSOP.TOROLT = 'F'
    INNER JOIN T_FELADATELLATASIHELY_OSSZES ON T_FELADATELLATASIHELY_OSSZES.ID = OSZTALYCSOP.C_FELADATELLATASIHELYID AND T_FELADATELLATASIHELY_OSSZES.C_TANEVID = OSZTALYCSOP.C_TANEVID AND T_FELADATELLATASIHELY_OSSZES.C_INTEZMENYID = @pIntezmenyId AND T_FELADATELLATASIHELY_OSSZES.TOROLT = 'F'
    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES  NappaliRend ON OSZTALYCSOP.C_KEPZESIFORMA = NappaliRend.ID AND NappaliRend.C_TANEVID = OSZTALYCSOP.C_TANEVID AND NappaliRend.TOROLT = 'F'
    INNER JOIN T_DICTIONARYITEMBASE_OSSZES AS OKTATASINEVELESIFELADAT ON T_FELADATELLATASIHELY_OSSZES.C_OKTATASINEVELESIFELADATTIPUS = OKTATASINEVELESIFELADAT.ID AND OKTATASINEVELESIFELADAT.C_TANEVID = T_FELADATELLATASIHELY_OSSZES.C_TANEVID AND OKTATASINEVELESIFELADAT.TOROLT = 'F'
    INNER JOIN T_DICTIONARYITEMBASE_OSSZES EVFOLYAM ON EVFOLYAM.ID = OSZTALYCSOP.C_EVFOLYAMTIPUSA AND EVFOLYAM.C_TANEVID = OSZTALYCSOP.C_TANEVID AND EVFOLYAM.TOROLT = 'F'
    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES munkarend ON munkarend.ID = tta.C_TANTERVIJELLEGID AND munkarend.C_TANEVID = @pTanevId AND munkarend.TOROLT = 'F'
  WHERE OSZTALYCSOP.C_TANEVID = @pTanevId
    AND TANCSOP.TOROLT = 'F'
    AND TANCSOP.C_TANEVID = @pTanevId

END
GO
