﻿DROP PROCEDURE IF EXISTS [dbo].[sp_GetAdminDashboardAdminisztracio]
GO

CREATE PROCEDURE [dbo].[sp_GetAdminDashboardAdminisztracio]
   @pTanevId int
  ,@pNaFeladatellatasihelyTipus int = 1156
  ,@pNaEvfolyamTipusa int = 1296
  ,@pNaCsoportTipusa int = 1031
  ,@pNaNemTipusa int = 1565
  ,@pNaAlkalmazottMunkakor int = 548
  ,@pNaAlkalmazottMunkaviszony int = 643
  ,@pNaBesorolasiFokozat int = 3040
  ,@pNaTargyKategoria int = 1197
  ,@pNincsAnyanyelv int = 493
  ,@pNincsAllampolgarsag int = 216

AS
BEGIN
  -- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.
  SET NOCOUNT ON;

  DECLARE @TanevElsoNapja datetime = (SELECT ISNULL(C_KEZDONAP, CAST(GETDATE() AS DATE)) FROM T_TANEV WHERE ID = @pTanevId AND TOROLT = 'F')
  DECLARE @OsztalyCsoportBelepesDatum DATETIME = GETDATE()


  CREATE TABLE #AlkalmazottMunkaugyiAdattal (
     Id INT
    ,BesorolasiFokozat INT NULL
    ,MunkakorTipusa INT NULL
    ,MunkaviszonyTipusa INT NULL
  )

  INSERT INTO #AlkalmazottMunkaugyiAdattal (Id, BesorolasiFokozat, MunkakorTipusa, MunkaviszonyTipusa)
  SELECT
     adat.ID
    ,m.C_BESOROLASIFOKOZAT
    ,m.C_MUNKAKORTIPUSA
    ,m.C_MUNKAVISZONYTIPUSA
  FROM T_FELHASZNALO_OSSZES adat
  INNER JOIN T_ALKALMAZOTT_OSSZES a ON a.ID = adat.ID AND a.C_ALTANEVID = @pTanevId AND a.TOROLT = 'F'
  INNER JOIN T_MUNKAUGYIADATOK_OSSZES m ON m.C_ALKALMAZOTTID = adat.ID AND m.C_TANEVID = @pTanevId AND m.TOROLT = 'F'
    AND m.C_TARTOSHELYETTESITES = 'F' AND ISNULL(m.C_ALKALMAZASKEZDETE, GETDATE()) <= GETDATE()
    AND ISNULL(m.C_ALKALMAZASMEGSZUNESE, GETDATE()) >= GETDATE()
  WHERE adat.C_TANEVID = @pTanevId
    AND adat.TOROLT = 'F'

  CREATE TABLE #Tanulo (
     Id INT
    ,Neme INT NULL
    ,Allampolgarsaga INT NULL
    ,Anyanyelve INT NULL
  )

  INSERT INTO #Tanulo (Id, Neme, Allampolgarsaga, Anyanyelve)
  SELECT
     adat.ID
    ,adat.C_NEME
    ,adat.C_ALLAMPOLGARSAGA
    ,adat.C_ANYANYELVE
  FROM T_FELHASZNALO_OSSZES adat
  INNER JOIN T_TANULO_OSSZES a ON a.ID = adat.ID AND a.C_ALTANEVID = @pTanevId AND a.TOROLT = 'F'
  WHERE adat.C_TANEVID = @pTanevId AND adat.TOROLT = 'F'

  IF @OsztalyCsoportBelepesDatum < @TanevElsoNapja BEGIN
    SET @OsztalyCsoportBelepesDatum = @TanevElsoNapja;
  END

  SELECT
     ia.C_NEV AS IntezmenyNev
    ,i.C_AZONOSITO AS IntezmenyAzonosito
    ,i.C_ALTERNATIVAZONOSITO AS IntezmenyAlternativAzonosito
    ,tv.C_NEV AS TanevNev
    ,(SELECT TOP 1 ISNULL(C_DATE, '20201231') FROM T_LICENCE_OSSZES) AS LicenceDatum
    ,(SELECT COUNT(1)
        FROM T_FELADATELLATASIHELY_OSSZES adat
        WHERE adat.C_TANEVID = @pTanevId AND adat.TOROLT = 'F'
          AND adat.C_OKTATASINEVELESIFELADATTIPUS =  @pNaFeladatellatasihelyTipus
     ) AS NincsFeladatellatasiHelyTipus
    ,(SELECT COUNT(1)
        FROM T_MUKODESIHELY_OSSZES adat
        WHERE adat.C_TANEVID = @pTanevId AND adat.TOROLT = 'F'
          AND NOT EXISTS (SELECT 1 FROM T_FELADATELLATASIHELY_OSSZES fh WHERE fh.C_MUKODESIHELYID = adat.ID AND fh.C_TANEVID = @pTanevId AND fh.TOROLT = 'F')
     ) AS NincsFeladatellatasiHelyMukodesiHely
    ,(SELECT COUNT(1)
        FROM T_OSZTALY_OSSZES adat
        WHERE NOT EXISTS (
          SELECT 1
          FROM T_TANULOCSOPORT_OSSZES tcs
          WHERE tcs.C_OSZTALYCSOPORTID = adat.ID
            AND tcs.TOROLT = 'F'
            AND (tcs.C_BELEPESDATUM <=  @OsztalyCsoportBelepesDatum
            AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > @OsztalyCsoportBelepesDatum))
            AND tcs.C_TANEVID = @pTanevId
          )
          AND adat.TOROLT = 'F'
          AND adat.C_ALTANEVID = @pTanevId
     ) AS UresOsztaly
    ,(SELECT COUNT(1)
        FROM T_CSOPORT_OSSZES adat
        WHERE NOT EXISTS (
          SELECT 1
          FROM T_TANULOCSOPORT_OSSZES tcs
          WHERE tcs.C_OSZTALYCSOPORTID = adat.ID
            AND tcs.TOROLT = 'F'
            AND (tcs.C_BELEPESDATUM <=  @OsztalyCsoportBelepesDatum
            AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > @OsztalyCsoportBelepesDatum))
            AND tcs.C_TANEVID = @pTanevId
          )
          AND adat.TOROLT = 'F'
          AND adat.C_ALTANEVID = @pTanevId
     ) AS UresCsoport
    ,(SELECT COUNT(1)
        FROM T_OSZTALYCSOPORT_OSSZES adat
        INNER JOIN T_OSZTALY_OSSZES o ON o.ID = adat.ID AND o.C_ALTANEVID = @pTanevId AND o.TOROLT = 'F'
        WHERE adat.C_TANEVID = @pTanevId
          AND adat.TOROLT = 'F'
          AND (adat.C_EVFOLYAMTIPUSA = @pNaEvfolyamTipusa or adat.C_EVFOLYAMTIPUSA IS NULL)
     ) NincsEvfolyamOsztaly
    ,(SELECT COUNT(1)
        FROM T_OSZTALYCSOPORT_OSSZES adat
          INNER JOIN T_CSOPORT_OSSZES csoport ON csoport.ID = adat.ID AND csoport.C_ALTANEVID = @pTanevId AND csoport.TOROLT = 'F'
        WHERE adat.C_TANEVID = @pTanevId
          AND adat.TOROLT = 'F'
          AND csoport.C_OSZTALYBONTASID IS NULL AND (adat.C_EVFOLYAMTIPUSA = @pNaEvfolyamTipusa OR adat.C_EVFOLYAMTIPUSA IS NULL)
     ) AS NincsEvfolyamCsoport
    ,(SELECT COUNT(1)
        FROM T_CSOPORT_OSSZES adat
        WHERE adat.C_ALTANEVID = @pTanevId
          AND adat.TOROLT = 'F'
          AND adat.C_TIPUSA = @pNaCsoportTipusa
     ) AS NincsTipusCsoport
    ,(SELECT COUNT(1)
        FROM T_OSZTALY_OSSZES adat
        WHERE adat.C_ALTANEVID = @pTanevId AND adat.TOROLT = 'F' AND adat.C_OSZTALYFONOKID IS NULL
     ) NincsOsztalyOsztalyfonok
    ,(SELECT COUNT(1)
        FROM T_FELHASZNALO_OSSZES adat
		INNER JOIN T_ALKALMAZOTT_OSSZES a ON a.ID = adat.ID AND a.C_ALTANEVID = @pTanevId AND a.TOROLT = 'F'
        WHERE adat.C_TANEVID = @pTanevId AND adat.TOROLT = 'F'
          AND (adat.C_NEME = @pNaNemTipusa OR adat.C_NEME IS NULL)
          AND adat.C_NYOMTATASINEV NOT LIKE '[[]HO%'
          AND adat.C_NYOMTATASINEV NOT LIKE '[[]BTA%'
     ) AS NincsNemAlkalmazott
    ,(SELECT COUNT(1)
        FROM #Tanulo t
        WHERE t.Neme = @pNaNemTipusa OR t.Neme IS NULL
     ) AS NincsNemTanulo
    ,(SELECT COUNT(1)
        FROM #AlkalmazottMunkaugyiAdattal am
        WHERE am.MunkakorTipusa = @pNaAlkalmazottMunkakor
      ) AS NincsMunkakorAlkalmazott
    ,(SELECT COUNT(1)
        FROM #AlkalmazottMunkaugyiAdattal am
        WHERE am.MunkaviszonyTipusa = @pNaAlkalmazottMunkaviszony
     ) AS NincsMunkaviszonyTipusAlkalmazott
    ,(SELECT COUNT(1)
        FROM #AlkalmazottMunkaugyiAdattal am
        WHERE am.BesorolasiFokozat = @pNaBesorolasiFokozat
     ) AS NincsBesorolasiFokozatAlkalmazott
    ,(SELECT COUNT(1)
        FROM #Tanulo t
        WHERE t.Anyanyelve = @pNincsAnyanyelv OR t.Anyanyelve IS NULL
     ) AS NincsAnyanyelvTanulo
    ,(SELECT COUNT(1)
        FROM #Tanulo t
        WHERE t.Allampolgarsaga = @pNincsAllampolgarsag
     ) AS NincsAllampolgarsagaTanulo
    ,(SELECT COUNT(1)
        FROM T_CSENGETESIREND_OSSZES adat
        WHERE adat.C_TANEVID = @pTanevId AND adat.TOROLT = 'F' AND adat.C_AKTIV = 'T'
     ) AS NincsAktivCsengetesiRend /* AktivCsengetesiRendekSzáma */
    ,(SELECT COUNT(1)
        FROM T_TANTARGY_OSSZES adat
        WHERE adat.C_TANEVID = @pTanevId
          AND adat.TOROLT = 'F'
          AND adat.C_TARGYKATEGORIA = @pNaTargyKategoria
     ) AS NincsKategoriaTantargy
    ,(SELECT COUNT(1)
        FROM #AlkalmazottMunkaugyiAdattal am
        WHERE am.MunkakorTipusa NOT IN
                            (6914, 6361, 6432, 6433, 6461, 553, 6414,
                            6812, 597, 6392, 6375, 6457, 6352, 6393,
                            6394, 6709, 584, 561, 589, 3026, 563, 585,
                            559, 564, 6421, 565, 566, 568, 594, 6404,
                            569, 571, 586, 590, 570, 572)
     ) AS NSzFHRosszMunkakor
    ,(SELECT COUNT(1)
        FROM #AlkalmazottMunkaugyiAdattal am
        LEFT JOIN T_EMAIL_OSSZES ON T_EMAIL_OSSZES.C_FELHASZNALOID = am.ID AND T_EMAIL_OSSZES.TOROLT = 'F' AND T_EMAIL_OSSZES.C_ALAPERTELMEZETT = 'T' AND T_EMAIL_OSSZES.C_TANEVID = @pTanevId
        WHERE T_EMAIL_OSSZES.ID IS NULL
     ) AS NincsEmailAlkalmazott,
	 (SELECT COUNT(1)
        FROM T_ALKALMAZOTT_OSSZES a
        LEFT JOIN T_MUNKAUGYIADATOK_OSSZES ma
          ON ma.C_ALKALMAZOTTID = a.ID
            AND ma.C_TANEVID = @pTanevId
            AND ma.TOROLT = 'F'
        WHERE a.C_SZTSZKOD IS NULL 
          AND a.C_ALTANEVID = @pTanevId 
          AND a.TOROLT = 'F' 
          AND ma.C_BETOLTETLENALLASHELY = 'F' 
          AND ma.C_MUNKAKORTIPUSA NOT IN ( 6709, 6710 )
     ) AS NincsAlkalmazottSZTSZ
  FROM T_TANEV_OSSZES tv
    INNER JOIN T_INTEZMENY_OSSZES i ON i.ID = tv.C_INTEZMENYID AND i.TOROLT = 'F'
    INNER JOIN T_INTEZMENYADATOK_OSSZES ia ON ia.C_INTEZMENYID = tv.C_INTEZMENYID AND ia.C_TANEVID = @pTanevId AND ia.TOROLT = 'F'
  WHERE tv.TOROLT = 'F'
    AND tv.ID = @pTanevId

END
GO
