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

140 lines
No EOL
4.4 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS dbo.uspGetEntitySzervezetList
GO
CREATE PROCEDURE dbo.uspGetEntitySzervezetList(
@pEntityId int
,@pEntityName nvarchar(250)
)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @lekerdezesDatuma datetime = GETDATE()
-- Védelem arra az esetre ha feltünne az adatbázisban egy újabb tábla C_SZERVEZETID oszloppal.
DECLARE @missing_table nvarchar(100);
SELECT TOP 1
@missing_table = N'Kezeletlen tábla: ' + t.name
FROM sys.tables t
INNER JOIN sys.columns c on c.object_id = t.object_id
WHERE c.name = 'C_SZERVEZETID'
AND t.name NOT IN ('T_MUNKAUGYIADATOK', 'T_TANULOTANUGYIADATOK', 'T_TEREM', 'T_CSOPORT', 'T_TANTARGY','T_SZAKMUNKASZERZODES','T_IGAZOLAS')
IF @missing_table IS NOT NULL THROW 50000, @missing_table, 1;
-- ebbe a táblába gyűjtjük a találatokat
CREATE TABLE #Result(
EntitasNev sysname,
SzervezetId int,
Cnt int
)
IF @pEntityName IN ('T_TANULO')
BEGIN
INSERT INTO #Result(EntitasNev, SzervezetId, Cnt)
SELECT 'T_CSOPORT' as EntitasNev, cs.C_SZERVEZETID AS SzervezetId, COUNT(1) AS Cnt
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = tcs.C_OSZTALYCSOPORTID
AND cs.TOROLT = 'F'
WHERE tcs.C_TANULOID = @pEntityId
AND tcs.TOROLT = 'F'
AND tcs.C_BELEPESDATUM <= @lekerdezesDatuma AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > @lekerdezesDatuma)
AND cs.C_SZERVEZETID IS NOT NULL
GROUP BY cs.C_SZERVEZETID
INSERT INTO #Result(EntitasNev, SzervezetId, Cnt)
SELECT
'T_TANTARGY' AS EntitasNev
,tt.C_SZERVEZETID AS SzervezetId
,COUNT(1) AS Cnt
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN T_ORARENDIORA_OSSZES oo ON oo.C_OSZTALYCSOPORTID = tcs.C_OSZTALYCSOPORTID
AND oo.TOROLT = 'F'
INNER JOIN T_TANTARGY_OSSZES tt ON tt.ID = oo.C_TANTARGYID
AND tt.TOROLT = 'F'
WHERE tcs.C_TANULOID = @pEntityId
AND tcs.TOROLT = 'F'
AND tcs.C_BELEPESDATUM <= @lekerdezesDatuma AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > @lekerdezesDatuma)
AND tt.C_SZERVEZETID IS NOT NULL
GROUP BY tt.C_SZERVEZETID
INSERT INTO #Result(EntitasNev, SzervezetId, Cnt)
SELECT
'T_TEREM' AS EntitasNev
,t.C_SZERVEZETID AS SzervezetId
,COUNT(1) AS Cnt
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN T_ORARENDIORA_OSSZES oo ON oo.C_OSZTALYCSOPORTID = tcs.C_OSZTALYCSOPORTID
AND oo.TOROLT = 'F'
INNER JOIN T_TEREM_OSSZES t ON t.ID = oo.C_TEREMID
AND t.TOROLT = 'F'
WHERE tcs.C_TANULOID = @pEntityId
AND tcs.TOROLT = 'F'
AND tcs.C_BELEPESDATUM <= @lekerdezesDatuma AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > @lekerdezesDatuma)
AND t.C_SZERVEZETID IS NOT NULL
GROUP BY t.C_SZERVEZETID
INSERT INTO #Result(EntitasNev, SzervezetId, Cnt)
SELECT
'T_TANULOTANUGYIADATOK' AS EntitasNev
,ta.C_SZERVEZETID AS SzervezetId
,COUNT(1) AS Cnt
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN T_TANULOTANUGYIADATOK_OSSZES ta ON ta.C_TANULOCSOPORTID = tcs.ID
AND ta.TOROLT = 'F'
WHERE tcs.C_TANULOID = @pEntityId
AND tcs.TOROLT = 'F'
AND ta.C_SZERVEZETID IS NOT NULL
GROUP BY ta.C_SZERVEZETID
END
IF @pEntityName IN ('T_ALKALMAZOTT')
BEGIN
INSERT INTO #Result(EntitasNev, SzervezetId, Cnt)
SELECT
'T_MUNKAUGYIADATOK' AS EntitasNev
,m.C_SZERVEZETID AS SzervezetId
,COUNT(1) AS Cnt
FROM T_MUNKAUGYIADATOK_OSSZES m
WHERE m.C_ALKALMAZOTTID = @pEntityId
AND m.TOROLT = 'F'
AND m.C_SZERVEZETID IS NOT NULL
GROUP BY m.C_SZERVEZETID
INSERT INTO #Result(EntitasNev, SzervezetId, Cnt)
SELECT
'T_TEREM' AS EntitasNev
,t.C_SZERVEZETID AS SzervezetId
,COUNT(1) AS Cnt
FROM T_ORARENDIORA_OSSZES oo
INNER JOIN T_TEREM_OSSZES t ON t.ID = oo.C_TEREMID
AND t.TOROLT = 'F'
WHERE oo.C_TANARID = @pEntityId
AND oo.TOROLT = 'F'
AND t.C_SZERVEZETID IS NOT NULL
GROUP BY t.C_SZERVEZETID
INSERT INTO #Result(EntitasNev, SzervezetId, Cnt)
SELECT
'T_TANTARGY' AS EntitasNev
,tt.C_SZERVEZETID AS SzervezetId
,COUNT(1) AS Cnt
FROM T_ORARENDIORA_OSSZES oo
INNER JOIN T_TANTARGY_OSSZES tt ON tt.ID = oo.C_TANTARGYID
AND tt.TOROLT = 'F'
WHERE oo.C_TANARID = @pEntityId
AND oo.TOROLT = 'F'
AND tt.C_SZERVEZETID IS NOT NULL
GROUP BY tt.C_SZERVEZETID
END
-- csak visszaadjuk az eredményt
SELECT * FROM #Result
END
GO