﻿DROP PROCEDURE IF EXISTS uspGetTantargyfelosztasData
GO

CREATE PROCEDURE uspGetTantargyfelosztasData
   @pTanevId INT
  ,@pIntezmenyId INT
  ,@pIsOsztalybontasokkal BIT = 0
  ,@pIsKapcsolodoCsoportokkal BIT = 0
  ,@pAlkalmazottId INT = NULL
  ,@pOsztalyCsoportId INT = NULL
  ,@pOktNevelesiKategoriaId INT = NULL
  ,@pIsFromSzervezet BIT
  ,@pSzervezetId INT
  ,@pSzervezetekHalmaza INT
AS
BEGIN
  SET NOCOUNT ON

  DECLARE @sql nvarchar(max)

  CREATE TABLE #Szervezetek (ID INT)

  IF @pIsFromSzervezet = 1 BEGIN
    INSERT INTO #Szervezetek
    SELECT ID FROM dbo.fnGetLathatoSzervezetek(@pIntezmenyId, @pTanevId, @pSzervezetId, @pSzervezetekHalmaza)
  END

  SET @sql = N'
    SELECT
       f.ID AS Id
      ,f.C_NEV AS Nev
      ,(ocs.C_NEV + '' - '' + tgy.C_NEV) AS NevAlkalmazottNelkul
      ,f.C_FOGLALKOZASTIPUSA AS TipusId
      ,f.C_ORASZAM AS Oraszam
      ,f.C_TULORASZAM AS Tuloraszam
      ,f.C_ISOSSZEVONTORA AS IsOsszevontOra
      ,f.C_ISNEMZETISEGI AS IsNemzetisegiOra
      ,f.C_MEGBIZASIORASZAM AS MegbizasiOraszam
      ,f.C_IMPORTALT AS Importalt
      ,ocs.ID AS OsztalyCsoportId
      ,ocs.C_NEV AS OsztalyCsoportNev
      ,tgy.ID AS TantargyId
      ,tgy.C_NEV AS TantargyNev
      ,fh.ID AS TanarId
      ,fh.C_NYOMTATASINEV AS TanarNev
      ,fh.C_SZULETESIDATUM AS TanarSzuletesiIdo
      ,IIF(fh.C_NEVSORREND = ''T''
      ,fh.C_UTONEV + '' '' + fh.C_VEZETEKNEV
      ,fh.C_VEZETEKNEV + '' '' + fh.C_UTONEV) AS TanarNevElotagNelkul
      ,t.C_NEV AS TanevNev
      ,ocs.C_FELADATKATEGORIAID AS FeladatKategoriaId
      ,ocs.C_FELADATELLATASIHELYID AS FeladatEllatasihelyId
      ,mh.C_NEV MukodesiHelyNev
      ,feh.C_OKTATASINEVELESIFELADATTIPUS AS OktatasiNevelesiFeladatTipusId
      ,mua.C_SZERVEZETID AS SzervezetId
      ' + IIF(@pIsFromSzervezet = 1, N'   ,f.CREATOR AS RogzitoId
    ,sz.C_NEV AS DualisKepzohelyNeve
    ,sz.C_AZONOSITO AS DualisKepzohelyAdoszama', N'
    ,mua.C_DUALISKEPZOHELYNEVE AS DualisKepzohelyNeve
    ,mua.C_DUALISKEPZOHELYADOSZAMA AS DualisKepzohelyAdoszama') + N'
      FROM T_FOGLALKOZAS_OSSZES f
        INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = f.C_OSZTALYCSOPORTID 
          AND ocs.C_TANEVID = f.C_TANEVID 
          AND ocs.TOROLT = ''F'' 
          AND (@pOktNevelesiKategoriaId IS NULL OR ocs.C_FELADATKATEGORIAID = @pOktNevelesiKategoriaId)
        INNER JOIN T_TANTARGY_OSSZES tgy ON tgy.ID = f.C_TANTARGYID AND tgy.C_TANEVID = f.C_TANEVID AND tgy.TOROLT = ''F''
        INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ID = f.C_TANARID AND fh.C_TANEVID = f.C_TANEVID AND fh.TOROLT = ''F''
        INNER JOIN T_ALKALMAZOTT_OSSZES a ON a.ID = fh.ID AND a.C_ALTANEVID = f.C_TANEVID AND a.TOROLT = ''F''
        INNER JOIN T_TANEV_OSSZES t ON t.ID = f.C_TANEVID AND t.TOROLT = ''F''
        INNER JOIN T_MUNKAUGYIADATOK_OSSZES mua ON mua.C_ALKALMAZOTTID = a.ID AND mua.C_TANEVID = a.C_ALTANEVID AND mua.TOROLT = ''F''
        ' + IIF (@pIsFromSzervezet = 1, N'
        INNER JOIN #Szervezetek szervezetek ON szervezetek.ID = mua.C_SZERVEZETID
        LEFT JOIN T_SZERVEZET_OSSZES sz ON sz.ID = szervezetek.ID AND sz.TOROLT = ''F''', ' AND mua.C_SZERVEZETID IS NULL') +
        '
        LEFT JOIN (T_FELADATELLATASIHELY_OSSZES feh 
          INNER JOIN T_MUKODESIHELY_OSSZES mh ON mh.C_INTEZMENYID = feh.C_INTEZMENYID AND mh.ID = feh.C_MUKODESIHELYID AND mh.TOROLT = ''F''
        ) ON feh.ID = ocs.C_FELADATELLATASIHELYID AND feh.TOROLT = ''F''
      WHERE (@pAlkalmazottId IS NULL OR f.C_TANARID = @pAlkalmazottId)'

  IF @pOsztalyCsoportId IS NOT NULL BEGIN
    SET @sql += N'
        AND(f.C_OSZTALYCSOPORTID = @pOsztalyCsoportId'
    SET @sql += IIF(@pIsOsztalybontasokkal = 1, N'
          OR f.C_OSZTALYCSOPORTID IN
            (SELECT
              cs.ID
            FROM T_CSOPORT_OSSZES cs
            WHERE cs.C_OSZTALYBONTASID = @pOsztalyCsoportId AND cs.TOROLT = ''F'')', '')
    SET @sql += IIF(@pIsKapcsolodoCsoportokkal = 1, N'
          OR f.C_OSZTALYCSOPORTID IN (SELECT ID FROM dbo.fnGetKapcsolodoOsztalycsoportok(@pOsztalyCsoportId))', '')
    SET @sql += ')'
  END

  SET @sql += N'
        AND f.C_TANEVID = @pTanevId
        AND f.TOROLT = ''F'''

  EXEC sp_executesql @sql
    ,N'
       @pTanevId int
      ,@pOktNevelesiKategoriaId int
      ,@pAlkalmazottId int
      ,@pOsztalyCsoportId int
    '
    ,@pTanevId = @pTanevId
    ,@pOktNevelesiKategoriaId = @pOktNevelesiKategoriaId
    ,@pAlkalmazottId = @pAlkalmazottId
    ,@pOsztalyCsoportId = @pOsztalyCsoportId
END