DROP PROCEDURE IF EXISTS [dbo].[uspGetTanulokTantargyaiEsPedagogusaiExcelExport]
GO

CREATE PROCEDURE [dbo].[uspGetTanulokTantargyaiEsPedagogusaiExcelExport]
   @pTanevId int = NULL
  ,@pFeladatkategoriaId int = NULL
  ,@pDatum datetime = NULL
  ,@pAmiKategoriaId int = NULL

AS BEGIN
  SET NOCOUNT ON;

  DECLARE
     @sql nvarchar(max) = ''

  SET @sql += N'
  SELECT
   felhasznalotanulo.C_ELOTAG AS ''Előtag''
  ,felhasznalotanulo.C_VEZETEKNEV AS ''Vezetéknév''
  ,felhasznalotanulo.C_UTONEV AS ''Utónév''
  ,felhasznalotanulo.C_OKTATASIAZONOSITO AS ''Oktatási azonosító''
  ,osztalycsoport.C_NEV AS ''Osztály / Csoport''
  ,tantargy.C_NEV AS ''Tantárgy''
  ,felhasznalotanar.C_NYOMTATASINEV AS ''Pedagógus''
  ,felhasznalotanar.C_OKTATASIAZONOSITO AS ''Pedagógus oktatási azonosító'''

  IF @pFeladatkategoriaId IS NOT NULL AND @pFeladatkategoriaId = @pAmiKategoriaId BEGIN
    SET @sql += N'
    ,foglalkozas.C_ORASZAM AS ''Heti óraszám''
    ,IIF(foglalkozas.C_ISOSSZEVONTORA = ''F'', ''Nem'', IIF(foglalkozas.C_ISOSSZEVONTORA = ''T'', ''Igen'', '''')) AS ''TTF óraszám korrekció''
    ,fotargy.C_NAME AS ''Főtárgy''
    ,tagozat.C_NAME AS ''Tagozat''
    ,tantargykotelezoseg.C_NAME AS ''Tantárgy kötelezőség''
    ,evfolyamtipus.C_NAME AS ''Évfolyam típus'''
  END

  SET @sql += N'
  FROM T_TANULO_OSSZES tanulo
    INNER JOIN T_FELHASZNALO_OSSZES felhasznalotanulo ON felhasznalotanulo.ID = tanulo.ID 
      AND felhasznalotanulo.TOROLT = ''F'' 
      AND tanulo.C_ALTANEVID = @pTanevId
    INNER JOIN T_TANULOCSOPORT_OSSZES tancsop ON tancsop.C_TANULOID = tanulo.ID AND tancsop.C_BELEPESDATUM <=  CONVERT(date, @pDatum) AND (C_KILEPESDATUM > CONVERT(date, @pDatum) OR C_KILEPESDATUM IS NULL)
      AND tancsop.TOROLT = ''F'' 
      AND tancsop.C_TANEVID = @pTanevId
    INNER JOIN T_OSZTALYCSOPORT_OSSZES osztalycsoport ON osztalycsoport.ID = tancsop.C_OSZTALYCSOPORTID 
      AND osztalycsoport.TOROLT = ''F'' 
      AND osztalycsoport.C_TANEVID = @pTanevId
    INNER JOIN T_FOGLALKOZAS_OSSZES foglalkozas ON foglalkozas.C_OSZTALYCSOPORTID = osztalycsoport.ID 
      AND foglalkozas.TOROLT = ''F'' 
      AND foglalkozas.C_TANEVID = @pTanevId
    INNER JOIN T_TANTARGY_OSSZES tantargy ON tantargy.ID = foglalkozas.C_TANTARGYID 
      AND tantargy.TOROLT = ''F'' 
      AND tantargy.C_TANEVID = @pTanevId
    INNER JOIN T_FELHASZNALO_OSSZES felhasznalotanar ON felhasznalotanar.ID = foglalkozas.C_TANARID 
      AND felhasznalotanar.TOROLT = ''F'' 
      AND felhasznalotanar.C_TANEVID = @pTanevId'
  
  IF @pFeladatkategoriaId IS NOT NULL AND @pFeladatkategoriaId = @pAmiKategoriaId BEGIN
    SET @sql += N'
    LEFT JOIN T_FOGLALKOZASAMITANULO_OSSZES fat ON fat.C_FOGLALKOZASID = foglalkozas.ID 
      AND fat.C_TANULOID = tanulo.ID 
      AND fat.C_TANEVID = @pTanevId 
      AND fat.TOROLT = ''F''
    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES fotargy ON fotargy.ID = fat.C_AMIFOTARGYID 
      AND fotargy.C_TANEVID = fat.C_TANEVID 
      AND fotargy.TOROLT = ''F''
    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES tagozat on tagozat.ID = fat.C_AMITAGOZATID 
      AND tagozat.C_TANEVID = fat.C_TANEVID 
      AND tagozat.TOROLT = ''F''
    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES tantargykotelezoseg on tantargykotelezoseg.ID = fat.C_AMITANTARGYKOTELEZOSEGID 
      AND tantargykotelezoseg.C_TANEVID = fat.C_TANEVID 
      AND tantargykotelezoseg.TOROLT = ''F''
    LEFT JOIN T_DICTIONARYITEMBASE evfolyamtipus ON evfolyamtipus.ID = fat.C_EVFOLYAMTIPUSID 
      AND evfolyamtipus.C_TANEVID = fat.C_TANEVID 
      AND evfolyamtipus.TOROLT = ''F'''
  END

  SET @sql += N'
  WHERE tanulo.c_ALTANEVID = @pTanevId
    AND (osztalycsoport.C_FELADATKATEGORIAID = @pFeladatkategoriaId OR @pFeladatkategoriaId IS NULL)
  ORDER BY felhasznalotanulo.C_VEZETEKNEV, felhasznalotanulo.C_UTONEV'

  EXEC sp_executesql @sql, N'
   @pTanevId int = NULL
  ,@pFeladatkategoriaId int = NULL
  ,@pDatum datetime = NULL
  ,@pAmiKategoriaId int = NULL'
  ,@pTanevId = @pTanevId
  ,@pFeladatkategoriaId = @pFeladatkategoriaId
  ,@pDatum = @pDatum
  ,@pAmiKategoriaId = @pAmiKategoriaId

END
GO