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óra OR (@pNezetTipus = 1 AND oo.C_ORASZAM IS NULL) -- Csak napirend ) END GO