﻿DROP PROCEDURE IF EXISTS [dbo].[uspGetHaladasiNaploAdatok]
GO
CREATE PROCEDURE [dbo].[uspGetHaladasiNaploAdatok]
  @tanevID int,
  @osztalyID int = null,
  @tanarID int = null,
  @feladatKategoriaId int = null
AS
BEGIN
DECLARE @cTantargyId  INT = 0
DECLARE @cOsztalyCsoportId INT = 0
DECLARE @cTanarId INT = 0
DECLARE @foglalkozasNev VARCHAR(255)
 
  SET NOCOUNT ON;
  CREATE TABLE #Foglalkozasok (
     Nev nvarchar(511) COLLATE Hungarian_CI_AI
    ,C_TANTARGYID int
    ,C_OSZTALYCSOPORTID int
    ,C_INTEZMENYID int
    ,C_TANARID int
    ,VanTTF char(1)
  )

  INSERT INTO #Foglalkozasok
  SELECT DISTINCT
     ocs.C_NEV + ' - ' + tt.C_NEV AS Nev
    ,tn.C_TANTARGYID
    ,tn.C_OSZTALYCSOPORTID
    ,tn.C_INTEZMENYID
    ,tn.C_TANARID AS C_TANARID
    ,IIF(f.ID IS NULL,'F','T') AS VanTTF
  FROM T_TANITASIORA_OSSZES tn
    LEFT JOIN T_FOGLALKOZAS_OSSZES f ON f.C_TANTARGYID = tn.C_TANTARGYID AND f.C_OSZTALYCSOPORTID = tn.C_OSZTALYCSOPORTID AND f.C_TANARID = tn.C_TANARID AND f.TOROLT = 'F'
    INNER JOIN T_OSZTALYCSOPORT_OSSZES OCS on OCS.ID = tn.C_OSZTALYCSOPORTID and OCS.TOROLT = 'F' AND (OCS.C_FELADATKATEGORIAID = @feladatKategoriaId OR @feladatKategoriaId IS NULL)
    INNER JOIN T_TANTARGY_OSSZES tt on tt.ID = tn.C_TANTARGYID and tt.TOROLT = 'F'
    LEFT JOIN (SELECT ID FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@osztalyID, @tanevID, 0)) kocs ON kocs.ID = ocs.ID AND @osztalyID IS NOT NULL
  WHERE tn.TOROLT = 'F'
    AND tn.C_TANEVID = @tanevID
    AND (
    ((@osztalyID IS NOT NULL) AND (kocs.ID IS NOT NULL))
    OR
    ((@tanarID IS NOT NULL) AND tn.C_TANARID = @tanarID)
    )
  ORDER BY VanTTF DESC, Nev ASC

  SELECT 
    IIF(fog.VanTTF = 'F','Egyedi-','') + Nev + ' - ' + felh.C_NYOMTATASINEV AS Nev
    ,fog.VanTTF AS VanTTF
  FROM #Foglalkozasok fog
    INNER JOIN T_FELHASZNALO_OSSZES felh on fog.C_TANARID = felh.ID
  ORDER BY fog.VanTTF DESC, Nev ASC
  
  DECLARE @sorszamTable TABLE (
     tanitasiOraId int-- PRIMARY KEY
    ,evesOraszam int
    ,foglalkozasId int
  )  
  
  INSERT INTO @sorszamTable (tanitasiOraId, evesOraszam)
  SELECT s.Id, s.EvesSorszam FROM #Foglalkozasok f
  CROSS APPLY dbo.fnGetEvesOraszamLista(
     f.C_TANTARGYID
    ,f.C_OSZTALYCSOPORTID
    ,f.C_TANARID
    ,GETDATE()
    ,f.C_INTEZMENYID
    ,@tanevID
  )s


  DECLARE foglalkozasCursor CURSOR FOR 
  SELECT C_TANTARGYID, C_OSZTALYCSOPORTID, C_TANARID FROM #Foglalkozasok ORDER BY VanTTF DESC, Nev ASC
      
  OPEN foglalkozasCursor
  FETCH NEXT FROM foglalkozasCursor into @cTantargyId, @cOsztalyCsoportId, @cTanarId
  
  WHILE @@FETCH_STATUS = 0 BEGIN 
    SELECT DISTINCT
      CASE
        WHEN tn.C_MEGTARTOTT = 'T' THEN CAST(s.evesOraszam AS nvarchar(max))
        ELSE '-'
       END AS OraSorszam
      ,fh.C_NYOMTATASINEV AS TanarNev
      ,fh.C_OKTATASIAZONOSITO AS TanarOktAzon
      ,tn.C_TEMA AS Tema
      ,IIF(tn.C_HELYETTESITOTANARID IS NOT NULL, 'T', 'F') AS Helyettesitett
      ,FORMAT(tn.C_DATUM, 'yyyy.MM.dd.') AS Datum
      ,tn.C_ORASZAM AS OraSzam
      ,tn.C_MEGJEGYZES AS Megjegyzes
      ,ISNULL(tn.C_HAZIFELADAT,hf.C_FELADATSZOVEGE) AS HaziFeladat
      ,tn.C_TULORA AS TulOra
      ,tn.C_TAMOPORA AS TamopOra
      ,tn.C_NEMSZAKRENDSZERUORA AS NemszakrendszeruOra
      ,tn.C_IKTTANORA AS IktOra
      ,tn.C_NEMZETISEGIORA AS NemzetisegiOra
      ,tn.C_ISFELNOTTOKTATASISZERZODES AS IsFelnottoktatasiSzerzodes
      ,tn.C_MINDENNAPOSTESTNEVELES AS TestnevelesOra
      ,tn.C_IPRTANORA AS IprOra
      ,tn.C_DIFFERENCIALT AS DifferencialtOra
      ,tn.C_KOOPERATIV AS KooperativOra
      ,tn.C_MERES AS MeresOra
      ,tn.C_DRAMA AS DramaOra
      ,tn.C_PARHUZAMOSORA AS ParhuzamosOra
      ,tn.C_TIOP12 AS TiopOra
      ,tn.C_VEKOP73317 AS VEKOP73317
      ,tn.C_KAPORA AS KAPOra
      ,tn.C_BONTOTT AS Bontott
      ,tn.C_MULTIKULTURALISORA AS Multikulturalis
      ,tn.C_EFOP32317 AS EFOP32317
      ,tn.C_GINOP623 AS GINOP623
      ,tn.C_EFOP31716 AS EFOP31716
      ,tn.C_EFOP33717 AS EFOP33717
      ,tn.C_TIOP1111212012001 AS TIOP1111212012001
      ,tn.C_EFOP23517 AS EFOP23517
      -- Komplex alapprogram adatok
      ,tn.C_ISDFHTORA AS DFHTora
      ,tn.C_ISDFHTKIPORA AS DFHTKIPora
      ,tn.C_KIPORA KIPOra
      ,tn.C_ISTEORAD AS TEorad
      ,tn.C_ISRAHANGOLODAS AS Rahangolodas
      ,tn.C_KOMPLEXORA AS Komplexora
      ,tn.C_ISDIGITALISALAPUALPROGRAM AS DigitalisAlapuAlprogram
      ,tn.C_ISTESTMOZGASALAPUALPROGRAM AS TestmozgasAlapuAlprogram
      ,tn.C_ISELETGYAKORLATALAPUALPROGRA AS EletGyakorlatAlapuAlprogram
      ,tn.C_ISMUVESZETALAPUALPROGRAM AS MuveszetAlapuAlprogram
      ,tn.C_ISLOGIKAALAPUALPROGRAM AS LogikaiAlapuAlprogram
    FROM T_TANITASIORA_OSSZES tn
      INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ID = tn.C_TANARID
      LEFT JOIN @sorszamTable s ON s.tanitasiOraId = tn.ID
      LEFT JOIN T_HAZIFELADATOK_OSSZES hf ON hf.C_TANITASIORAID = tn.ID AND hf.TOROLT = 'F'
    WHERE 
      tn.TOROLT = 'F'
      AND tn.C_TANEVID = @tanevID
      AND tn.C_TANARID = @cTanarId
      AND tn.C_TANTARGYID = @cTantargyId
      AND tn.C_OSZTALYCSOPORTID = @cOsztalyCsoportId
    ORDER BY Datum
    
    FETCH NEXT FROM foglalkozasCursor 
    INTO @cTantargyId, @cOsztalyCsoportId, @cTanarId
  END
  
  CLOSE foglalkozasCursor
  DEALLOCATE foglalkozasCursor
  
  IF (SELECT COUNT(Nev) FROM #Foglalkozasok) = 0 BEGIN 
    DECLARE @nincsAdat TABLE (
       OraSorszam nvarchar(max)
      ,TanarNev nvarchar(1)
      ,TanarOktAzon nvarchar(1)
      ,Tema nvarchar(1)
      ,Helyettesitett nvarchar(1)
      ,Datum datetime
      ,OraSzam int
      ,Megjegyzes nvarchar(1)
      ,HaziFeladat nvarchar(1)
      ,TulOra char
      ,TamopOra char
      ,NemszakrendszeruOra char
      ,IktOra char
      ,NemzetisegiOra char
      ,TestnevelesOra char
      ,IprOra char
      ,DifferencialtOra char
      ,KooperativOra char
      ,MeresOra char
      ,DramaOra char
      ,ParhuzamosOra char
      ,TiopOra char
      ,VEKOP73317 char
      ,KAPOra char
      ,Bontott char
      ,Multikulturalis char
      ,EFOP32317 char
      ,GINOP623 char
      ,EFOP31716 char
      ,EFOP33717 char
      ,TIOP1111212012001 char
      ,EFOP23517 char
      -- Komplex alapprogram adatok
      ,DFHTora char
      ,DFHTKIPora char
      ,KIPOra char
      ,TEorad char
      ,Rahangolodas char
      ,Komplexora char
      ,DigitalisAlapuAlprogram char
      ,TestmozgasAlapuAlprogram char
      ,EletGyakorlatAlapuAlprogram char
      ,MuveszetAlapuAlprogram char
      ,LogikaiAlapuAlprogram char
    )
    SELECT * FROM @nincsAdat;
  END

  -- Iktatás adatok
  IF @tanarID IS NOT NULL BEGIN
    SELECT 
       f.ID AS PedagogusId
      ,f.C_OKTATASIAZONOSITO AS PedagogusOktAzon
      ,mua.C_FELADATELLATASIHELYID AS FeladatEllatasiHelyId
    FROM T_FELHASZNALO_OSSZES AS f
      LEFT JOIN T_MUNKAUGYIADATOK_OSSZES AS mua ON mua.C_ALKALMAZOTTID = f.ID
    WHERE f.ID = @tanarID
      AND f.C_TANEVID = @tanevID
  END
  IF @osztalyID IS NOT NULL BEGIN
    DECLARE @isCsoport INT = (SELECT COUNT(ID) FROM T_CSOPORT_OSSZES WHERE ID = @osztalyID)
    IF @isCsoport = 0 BEGIN
      SELECT
        ocs.ID AS OsztalyId
        ,o.C_OSZTALYFONOKID AS OsztalyfonokId
        ,ocs.C_EVFOLYAMTIPUSA AS EvfolyamTipusa
        ,ocs.C_FELADATELLATASIHELYID AS FeladatEllatasiHelyId
        ,o.C_TANTERVID AS TantervId
        ,ocs.C_KEPZESIFORMA AS KepzesiForma
        ,o.C_AGAZAT AS Agazat
        ,o.C_SZAKMACSOPORT AS SzakmaCsoport
        ,o.C_SZAKKEPESITES AS Szakkepesites
        ,o.C_RESZSZAKKEPESITES AS Reszszakkepesites
        ,ocs.C_KERESZTFELEVES AS OJCSJKeresztfeleves
        ,ocs.C_VEGZOSEVFOLYAM AS CSJVegzosEvfolyamu
        ,o.C_TECHNIKAIOSZTALY AS OJTechnikaiOsztaly
        ,o.C_NEMZETISEGI AS OJNemzetisegi
        ,o.C_KETTANNYELVU AS OJKettannyelvu
        ,o.C_NYELVIELOKESZITO AS OJNyelviElokeszito
        ,ocs.C_ISGYOGYPEDAGOGIAILOGOPEDIAI AS OJIsGyogypedagogiaiLogopediai
        ,o.C_SPORT AS OJSportOsztaly
        ,o.C_AJPROGRAM AS OJAranyJanosProgram
      FROM T_OSZTALYCSOPORT_OSSZES ocs
        INNER JOIN T_OSZTALY_OSSZES AS o ON ocs.id = o.ID
      WHERE ocs.TOROLT='F' 
        AND ocs.ID = @osztalyId
        AND ocs.C_TANEVID = @tanevId
    END
    ELSE BEGIN
      SELECT 
        ocs.ID AS CsoportId
        ,cs.C_CSOPORTVEZETOID AS CsoportvezetoId
        ,cs.C_TIPUSA  AS  CsoportTipusa
        ,ISNULL(ocs.C_EVFOLYAMTIPUSA, 1296) AS EvfolyamTipusa -- 1296 = Na
        ,ocs.C_FELADATELLATASIHELYID AS FeladatEllatasiHelyId
        ,ocs.C_KERESZTFELEVES AS OJCSJKeresztfeleves
        ,ocs.C_VEGZOSEVFOLYAM AS CSJVegzosEvfolyamu
      FROM T_OSZTALYCSOPORT_OSSZES AS ocs
      INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = ocs.ID
      WHERE ocs.TOROLT = 'F'
        AND ocs.ID = @osztalyID
        AND ocs.C_TANEVID = @tanevID
    END
    SELECT DISTINCT
       felh.ID AS TanarId
      ,felh.C_OKTATASIAZONOSITO AS TanarOktAzon
    FROM #Foglalkozasok fogl
    INNER JOIN T_FELHASZNALO_OSSZES felh ON felh.ID = fogl.C_TANARID
  END

  DROP TABLE #Foglalkozasok
END 

GO