DROP PROCEDURE IF EXISTS dbo.uspGetDokumentumTanarKapcsolodoOsztalyai GO CREATE PROCEDURE dbo.uspGetDokumentumTanarKapcsolodoOsztalyai @pTanarId int ,@pTanevId int ,@pOsztalyKell bit = 1 ,@pCsoportKell bit = 1 ,@pTartottOraKell bit = 1 ,@pFeladatKategoriaId int = null AS BEGIN DECLARE @sql nvarchar(max) DECLARE @intezmenyId int ,@rendszerBeallitas bit SELECT @intezmenyId = C_INTEZMENYID FROM T_TANEV_OSSZES WHERE ID = @pTanevId AND TOROLT = 'F' SET @rendszerBeallitas = (SELECT dbo.fnGetRendszerbeallitasEnumBool(7802, @intezmenyId, @pTanevId)) -- osszes_dokumentum_eleresenek_engedelyezese_szaktanarok_es_osztalyfonokok_reszere IF (1758 IN (SELECT C_SZEREPKORTIPUS FROM T_FELHASZNALO_SZEREPKOR INNER JOIN T_SZEREPKOR ON T_SZEREPKOR.ID = T_FELHASZNALO_SZEREPKOR.C_SZEREPKORID WHERE T_FELHASZNALO_SZEREPKOR.C_FELHASZNALOID = @pTanarId)) OR ((SELECT C_MUNKAKORTIPUSA FROM T_MUNKAUGYIADATOK WHERE C_ALKALMAZOTTID = @pTanarId) IN (1762, 1763, 3027, 3028)) OR ((SELECT C_VEZETOIORASZAMOK FROM T_MUNKAUGYIADATOK WHERE C_ALKALMAZOTTID = @pTanarId) IN (6572, 6573, 6574)) -- 6572 - Intézményvezető, 6573 - Tagintézmény-vezető, 6574 - Intézményegység-vezető OR (@rendszerBeallitas = 1) BEGIN IF @pOsztalyKell = 1 BEGIN SET @sql = CONCAT(N' SELECT o.ID FROM T_OSZTALY_OSSZES o INNER JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON OsztalyCsoport.ID = o.ID', IIF(@pFeladatKategoriaId IS NOT NULL ,N' AND OsztalyCsoport.C_FELADATKATEGORIAID = @pFeladatKategoriaId' ,'') ,N' AND OsztalyCsoport.C_TANEVID = o.C_ALTANEVID AND OsztalyCsoport.TOROLT = ''F'' WHERE o.C_ALTANEVID = @pTanevId AND o.TOROLT = ''F''') END IF @pCsoportKell = 1 BEGIN SET @sql = ISNULL(@sql + CHAR(13) + CHAR(10) + N'UNION ALL' + CHAR(13) + CHAR(10), N'') + CONCAT(N' SELECT cs.ID FROM T_CSOPORT_OSSZES cs INNER JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON OsztalyCsoport.ID = cs.ID', IIF(@pFeladatKategoriaId IS NOT NULL ,N' AND OsztalyCsoport.C_FELADATKATEGORIAID = @pFeladatKategoriaId' ,'') ,N' AND OsztalyCsoport.C_TANEVID = cs.C_ALTANEVID AND OsztalyCsoport.TOROLT = ''F'' WHERE cs.C_ALTANEVID = @pTanevId AND cs.TOROLT = ''F''') END END ELSE BEGIN IF @pOsztalyKell = 1 BEGIN SET @sql = CONCAT(N' SELECT ocs.ID FROM T_OSZTALYCSOPORT_OSSZES ocs INNER JOIN T_OSZTALY_OSSZES o ON o.ID = ocs.ID AND o.C_ALTANEVID = ocs.C_TANEVID AND o.TOROLT = ''F'' WHERE (o.C_OSZTALYFONOKID = @pTanarId OR o.C_OFOHELYETTESID = @pTanarId)', IIF(@pFeladatKategoriaId IS NOT NULL ,N' AND ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId' ,'') ,N' AND ocs.C_TANEVID = @pTanevId AND ocs.TOROLT = ''F''') END IF @pCsoportKell = 1 BEGIN SET @sql = ISNULL(@sql + CHAR(13) + CHAR(10) + N'UNION ALL' + CHAR(13) + CHAR(10), N'') + CONCAT(N' SELECT ocs.ID FROM T_OSZTALYCSOPORT_OSSZES ocs INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = ocs.ID AND cs.C_ALTANEVID = ocs.C_TANEVID AND cs.TOROLT = ''F'' WHERE cs.C_CSOPORTVEZETOID = @pTanarId', IIF(@pFeladatKategoriaId IS NOT NULL ,N' AND ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId' ,'') ,N' AND ocs.C_TANEVID = @pTanevId AND ocs.TOROLT = ''F''') END IF @pTartottOraKell = 1 BEGIN IF @pOsztalyKell = 1 BEGIN SET @sql = ISNULL(@sql + CHAR(13) + CHAR(10) + 'UNION' + CHAR(13) + CHAR(10), '') + ' SELECT f.C_OSZTALYCSOPORTID FROM T_FOGLALKOZAS_OSSZES f INNER JOIN T_OSZTALY_OSSZES o ON o.id = f.C_OSZTALYCSOPORTID AND o.C_ALTANEVID = f.C_TANEVID AND o.TOROLT = ''F'' WHERE f.C_TANARID = @pTanarId AND f.C_TANEVID = @pTanevId AND f.TOROLT = ''F''' END IF @pCsoportKell = 1 BEGIN SET @sql = ISNULL(@sql + CHAR(13) + CHAR(10) + 'UNION' + CHAR(13) + CHAR(10), '') + ' SELECT f.C_OSZTALYCSOPORTID FROM T_FOGLALKOZAS_OSSZES f INNER JOIN T_CSOPORT cs ON cs.id = f.C_OSZTALYCSOPORTID AND cs.C_ALTANEVID = f.C_TANEVID AND cs.TOROLT = ''F'' WHERE f.C_TANARID = @pTanarId AND f.C_TANEVID = @pTanevId AND f.TOROLT = ''F''' END END END EXEC sp_executesql @sql, N'@pTanarId int, @pFeladatKategoriaId int, @pTanevId int', @pTanarId, @pFeladatKategoriaId, @pTanevId END GO