109 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
-- Az óra éves sorszáma tantárgy, osztálycsoport és tanár alapján 
 | 
						|
-- TELEK ÁKOS
 | 
						|
-- 2017.03.03. 
 | 
						|
 | 
						|
IF OBJECT_ID('dbo.fnGetEvesOraszam') IS NOT NULL BEGIN
 | 
						|
  DROP FUNCTION dbo.fnGetEvesOraszam
 | 
						|
END
 | 
						|
GO
 | 
						|
 | 
						|
CREATE FUNCTION dbo.fnGetEvesOraszam (
 | 
						|
   @tantargyId int
 | 
						|
  ,@osztalycsoportId int
 | 
						|
  ,@tanarId int
 | 
						|
  ,@datum datetime
 | 
						|
  ,@intezmenyId int
 | 
						|
  ,@tanevId int
 | 
						|
)
 | 
						|
RETURNS int
 | 
						|
AS 
 | 
						|
BEGIN
 | 
						|
  DECLARE 
 | 
						|
     @tanarSzamit bit
 | 
						|
    ,@osztalybontasEgybe bit
 | 
						|
    ,@osztalybontasCsoport bit
 | 
						|
    ,@cnt int
 | 
						|
    
 | 
						|
  SET @tanarSzamit = dbo.fnGetRendszerbeallitasEnumBool(3075, @intezmenyId, @tanevId)  
 | 
						|
  SET @osztalybontasEgybe = dbo.fnGetRendszerbeallitasEnumBool(3078, @intezmenyId, @tanevId)
 | 
						|
  SET @osztalybontasCsoport = 0
 | 
						|
  
 | 
						|
  IF EXISTS (SELECT 1 FROM T_CSOPORT WHERE (ID = @osztalyCsoportId AND C_OSZTALYBONTASID IS NOT NULL) OR C_OSZTALYBONTASID = @osztalyCsoportId) BEGIN
 | 
						|
    SET @osztalybontasCsoport = 1
 | 
						|
  END  
 | 
						|
  
 | 
						|
  IF @osztalybontasEgybe = 0 OR @osztalybontasCsoport = 0 BEGIN
 | 
						|
    IF @tanarSzamit = 1 BEGIN
 | 
						|
      SELECT @cnt = COUNT(1)
 | 
						|
      FROM T_TANITASIORA_OSSZES t
 | 
						|
      WHERE t.C_MEGTARTOTT = 'T' 
 | 
						|
        AND t.C_SORSZAMOZANDO = 'T'
 | 
						|
        AND t.C_TANTARGYID = @tantargyId
 | 
						|
        AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId
 | 
						|
        AND t.C_TANARID = @tanarId
 | 
						|
        AND t.C_ORAKEZDETE <= @datum
 | 
						|
    END
 | 
						|
    ELSE BEGIN
 | 
						|
      SELECT @cnt = COUNT(1)
 | 
						|
      FROM T_TANITASIORA_OSSZES t
 | 
						|
      WHERE t.C_MEGTARTOTT = 'T' 
 | 
						|
        AND t.C_SORSZAMOZANDO = 'T'
 | 
						|
        AND t.C_TANTARGYID = @tantargyId
 | 
						|
        AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId
 | 
						|
        AND t.C_ORAKEZDETE <= @datum    
 | 
						|
    END
 | 
						|
  END 
 | 
						|
  ELSE BEGIN
 | 
						|
    IF @tanarSzamit = 1 BEGIN  
 | 
						|
      SELECT @cnt = COUNT(1)
 | 
						|
      FROM T_TANITASIORA_OSSZES t
 | 
						|
      WHERE t.C_TANTARGYID = @tantargyId
 | 
						|
        AND t.C_OSZTALYCSOPORTID IN (
 | 
						|
          SELECT cs.ID
 | 
						|
          FROM T_CSOPORT cs
 | 
						|
          WHERE cs.C_OSZTALYBONTASID = (SELECT scs.C_OSZTALYBONTASID FROM T_CSOPORT scs WHERE scs.ID = @osztalyCsoportId)
 | 
						|
          UNION  
 | 
						|
          SELECT cs.C_OSZTALYBONTASID 
 | 
						|
          FROM T_CSOPORT cs
 | 
						|
          WHERE cs.ID = @osztalyCsoportId
 | 
						|
          UNION
 | 
						|
          SELECT cs.ID
 | 
						|
          FROM T_CSOPORT cs
 | 
						|
          WHERE cs.C_OSZTALYBONTASID = @osztalyCsoportId
 | 
						|
          UNION
 | 
						|
          SELECT @osztalyCsoportId
 | 
						|
        )
 | 
						|
        AND t.C_TANARID = @tanarId
 | 
						|
        AND t.C_ORAKEZDETE <= @datum
 | 
						|
        AND t.C_SORSZAMOZANDO = 'T'
 | 
						|
        AND t.C_MEGTARTOTT = 'T'
 | 
						|
    END
 | 
						|
    ELSE BEGIN
 | 
						|
      SELECT @cnt = COUNT(1)
 | 
						|
      FROM T_TANITASIORA_OSSZES t
 | 
						|
      WHERE t.C_TANTARGYID = @tantargyId
 | 
						|
        AND t.C_OSZTALYCSOPORTID IN (
 | 
						|
          SELECT cs.ID
 | 
						|
          FROM T_CSOPORT cs
 | 
						|
          WHERE cs.C_OSZTALYBONTASID = (SELECT scs.C_OSZTALYBONTASID FROM T_CSOPORT scs WHERE scs.ID = @osztalyCsoportId)
 | 
						|
          UNION  
 | 
						|
          SELECT cs.C_OSZTALYBONTASID 
 | 
						|
          FROM T_CSOPORT cs
 | 
						|
          WHERE cs.ID = @osztalyCsoportId
 | 
						|
          UNION
 | 
						|
          SELECT cs.ID
 | 
						|
          FROM T_CSOPORT cs
 | 
						|
          WHERE cs.C_OSZTALYBONTASID = @osztalyCsoportId
 | 
						|
          UNION
 | 
						|
          SELECT @osztalyCsoportId
 | 
						|
        )
 | 
						|
        AND t.C_ORAKEZDETE <= @datum
 | 
						|
        AND t.C_SORSZAMOZANDO = 'T'
 | 
						|
        AND t.C_MEGTARTOTT = 'T'      
 | 
						|
    END
 | 
						|
  END
 | 
						|
  RETURN @cnt
 | 
						|
END
 | 
						|
GO
 | 
						|
 |