DROP PROCEDURE IF EXISTS uspSzirStatOktato
GO

CREATE PROCEDURE uspSzirStatOktato
   @pTanevId int
  ,@pIntezmenyid int
AS BEGIN
  
  DECLARE @datum datetime

  SELECT @datum = LEFT(tv.C_NEV, 4) + '1001' FROM T_TANEV tv WHERE ID = @pTanevId

  SELECT 
     fh.ID  AS TanuloIdAlkalmazottId
    ,fh.C_NYOMTATASINEV + ' (' + ISNULL(NULLIF(fh.C_OKTATASIAZONOSITO, ''), '-') + ')' AS AlkalmazottOktatasiAzonosito
    ,ia.C_OMKOD AS IntezmenyOmAzonosito
    ,ia.C_NEV AS IntezmenyNev
    ,ia.C_VAROS AS IntezenyTelepules
    ,ia.C_IRANYITOSZAM AS IntezmenyIrszam
    ,RTRIM(CONCAT(ia.C_KOZTERULETNEV, ' ', ia.C_KOZTERULETJELLEGENEV,' ', ia.C_HAZSZAM, ' ', ia.C_EMELET, ' ', ia.C_AJTO)) AS IntezmenyCim
    ,ISNULL(NULLIF(ia.C_EMAILCIM, ''), '-') AS IntezmenyEmailcim
    ,CONCAT(ia.C_OMKOD, '/', fhely.C_FELADATELLATASIHELYKOD) AS FelhelyAzonosito
    ,mhely.C_NEV AS FelhelyNev
    ,mhely.C_VAROS AS FelhelyTelepules
    ,mhely.C_IRANYITOSZAM AS FelhelyIrszam
    ,RTRIM(CONCAT(mhely.C_KOZTERULETNEV, ' ', mhely.C_KOZTERULETJELLEGENEV,' ', mhely.C_HAZSZAM, ' ', mhely.C_EMELET, ' ', mhely.C_AJTO)) AS FelhelyCim
    ,ISNULL(NULLIF(mhely.C_EMAILCIM, ''), '-') AS FelhelyEmailcim
    ,fhelytip.C_NAME AS FelhelyTipus
    ,IIF(munkaviszony.ID = 6467, 'Nem', munkaviszony.C_NAME) AS AlkalmazottFoMunkaviszonyu
    ,IIF(munkaviszony.ID = 6467, '-', nem.C_NAME) AS AlkalmazottNemFoMunkaviszonyu
    ,IIF(munkaviszony.ID = 6467, '-', CAST(DATEDIFF(YEAR, fh.C_SZULETESIDATUM, @datum) AS nvarchar(3))) AS AlkalmazottKorev
    ,IIF(munkaviszony.ID = 6467, '-', vezetoi.C_NAME) AS AlkalmazottVezetoiMegbizas
    ,REPLACE(IIF(munkaviszony.ID = 6467, '-', munkakor.C_NAME), ' (*)', '') AS AlkalmazottMunkakor
    ,IIF(munkaviszony.ID = 6467, '-', vegzettseg.C_NAME) AS AlkalmazottVegzettseg
    ,IIF(munkaviszony.ID = 6467, '-', fokozat.C_NAME) AS AlkalmazottFokozat
    ,IIF(munkaviszony.ID = 6467, '-', ISNULL(targykat.Targykat1, '-')) AS AlkalmazottTargykat1
    ,IIF(munkaviszony.ID = 6467, '-', ISNULL(targykat.Targykat2, '-')) AS AlkalmazottTargykat2
    ,IIF(munkaviszony.ID = 6467, '-', ISNULL(targykat.Targykat3, '-')) AS AlkalmazottTargykat3
    ,IIF(munkaviszony.ID = 6467, '-', ISNULL(tantervijellemzo.C_NAME, '-')) AS AlkalmazottTanterviJellemzo
    ,IIF(munkaviszony.ID = 6467, '-', IIF(ma.C_NYUGDIJAS = 'T', 'Igen', 'Nem')) AS AlkalmazottNyugdijas
    ,IIF(munkaviszony.ID = 6467, '-', IIF(ma.C_TARTOSHELYETTESITES = 'T', 'Igen', 'Nem')) AS AlkalmazottTartosTavollevo
    ,IIF(munkaviszony.ID = 6467, '-', IIF(ma.C_BESOROLASIFOKOZAT = 3044 AND DATEDIFF(YEAR, fh.C_SZULETESIDATUM, '20211001') < 30, 'Igen', 'Nem')) AS AlkalmazottPalyakezdo  
    ,IIF(munkaviszony.ID = 6467, '-', IIF(ma.C_ISINTERNETETOKTCELRAHASZNAL = 'T', 'Igen', 'Nem')) AS AlkalmazottInternetetHasznalo
    ,IIF(munkaviszony.ID = 6467, '-', IIF(ma.C_ISINFORMATKEPISMRENDELKEZIK = 'T', 'Igen', 'Nem')) AS AlkalmazottInfroIsmeretek
    ,IIF(munkaviszony.ID = 6467, '-', IIF(ma.C_ISIKTESZKOZOKETLGALABB40HASZ = 'T', 'Igen', 'Nem')) AS AlkalmazottIktEszkoz
    ,IIF(munkaviszony.ID = 6467, ISNULL(nem.C_NAME, '-'), '-')  AS AlkalmazottOraadoNem
    ,IIF(munkaviszony.ID = 6467, ISNULL(tantervijellemzo.C_NAME, '-'), '-') AS AlkalmazottOraadoTanterviJellemzo
  FROM T_FELHASZNALO fh 
    INNER JOIN T_ALKALMAZOTT a ON a.ID = fh.ID AND a.TOROLT = 'F'
    INNER JOIN T_INTEZMENYADATOK ia ON ia.C_TANEVID = fh.C_TANEVID AND ia.TOROLT = 'F'
    INNER JOIN T_INTEZMENY i ON ia.C_INTEZMENYID = i.ID AND i.TOROLT = 'F'
    INNER JOIN T_FELADATELLATASIHELY fhely ON fhely.C_TANEVID = ia.C_TANEVID AND fhely.TOROLT = 'F'
    INNER JOIN T_MUKODESIHELY mhely ON mhely.ID = fhely.C_MUKODESIHELYID AND mhely.TOROLT = 'F'
    LEFT JOIN T_DICTIONARYITEMBASE fhelytip ON fhelytip.ID = fhely.C_OKTATASINEVELESIFELADATTIPUS AND fhelytip.C_TANEVID = fhely.C_TANEVID AND fhelytip.C_INTEZMENYID = i.ID AND fhelytip.TOROLT = 'F'
    INNER JOIN T_MUNKAUGYIADATOK ma ON ma.C_ALKALMAZOTTID = fh.ID AND ma.TOROLT = 'F' AND ma.C_FELADATELLATASIHELYID = fhely.ID
    INNER JOIN T_MUNKAKORTIPUS mt on mt.ID = ma.C_MUNKAKORTIPUSA AND mt.C_ALTANEVID = ma.C_TANEVID AND mt.TOROLT = 'F'
    LEFT JOIN T_DICTIONARYITEMBASE munkaviszony ON munkaviszony.ID = ma.C_FOGLALKOZTATASTIPUS AND munkaviszony.C_TANEVID = ma.C_TANEVID AND munkaviszony.C_INTEZMENYID = ma.C_INTEZMENYID AND munkaviszony.TOROLT = 'F'
    LEFT JOIN T_DICTIONARYITEMBASE nem ON fh.C_NEME = nem.ID AND nem.C_TANEVID = fh.C_TANEVID AND nem.C_INTEZMENYID = fh.C_INTEZMENYID AND nem.TOROLT = 'F'
    LEFT JOIN T_DICTIONARYITEMBASE munkakor ON munkakor.ID = ma.C_MUNKAKORTIPUSA AND munkakor.C_TANEVID = ma.C_TANEVID AND munkakor.C_INTEZMENYID = ma.C_INTEZMENYID AND munkakor.TOROLT = 'F'
    LEFT JOIN T_DICTIONARYITEMBASE fokozat ON fokozat.ID = ma.C_BESOROLASIFOKOZAT AND fokozat.C_TANEVID = ma.C_TANEVID AND fokozat.C_INTEZMENYID = ma.C_INTEZMENYID AND fokozat.TOROLT = 'F'
    OUTER APPLY (
      SELECT 
        pvt.C_TANARID,  [1] AS Targykat1, [2] AS Targykat2, [3] AS Targykat3
      FROM (
        SELECT x.C_TANARID, x.C_NAME, RN
          FROM (
            SELECT fg.C_TANARID, dib.ID, dib.C_NAME, ROW_NUMBER() OVER(PARTITION BY fg.C_TANARID ORDER BY SUM(fg.C_ORASZAM) DESC, dib.C_NAME ASC) AS RN
            FROM T_FOGLALKOZAS fg
              INNER JOIN T_TANTARGY tgy ON tgy.ID = fg.C_TANTARGYID AND tgy.TOROLT = 'F'
              INNER JOIN T_DICTIONARYITEMBASE dib ON tgy.C_TARGYKATEGORIA = dib.ID AND dib.C_TANEVID = tgy.C_TANEVID AND dib.TOROLT = 'F'
            WHERE fg.C_TANARID = fh.ID
              AND fg.C_TANEVID = @pTanevId
              AND fg.TOROLT = 'F'
            GROUP BY fg.C_TANARID, dib.ID, dib.C_NAME
          ) x
          WHERE x.RN <= 3
        ) z PIVOT 
        ( MAX(z.C_NAME)
          FOR RN IN ([1], [2], [3])
        ) AS pvt 
      ) targykat
    OUTER APPLY (
      SELECT TOP(1) tta.C_TANTERVIJELLEMZOID, tantervijellemzoNev.C_NAME
      FROM T_FOGLALKOZAS f 
        INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = f.C_OSZTALYCSOPORTID AND ocs.TOROLT = 'F'
        INNER JOIN T_TANULOCSOPORT tcs ON tcs.C_OSZTALYCSOPORTID = ocs.ID AND tcs.TOROLT = 'F'
        INNER JOIN T_TANULOCSOPORT tcsOszt ON tcsOszt.C_TANULOID = tcs.C_TANULOID AND tcsOszt.TOROLT = 'F'
        INNER JOIN T_OSZTALYCSOPORT ocsOszt ON ocsOszt.ID = tcsOszt.C_OSZTALYCSOPORTID AND ocsOszt.C_FELADATKATEGORIAID = ocs.C_FELADATKATEGORIAID AND ocsOszt.TOROLT = 'F'
        INNER JOIN T_OSZTALY oOszt ON ocsOszt.ID = oOszt.ID AND oOszt.TOROLT = 'F'
        INNER JOIN T_TANULOTANUGYIADATOK tta ON tta.C_TANULOCSOPORTID = tcsOszt.ID AND tta.TOROLT = 'F'
        LEFT JOIN T_DICTIONARYITEMBASE tantervijellemzoNev ON tantervijellemzoNev.ID = tta.C_TANTERVIJELLEMZOID AND tantervijellemzoNev.C_TANEVID = fh.C_TANEVID AND tantervijellemzoNev.C_INTEZMENYID = tta.C_INTEZMENYID AND tantervijellemzoNev.TOROLT = 'F'
      WHERE tcs.C_BELEPESDATUM <= @datum
        AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > @datum)
        AND tcsOszt.C_BELEPESDATUM <= @datum
        AND (tcsOszt.C_KILEPESDATUM IS NULL OR tcsOszt.C_KILEPESDATUM > @datum)
        AND f.C_TANARID = fh.ID
        AND ocs.C_FELADATELLATASIHELYID = ma.C_FELADATELLATASIHELYID
        AND f.C_TANEVID = @pTanevId
        AND f.TOROLT = 'F'
      GROUP BY tta.C_TANTERVIJELLEMZOID, tantervijellemzoNev.C_NAME
      ORDER BY COUNT(*) DESC, tta.C_TANTERVIJELLEMZOID
    ) AS tantervijellemzo
    OUTER APPLY (
      SELECT TOP (1) 
        vd.C_NAME
      FROM T_VEGZETTSEG v
        INNER JOIN T_DICTIONARYITEMBASE vd ON vd.ID = v.C_VEGZETTSEGTIPUSID AND vd.C_TANEVID = v.C_TANEVID AND vd.C_INTEZMENYID = v.C_INTEZMENYID AND vd.TOROLT = 'F'
      WHERE v.TOROLT = 'F'
        AND v.C_TANARID = fh.ID
      ORDER BY vd.C_VALUE
    ) vegzettseg
    LEFT JOIN T_DICTIONARYITEMBASE vezetoi ON vezetoi.ID = ma.C_VEZETOIORASZAMOK AND ma.C_TANEVID = vezetoi.C_TANEVID
  WHERE fh.TOROLT = 'F'
    AND (ma.C_ALKALMAZASMEGSZUNESE >= @datum OR ma.C_ALKALMAZASMEGSZUNESE IS NULL)
    AND ISNULL(fh.C_ELOTAG,'') NOT LIKE '[[]%'
    AND a.C_ALLANDOHELYETTESITESRE = 'F'
    AND mt.C_ALKALMAZOTTMUNKAKORTIPUSID = 8384
    AND fh.C_TANEVID = @pTanevId
    AND fh.C_INTEZMENYID = @pIntezmenyid

END
GO
