﻿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 = 1384
  ,@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();
  
  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)
     ) 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
        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 = adat.C_TANEVID
        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_MUNKAUGYIADATOK_OSSZES ON T_MUNKAUGYIADATOK_OSSZES.C_ALKALMAZOTTID = adat.ID
        WHERE adat.C_TANEVID = @pTanevId AND adat.TOROLT = 'F'
          AND adat.C_NEME = @pNaNemTipusa
          AND adat.C_NYOMTATASINEV NOT LIKE '[[]HO%'      
          AND adat.C_NYOMTATASINEV NOT LIKE '[[]BTA%'  
          AND T_MUNKAUGYIADATOK_OSSZES.C_MUNKAKORTIPUSA NOT IN 
              (569,572,6404,571,586,570,590,566,561,563,559,584,3026,589,565,585,7356,6421,594,564,579,568)
     ) AS NincsNemAlkalmazott
    ,(SELECT COUNT(1) 
        FROM T_FELHASZNALO_OSSZES adat
        INNER JOIN T_TANULO_OSSZES a ON a.ID = adat.ID AND a.C_ALTANEVID = adat.C_TANEVID
        WHERE adat.C_TANEVID = @pTanevId AND adat.TOROLT = 'F'
          AND adat.C_NEME = @pNaNemTipusa
     ) AS NincsNemTanulo
    ,(SELECT COUNT(1) 
        FROM T_FELHASZNALO_OSSZES adat
        INNER JOIN T_MUNKAUGYIADATOK_OSSZES m ON m.C_ALKALMAZOTTID = adat.ID AND m.C_TANEVID = adat.C_TANEVID AND m.TOROLT = 'F'  
        WHERE adat.C_TANEVID = @pTanevId AND adat.TOROLT = 'F'
          AND m.C_MUNKAKORTIPUSA = @pNaAlkalmazottMunkakor 
      ) AS NincsMunkakorAlkalmazott
    ,(SELECT COUNT(1) FROM T_FELHASZNALO_OSSZES adat
        INNER JOIN T_MUNKAUGYIADATOK_OSSZES m ON m.C_ALKALMAZOTTID = adat.ID AND m.C_TANEVID = adat.C_TANEVID AND m.TOROLT = 'F'
        WHERE adat.C_TANEVID = @pTanevId AND adat.TOROLT = 'F'
          AND m.C_MUNKAVISZONYTIPUSA = @pNaAlkalmazottMunkaviszony
          AND m.C_MUNKAKORTIPUSA NOT IN 
              (569,572,6404,571,586,570,590,566,561,563,559,584,3026,589,565,585,7356,6421,594,564,579,568)
     ) AS NincsMunkaviszonyTipusAlkalmazott
    ,(SELECT COUNT(1) 
        FROM T_FELHASZNALO_OSSZES adat
        INNER JOIN T_MUNKAUGYIADATOK_OSSZES m ON m.C_ALKALMAZOTTID = adat.ID AND m.C_TANEVID = adat.C_TANEVID AND m.TOROLT = 'F'
        WHERE adat.C_TANEVID = @pTanevId AND adat.TOROLT = 'F'
          AND m.C_MUNKAKORTIPUSA NOT IN 
              (569,572,6404,571,586,570,590,566,561,563,559,584,3026,589,565,585,7356,6421,594,564,579,568)
          AND m.C_BESOROLASIFOKOZAT =@pNaBesorolasiFokozat
     ) AS NincsBesorolasiFokozatAlkalmazott
    ,(SELECT COUNT(1) 
        FROM T_FELHASZNALO_OSSZES adat
        INNER JOIN T_TANULO_OSSZES a ON a.ID = adat.ID AND a.C_ALTANEVID = adat.C_TANEVID
        WHERE adat.C_TANEVID = @pTanevId 
          AND adat.TOROLT = 'F' 
          AND (adat.C_ANYANYELVE = @pNincsAnyanyelv OR adat.C_ANYANYELVE IS NULL)
     ) AS NincsAnyanyelvTanulo
    ,(SELECT COUNT(1) 
        FROM T_FELHASZNALO_OSSZES adat
        INNER JOIN T_TANULO_OSSZES a ON a.ID = adat.ID AND a.C_ALTANEVID = adat.C_TANEVID
        WHERE adat.C_TANEVID = @pTanevId 
          AND adat.TOROLT = 'F' 
          AND adat.C_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 T_FELHASZNALO_OSSZES adat
        INNER JOIN T_MUNKAUGYIADATOK_OSSZES m ON m.C_ALKALMAZOTTID = adat.ID AND m.C_TANEVID = adat.C_TANEVID AND m.TOROLT = 'F'
        WHERE adat.C_TANEVID = @pTanevId 
          AND adat.TOROLT = 'F'
          AND m.C_MUNKAKORTIPUSA NOT IN 
              (569,572,6404,571,586,570,590,566,561,563,559,584,3026,589,565,585,7356,6421,594,564,579,568)
     ) AS NSzFHRosszMunkakor
    ,(SELECT COUNT(1) 
        FROM T_ALKALMAZOTT_OSSZES a
        LEFT JOIN T_EMAIL_OSSZES ON T_EMAIL_OSSZES.C_FELHASZNALOID = a.ID AND T_EMAIL_OSSZES.TOROLT = 'F' AND T_EMAIL_OSSZES.C_ALAPERTELMEZETT = 'T'
        WHERE a.C_ALTANEVID = @pTanevId 
          AND a.TOROLT = 'F' 
          AND T_EMAIL_OSSZES.ID IS NULL
     ) AS NincsEmailAlkalmazott
  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 = tv.ID AND ia.TOROLT = 'F'
  WHERE tv.TOROLT = 'F' 
    AND tv.ID = @pTanevId
  
END
GO

