-- ================================ -- CREATED: 2017-02-17 -- CREATOR: Telek Ákos -- ================================ -- -- A négy paraméter az alábbi: -- • Tanár ID-ja -- • Kellenek-e osztályok (ez szinte mindig igaz érték, azt állítja, hogy a lekérdezés a kapcsolódó osztályokat is include-olja) -- • Kellenek-e csoportok (ez azt állítja, hogy a lekérdezés a kapcsolódó csoportokat is include-olja) -- • Kellenek-e azok, amelyekben "csak" tanít, azaz nem ofő, vagy ilyesmi, hanem csak tanítja (ez pl osztályfőnöki funkcióknál, mulasztások kezelése hasonló esetekben hamis, azaz 0, de például feljegyzéseknél igaz). -- Ahol át kell vezetni (zárójelben a három változó paraméter státusza): -- • Tanári feladatok / Feljegyzések (1,1,1), Faliújság (1,1,1) illetve Tanított tanulók (1,1,1) -- • Osztályfőnöki feladatok / Igazolások (1,1,0), Mulasztások kezelése (1,1,0), Naplóellenőrzés (1,0,0), Osztály tanulói (1,0,0) -- • Dokumentumoknál, ha tanár nyitja meg, akkor szintén -- -- Használata: -- -- DECLARE @kapcsolodoOsztalyok TABLE (ID int) -- INSERT INTO @kapcsolodoOsztalyok (ID) -- EXEC sp_GetTanarKapcsolodoOsztalyai (150621, 1, 1, 1) -- -- SELECT * -- FROM T_TABLE t -- INNER JOIN @kapcsolodoOsztalyok k ON t.C_OSZTALYCSOPORTID = k.ID -- IF OBJECT_ID(N'dbo.sp_GetTanarKapcsolodoOsztalyai') IS NOT NULL BEGIN DROP PROCEDURE dbo.sp_GetTanarKapcsolodoOsztalyai END GO CREATE PROCEDURE dbo.sp_GetTanarKapcsolodoOsztalyai @tanarId int ,@osztalyKell bit = 1 ,@csoportKell bit = 1 ,@tartottOraKell bit = 1 AS BEGIN DECLARE @sql nvarchar(max) 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 = @tanarId) BEGIN IF @osztalyKell = 1 BEGIN SET @sql = N' SELECT o.ID FROM T_OSZTALY o WHERE C_ALTANEVID = (SELECT ID FROM T_TANEV WHERE C_AKTIV = ''T'') AND TOROLT = ''F''' END IF @csoportKell = 1 BEGIN SET @sql = ISNULL(@sql + CHAR(13) + CHAR(10) + N'UNION' + CHAR(13) + CHAR(10), N'') + N' SELECT cs.ID FROM T_CSOPORT cs WHERE C_ALTANEVID = (SELECT ID FROM T_TANEV WHERE C_AKTIV = ''T'') AND TOROLT = ''F''' END END ELSE BEGIN IF (SELECT C_MUNKAKORTIPUSA FROM T_MUNKAUGYIADATOK WHERE C_ALKALMAZOTTID = @tanarId) IN (1762, 1763, 3027, 3028) BEGIN IF @osztalyKell = 1 BEGIN SET @sql = N' SELECT o.ID FROM T_OSZTALY o WHERE C_ALTANEVID = (SELECT ID FROM T_TANEV WHERE C_AKTIV = ''T'') AND TOROLT = ''F''' END IF @csoportKell = 1 BEGIN SET @sql = ISNULL(@sql + CHAR(13) + CHAR(10) + N'UNION' + CHAR(13) + CHAR(10), N'') + N' SELECT cs.ID FROM T_CSOPORT cs WHERE C_ALTANEVID = (SELECT ID FROM T_TANEV WHERE C_AKTIV = ''T'') AND TOROLT = ''F''' END END ELSE BEGIN IF @osztalyKell = 1 BEGIN SET @sql = N' SELECT ocs.ID FROM T_OSZTALYCSOPORT ocs INNER JOIN T_OSZTALY o ON o.ID = ocs.ID WHERE (o.C_OSZTALYFONOKID = @tanarId OR o.C_OFOHELYETTESID = @tanarId) AND ocs.TOROLT = ''F''' END IF @csoportKell = 1 BEGIN SET @sql = ISNULL(@sql + CHAR(13) + CHAR(10) + N'UNION' + CHAR(13) + CHAR(10), N'') + N' SELECT ocs.ID FROM T_OSZTALYCSOPORT ocs INNER JOIN T_CSOPORT cs ON cs.ID = ocs.ID WHERE cs.C_CSOPORTVEZETOID = @tanarId AND ocs.TOROLT = ''F''' END IF @tartottOraKell = 1 BEGIN IF @osztalyKell = 1 BEGIN SET @sql = ISNULL(@sql + CHAR(13) + CHAR(10) + 'UNION' + CHAR(13) + CHAR(10), '') + ' SELECT f.C_OSZTALYCSOPORTID FROM T_FOGLALKOZAS f INNER JOIN T_FOGLALKOZASOK_TANAROK ft ON ft.C_FOGLALKOZASOKID = f.ID INNER JOIN T_OSZTALY o ON o.id = f.C_OSZTALYCSOPORTID WHERE ft.C_TANAROKID = @tanarId AND f.TOROLT = ''F'' AND o.TOROLT = ''F''' END IF @osztalyKell = 1 BEGIN SET @sql = ISNULL(@sql + CHAR(13) + CHAR(10) + 'UNION' + CHAR(13) + CHAR(10), '') + ' SELECT f.C_OSZTALYCSOPORTID FROM T_FOGLALKOZAS f INNER JOIN T_FOGLALKOZASOK_TANAROK ft ON ft.C_FOGLALKOZASOKID = f.ID INNER JOIN T_CSOPORT cs ON cs.id = f.C_OSZTALYCSOPORTID WHERE ft.C_TANAROKID = @tanarId AND f.TOROLT = ''F'' AND cs.TOROLT = ''F''' END END END END EXEC sp_executesql @sql, N'@tanarId int', @tanarId END GO