141 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			141 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
-- ================================
 | 
						|
-- 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 (SELECT C_VEZETOIORASZAMOK FROM T_MUNKAUGYIADATOK WHERE C_ALKALMAZOTTID = @tanarId) IN (6572, 6573, 6574) -- 6572 - Intézményvezető, 6573 - Tagintézmény-vezető, 6574 - Intézményegység-vezető
 | 
						|
	 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_OSZTALY o ON o.id = f.C_OSZTALYCSOPORTID
 | 
						|
          WHERE f.C_TANARID = @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_CSOPORT cs ON cs.id = f.C_OSZTALYCSOPORTID
 | 
						|
          WHERE f.C_TANARID = @tanarId
 | 
						|
            AND f.TOROLT = ''F''
 | 
						|
            AND cs.TOROLT = ''F'''
 | 
						|
      END
 | 
						|
    END
 | 
						|
  END
 | 
						|
  END
 | 
						|
END
 | 
						|
  EXEC sp_executesql @sql, N'@tanarId int', @tanarId
 | 
						|
  
 | 
						|
END
 | 
						|
GO
 | 
						|
 | 
						|
 
 |