﻿DROP PROCEDURE IF EXISTS uspGetEszkozIgenylesGondviseloRiportExportData 
GO
  CREATE PROCEDURE uspGetEszkozIgenylesGondviseloRiportExportData      
     @pTanevId int
    ,@pIntezmenyId int
    ,@pEvfolyamtipusIds nvarchar (max)
    ,@pGondviseloLetezik char(1) = null
    ,@pGondviseloBelepesLetezik char(1) = null
    ,@pGondviseloTorvenyesKepviselo char(1) = null
    ,@pGondviseloEszkozIgenylesElfogadottASZF char(1) = null
  AS
  BEGIN
    SET NOCOUNT ON;

    CREATE TABLE #EvfolyamtipusIds (EvfolyamtipusId int)

    CREATE TABLE #TanuloNyersAdatok (
         Tanulo nvarchar (255)
        ,TanuloOktatasiAzonositoja nvarchar (20)
        ,Osztaly nvarchar (255)
        ,TanuloOsztalyanakEvfolyama nvarchar (250)
        ,GondviseloLetezik char (1)
        ,GondviseloBelepesLetezik char (1)
        ,GondviseloTorvenyesKepviselo char (1)
        ,GondviseloEszkozIgenylesElfogadottASZF char (1)
      )
      
    IF @pEvfolyamtipusIds IS NOT NULL 
      BEGIN    
        INSERT INTO #EvfolyamtipusIds(EvfolyamtipusId)
        SELECT value FROM STRING_SPLIT(@pEvfolyamtipusIds,',')    
      END

    INSERT INTO #TanuloNyersAdatok  
    SELECT
       felhasznalo.C_NYOMTATASINEV AS Tanulo
      ,felhasznalo.C_OKTATASIAZONOSITO AS TanuloOktatasiAzonositoja
      ,osztalyCsoport.C_NEV AS Osztaly
      ,evfolyamtipusDic.C_NAME_1 AS TanuloOsztalyanakEvfolyama
      ,IIF(gondviselo.ID IS NULL, 'F', 'T') AS GondviseloLetezik
      ,IIF(gondviseloBelepes.ID IS NULL, 'F', 'T') AS GondviseloBelepesLetezik
      ,IIF(gondviselo.C_ISTORVENYESKEPVISELO = 'T', 'T', 'F') AS GondviseloTorvenyesKepviselo
      ,IIF(eszkozIgenyles.C_ISELFOGADOTTASZF = 'T', 'T', 'F') AS GondviseloEszkozIgenylesElfogadottASZF
    FROM
      T_TANULO_OSSZES tanulo
      INNER JOIN T_FELHASZNALO_OSSZES felhasznalo ON 
                                      felhasznalo.ID = tanulo.ID 
                                  AND felhasznalo.TOROLT = 'F' 
                                  AND felhasznalo.C_INTEZMENYID = tanulo.C_ALINTEZMENYID 
                                  AND felhasznalo.C_TANEVID = tanulo.C_ALTANEVID
      INNER JOIN T_TANULOCSOPORT_OSSZES tanuloCsoport ON 
                                        tanuloCsoport.C_TANULOID = tanulo.ID 
                                    AND tanuloCsoport.TOROLT = 'F' 
                                    AND tanuloCsoport.C_INTEZMENYID = tanulo.C_ALINTEZMENYID 
                                    AND tanuloCsoport.C_TANEVID = tanulo.C_ALTANEVID
                                    AND tanuloCsoport.C_TANULOID = tanulo.ID
                                    AND tanuloCsoport.C_BELEPESDATUM <= GETDATE()
                                    AND (tanuloCsoport.C_KILEPESDATUM IS NULL OR tanuloCsoport.C_KILEPESDATUM > GETDATE())
      INNER JOIN T_OSZTALYCSOPORT_OSSZES osztalyCsoport ON 
                                         osztalyCsoport.ID = tanuloCsoport.C_OSZTALYCSOPORTID 
                                     AND osztalyCsoport.TOROLT = 'F' 
                                     AND osztalyCsoport.C_TANEVID = tanuloCsoport.C_TANEVID 
                                     AND osztalyCsoport.C_INTEZMENYID = tanuloCsoport.C_INTEZMENYID
      INNER JOIN T_OSZTALY osztaly ON 
                           osztaly.ID = osztalyCsoport.ID 
                       AND osztaly.TOROLT = 'F' 
                       AND osztaly.C_ALTANEVID = osztalyCsoport.C_TANEVID 
                       AND osztaly.C_ALINTEZMENYID = osztalyCsoport.C_INTEZMENYID
      INNER JOIN T_EVFOLYAMTIPUS_OSSZES evfolyamtipus ON 
                                        evfolyamtipus.ID = osztalyCsoport.C_EVFOLYAMTIPUSA 
                                    AND evfolyamtipus.TOROLT = 'F' 
                                    AND evfolyamtipus.C_ALINTEZMENYID = osztalyCsoport.C_INTEZMENYID 
                                    AND evfolyamtipus.C_ALTANEVID = osztalyCsoport.C_TANEVID
      INNER JOIN #EvfolyamtipusIds validEvfolyamok ON
                                   validEvfolyamok.EvfolyamtipusId = evfolyamtipus.ID
      INNER JOIN T_DICTIONARYITEMBASE evfolyamtipusDic ON 
                                      evfolyamtipusDic.ID = evfolyamtipus.ID 
                                  AND evfolyamtipusDic.TOROLT = 'F' 
                                  AND evfolyamtipusDic.C_TANEVID = evfolyamtipus.C_ALTANEVID 
                                  AND evfolyamtipusDic.C_INTEZMENYID = evfolyamtipus.C_ALINTEZMENYID
      LEFT JOIN T_GONDVISELO_OSSZES gondviselo ON 
                                    gondviselo.C_TANULOID = tanulo.ID 
                                AND gondviselo.C_TANEVID = tanulo.C_ALTANEVID 
                                AND gondviselo.C_INTEZMENYID = tanulo.C_ALINTEZMENYID 
                                AND gondviselo.TOROLT = 'F'
      LEFT JOIN T_FELHASZNALOBELEPES_OSSZES gondviseloBelepes ON 
                                            gondviseloBelepes.C_GONDVISELOID = gondviselo.ID 
                                        AND gondviseloBelepes.TOROLT = 'F' 
                                        AND gondviseloBelepes.C_INTEZMENYID = gondviselo.C_INTEZMENYID 
                                        AND gondviseloBelepes.C_TANEVID = gondviselo.C_TANEVID 
                                        AND gondviseloBelepes.C_BEJELENTKEZESINEV IS NOT NULL            
      LEFT JOIN T_ESZKOZIGENYLES_OSSZES eszkozIgenyles ON 
                                        eszkozIgenyles.C_GONDVISELOID = gondviselo.ID 
                                    AND eszkozIgenyles.C_INTEZMENYID = gondviselo.C_INTEZMENYID 
                                    AND eszkozIgenyles.C_TANEVID = gondviselo.C_TANEVID 
                                    AND eszkozIgenyles.TOROLT = 'F'
    WHERE tanulo.C_ALINTEZMENYID = @pIntezmenyId
      AND tanulo.C_ALTANEVID = @pTanevId 

    SELECT 
       Tanulo
      ,TanuloOktatasiAzonositoja
      ,Osztaly
      ,TanuloOsztalyanakEvfolyama    
    FROM #TanuloNyersAdatok
    GROUP BY Tanulo
            ,TanuloOktatasiAzonositoja
            ,Osztaly
            ,TanuloOsztalyanakEvfolyama
    HAVING (@pGondviseloLetezik IS NULL OR @pGondviseloLetezik = MAX(GondviseloLetezik))
        AND (@pGondviseloBelepesLetezik IS NULL OR @pGondviseloBelepesLetezik = MAX(GondviseloBelepesLetezik))
        AND (@pGondviseloTorvenyesKepviselo IS NULL OR @pGondviseloTorvenyesKepviselo = MAX(GondviseloTorvenyesKepviselo))
        AND (@pGondviseloEszkozIgenylesElfogadottASZF IS NULL OR @pGondviseloEszkozIgenylesElfogadottASZF = MAX(GondviseloEszkozIgenylesElfogadottASZF))

    DROP TABLE #EvfolyamtipusIds
    DROP TABLE #TanuloNyersAdatok

  END
GO
