﻿IF OBJECT_ID('sp_GetOraEvesSorszama') IS NOT NULL BEGIN
  DROP PROCEDURE sp_GetOraEvesSorszama
END
GO

CREATE PROCEDURE sp_GetOraEvesSorszama
  @tantargyId int,
  @osztalyCsoportId int,
  @datum datetime,
  @oraTulajdonosId int,
  @intezmenyId int,
  @tanevId int
AS
BEGIN
  DECLARE @tanarSzamit bit,
    @osztalybontasEgybe bit,
    @osztalybontasCsoport bit
    
  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 COUNT(1) AS cnt
      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_ORATULAJDONOSID = @oraTulajdonosId
        AND t.C_ORAKEZDETE <= @datum
        AND t.C_TANEVID = @tanevId
        AND t.TOROLT = 'F'
    END
    ELSE BEGIN
      SELECT COUNT(1)  AS cnt
      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
        AND t.C_TANEVID = @tanevId
        AND t.TOROLT = 'F'
    END
  END 
  ELSE BEGIN
    IF @tanarSzamit = 1 BEGIN  
      SELECT COUNT(1) AS cnt
      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_ORATULAJDONOSID = @oraTulajdonosId
        AND t.C_ORAKEZDETE <= @datum
        AND t.C_SORSZAMOZANDO = 'T'
        AND t.C_MEGTARTOTT = 'T'
        AND t.C_TANEVID = @tanevId
        AND t.TOROLT = 'F'
    END
    ELSE BEGIN
      SELECT COUNT(1) AS cnt
      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' 
        AND t.C_TANEVID = @tanevId
        AND t.TOROLT = 'F'     
    END
  END
END
GO

