144 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			144 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
DROP PROCEDURE IF EXISTS uspGetEvesOraszamForTantargyAndOsztaly
 | 
						|
GO
 | 
						|
 | 
						|
CREATE PROCEDURE uspGetEvesOraszamForTantargyAndOsztaly
 | 
						|
   @pTanevId int
 | 
						|
  ,@pIntezmenyId int
 | 
						|
  ,@pOsztalyCsoportId int
 | 
						|
  ,@pTantargyId int
 | 
						|
  ,@pBeallitasTanarSzamit int
 | 
						|
  ,@pBeallitasOsztalybontasEgybe int
 | 
						|
AS BEGIN
 | 
						|
  SET NOCOUNT ON;
 | 
						|
 | 
						|
  DECLARE
 | 
						|
     @pTanarSzamit bit
 | 
						|
    ,@pOsztalybontasEgybe bit
 | 
						|
    ,@pOsztalybontasCsoport bit
 | 
						|
 | 
						|
  SET @pTanarSzamit = dbo.fnGetRendszerbeallitasEnumBool(@pBeallitasTanarSzamit, @pIntezmenyId, @pTanevId)
 | 
						|
  SET @pOsztalybontasEgybe = dbo.fnGetRendszerbeallitasEnumBool(@pBeallitasOsztalybontasEgybe, @pIntezmenyId, @pTanevId)
 | 
						|
 | 
						|
  IF EXISTS (SELECT 1
 | 
						|
             FROM T_CSOPORT_OSSZES cs
 | 
						|
             WHERE cs.TOROLT = 'F'
 | 
						|
               AND cs.C_ALTANEVID = @pTanevId
 | 
						|
               AND ((cs.ID = @pOsztalyCsoportId AND cs.C_OSZTALYBONTASID IS NOT NULL) OR cs.C_OSZTALYBONTASID = @pOsztalyCsoportId))
 | 
						|
  BEGIN
 | 
						|
    SET @pOsztalybontasCsoport = 1
 | 
						|
  END
 | 
						|
 | 
						|
  IF @pOsztalybontasEgybe = 0 OR @pOsztalybontasCsoport = 0
 | 
						|
  BEGIN
 | 
						|
    IF @pTanarSzamit = 1
 | 
						|
    BEGIN
 | 
						|
 | 
						|
      SELECT
 | 
						|
        COUNT(t.ID) AS EvesOraszam
 | 
						|
      FROM T_TANITASIORA_OSSZES t
 | 
						|
      WHERE t.C_MEGTARTOTT = 'T'
 | 
						|
        AND t.C_SORSZAMOZANDO = 'T'
 | 
						|
        AND t.C_TANTARGYID = @pTantargyId
 | 
						|
        AND t.C_OSZTALYCSOPORTID = @pOsztalyCsoportId
 | 
						|
        AND t.C_TANEVID = @pTanevId
 | 
						|
        AND t.TOROLT = 'F'
 | 
						|
      GROUP BY t.C_TANARID
 | 
						|
 | 
						|
    END
 | 
						|
    ELSE
 | 
						|
    BEGIN
 | 
						|
 | 
						|
      SELECT
 | 
						|
        COUNT(t.ID) AS EvesOraszam
 | 
						|
      FROM T_TANITASIORA_OSSZES t
 | 
						|
      WHERE t.C_MEGTARTOTT = 'T'
 | 
						|
        AND t.C_SORSZAMOZANDO = 'T'
 | 
						|
        AND t.C_TANTARGYID = @pTantargyId
 | 
						|
        AND t.C_OSZTALYCSOPORTID = @pOsztalyCsoportId
 | 
						|
        AND t.C_TANEVID = @pTanevId
 | 
						|
        AND t.TOROLT = 'F'
 | 
						|
 | 
						|
    END
 | 
						|
  END
 | 
						|
  ELSE
 | 
						|
  BEGIN
 | 
						|
 | 
						|
    CREATE TABLE #KapcsolodoOsztalyCsoportok (
 | 
						|
       ID int
 | 
						|
      ,PRIMARY KEY (ID)
 | 
						|
    )
 | 
						|
 | 
						|
    INSERT INTO #KapcsolodoOsztalyCsoportok (
 | 
						|
      ID
 | 
						|
    )
 | 
						|
    (
 | 
						|
      SELECT cs.ID AS ID
 | 
						|
      FROM T_CSOPORT_OSSZES cs
 | 
						|
      WHERE cs.TOROLT = 'F'
 | 
						|
        AND cs.C_ALTANEVID = @pTanevId
 | 
						|
        AND cs.C_OSZTALYBONTASID =
 | 
						|
        (
 | 
						|
          SELECT scs.C_OSZTALYBONTASID
 | 
						|
          FROM T_CSOPORT_OSSZES scs
 | 
						|
          WHERE scs.TOROLT = 'F'
 | 
						|
            AND scs.C_ALTANEVID = @pTanevId
 | 
						|
            AND scs.ID = @pOsztalyCsoportId
 | 
						|
            AND scs.C_OSZTALYBONTASID IS NOT NULL
 | 
						|
        )
 | 
						|
 | 
						|
      UNION
 | 
						|
 | 
						|
      SELECT cs.C_OSZTALYBONTASID AS ID
 | 
						|
      FROM T_CSOPORT_OSSZES cs
 | 
						|
      WHERE cs.TOROLT = 'F'
 | 
						|
        AND cs.C_ALTANEVID = @pTanevId
 | 
						|
        AND cs.ID = @pOsztalyCsoportId
 | 
						|
        AND cs.C_OSZTALYBONTASID IS NOT NULL
 | 
						|
 | 
						|
      UNION
 | 
						|
 | 
						|
      SELECT cs.ID AS ID
 | 
						|
      FROM T_CSOPORT_OSSZES cs
 | 
						|
      WHERE cs.TOROLT = 'F'
 | 
						|
        AND cs.C_ALTANEVID = @pTanevId
 | 
						|
        AND cs.C_OSZTALYBONTASID = @pOsztalyCsoportId
 | 
						|
 | 
						|
      UNION
 | 
						|
 | 
						|
      SELECT @pOsztalyCsoportId AS ID
 | 
						|
    )
 | 
						|
 | 
						|
    IF @pTanarSzamit = 1
 | 
						|
    BEGIN
 | 
						|
 | 
						|
      SELECT
 | 
						|
        COUNT(t.ID) AS EvesOraszam
 | 
						|
      FROM T_TANITASIORA_OSSZES t
 | 
						|
        INNER JOIN #KapcsolodoOsztalyCsoportok k ON k.ID = t.C_OSZTALYCSOPORTID
 | 
						|
      WHERE t.C_MEGTARTOTT = 'T'
 | 
						|
        AND t.C_SORSZAMOZANDO = 'T'
 | 
						|
        AND t.C_TANTARGYID = @pTantargyId
 | 
						|
        AND t.C_TANEVID = @pTanevId
 | 
						|
        AND t.TOROLT = 'F'
 | 
						|
      GROUP BY t.C_TANARID
 | 
						|
 | 
						|
    END
 | 
						|
    ELSE
 | 
						|
    BEGIN
 | 
						|
 | 
						|
      SELECT
 | 
						|
        COUNT(t.ID) AS EvesOraszam
 | 
						|
      FROM T_TANITASIORA_OSSZES t
 | 
						|
        INNER JOIN #KapcsolodoOsztalyCsoportok k ON k.ID = t.C_OSZTALYCSOPORTID
 | 
						|
      WHERE t.C_MEGTARTOTT = 'T'
 | 
						|
        AND t.C_SORSZAMOZANDO = 'T'
 | 
						|
        AND t.C_TANTARGYID = @pTantargyId
 | 
						|
        AND t.C_TANEVID = @pTanevId
 | 
						|
        AND t.TOROLT = 'F'
 | 
						|
 | 
						|
    END
 | 
						|
  END
 | 
						|
END
 | 
						|
 | 
						|
GO
 |