kreta/Kreta.DataAccess.Migrations/DBScripts/Database/dbo/Stored procedures/uspGetAdminDashboardAdminisztracio.sql
2024-03-13 00:33:46 +01:00

251 lines
10 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS [dbo].[uspGetAdminDashboardAdminisztracio]
GO
CREATE PROCEDURE [dbo].[uspGetAdminDashboardAdminisztracio]
@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
,@pTanarAlkalmazottMunkakor int = 8384
AS
BEGIN
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()
INNER JOIN T_MUNKAKORTIPUS_OSSZES mkt ON mkt.ID = m.C_MUNKAKORTIPUSA AND mkt.C_ALTANEVID = m.C_TANEVID AND mkt.TOROLT = 'F'
WHERE adat.C_TANEVID = @pTanevId
AND mkt.C_ALKALMAZOTTMUNKAKORTIPUSID = @pTanarAlkalmazottMunkakor
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_OSZTALYCSOPORT_OSSZES adat
INNER JOIN T_CSOPORT_OSSZES csoport ON adat.ID = csoport.ID AND csoport.TOROLT = 'F'
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_TANEVID = @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'
LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = a.ID
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 )
AND f.C_NYOMTATASINEV NOT LIKE '[[]%'
) AS NincsAlkalmazottSZTSZ
,(SELECT COUNT(1)
FROM T_EMAIL_OSSZES e
WHERE e.C_TANEVID = @pTanevId
AND e.TOROLT = 'F'
AND e.C_ISHIBASANMEGADVA = 'T'
) AS VanHibasEmailCim
,(SELECT COUNT(1)
FROM T_FELHASZNALO f
WHERE f.C_TANEVID = @pTanevId
AND f.TOROLT = 'F'
AND f.C_ISCOVIDFERTOZOTT = 'T'
) AS VanCovidFertozott
,(SELECT COUNT(1)
FROM T_GONDVISELO g
WHERE g.C_TANEVID = @pTanevId
AND g.TOROLT = 'F'
AND g.C_ISCOVIDBEJELENTO = 'T'
) AS VanCovidBejelentett
,(SELECT COUNT(1)
FROM (
SELECT DISTINCT
f.ID AS TanuloId
,COUNT(1) OVER (PARTITION BY f.ID) AS CNT
FROM T_TANULO_OSSZES t
INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = t.ID AND f.TOROLT = 'F'
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_TANULOID = t.ID AND tcs.TOROLT = 'F'
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs
INNER JOIN T_OSZTALY_OSSZES o ON o.ID = ocs.ID AND o.TOROLT = 'F'
ON ocs.ID = tcs.C_OSZTALYCSOPORTID AND ocs.TOROLT = 'F'
WHERE t.TOROLT = 'F'
AND ocs.C_FELADATKATEGORIAID = 7553
AND tcs.C_BELEPESDATUM <= GETDATE()
AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > GETDATE() )
) x
WHERE x.CNT > 1
) AS VanKettosOsztalybesorolas
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