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

80 lines
No EOL
2.4 KiB
Transact-SQL
Raw Blame History

DROP PROCEDURE IF EXISTS uspGetOrarendiOrakForOrarendekTorlese
GO
CREATE PROCEDURE uspGetOrarendiOrakForOrarendekTorlese
@pTanevId int
,@pIntervallumKezdete datetime
,@pIntervallumVege datetime
,@pNezetTipus int
,@pFeladatellatasiHelyJson nvarchar(max) = NULL
,@pOsztalyJson nvarchar(max) = NULL
,@pCsoportJson nvarchar(max) = NULL
AS
BEGIN
SET NOCOUNT ON
CREATE TABLE #OsztalyCsoportIds (Id int)
IF @pFeladatellatasiHelyJson IS NOT NULL
BEGIN
INSERT INTO #OsztalyCsoportIds
SELECT ocs.ID
FROM T_OSZTALYCSOPORT_OSSZES ocs
INNER JOIN OPENJSON(@pFeladatellatasiHelyJson)
WITH (Id int '$.Id') f ON ocs.C_FELADATELLATASIHELYID = f.Id
WHERE ocs.TOROLT = 'F' AND ocs.C_TANEVID = @pTanevId
END
ELSE IF @pOsztalyJson IS NOT NULL
BEGIN
INSERT INTO #OsztalyCsoportIds
SELECT o.Id
FROM OPENJSON(@pOsztalyJson)
WITH (Id int '$.Id', IsKellKapcsolodoCsoportok bit '$.IsKellKapcsolodoCsoportok', IsKellOsztalybontottCsoportok bit '$.IsKellOsztalybontottCsoportok') o
INSERT INTO #OsztalyCsoportIds
SELECT DISTINCT k.ID
FROM OPENJSON(@pOsztalyJson)
WITH (Id int '$.Id', IsKellKapcsolodoCsoportok bit '$.IsKellKapcsolodoCsoportok') o
CROSS APPLY fnGetKapcsolodoOsztalycsoportok(o.Id) k
WHERE o.IsKellKapcsolodoCsoportok = 1 and k.ID <> o.Id
INSERT INTO #OsztalyCsoportIds
SELECT cs.ID
FROM OPENJSON(@pOsztalyJson)
WITH (Id int '$.Id', IsKellKapcsolodoCsoportok bit '$.IsKellKapcsolodoCsoportok', IsKellOsztalybontottCsoportok bit '$.IsKellOsztalybontottCsoportok') o
INNER JOIN T_CSOPORT_OSSZES cs ON cs.C_OSZTALYBONTASID = o.Id
AND cs.TOROLT = 'F'
WHERE o.IsKellKapcsolodoCsoportok = 0
AND o.IsKellOsztalybontottCsoportok = 1
END
ELSE
BEGIN
INSERT INTO #OsztalyCsoportIds
SELECT cs.Id
FROM OPENJSON(@pCsoportJson)
WITH (Id int '$.Id') cs
END
SELECT
oo.ID
,oo.C_ORAERVENYESSEGKEZDETE
,oo.C_ORAERVENYESSEGVEGE
,oo.C_ORASZAM
FROM T_ORARENDIORA_OSSZES oo
INNER JOIN #OsztalyCsoportIds ocs ON oo.C_OSZTALYCSOPORTID = ocs.Id
WHERE oo.TOROLT = 'F' AND oo.C_TANEVID = @pTanevId
AND oo.C_ORAERVENYESSEGKEZDETE <= @pIntervallumVege AND oo.C_ORAERVENYESSEGVEGE >= @pIntervallumKezdete
AND (
@pNezetTipus = 2 -- Minden
OR (@pNezetTipus = 0 AND oo.C_ORASZAM IS NOT NULL) -- Csak tan<61>ra
OR (@pNezetTipus = 1 AND oo.C_ORASZAM IS NULL) -- Csak napirend
)
END
GO