﻿-- Az elõzõ óra adati tantárgy, osztálycsoport és tanár alapján
-- SZEKERES ANDRÁS (based on Telek Ákos fn_GetOraEvesSorszamLista)
-- 2017.05.08.
--Modifed by: Zalán Máriusz
--Date: 2018 10 03

IF OBJECT_ID('dbo.sp_GetElozoOraAdatai') IS NOT NULL BEGIN
  DROP PROCEDURE dbo.sp_GetElozoOraAdatai
END
GO

CREATE PROCEDURE dbo.sp_GetElozoOraAdatai 
   @tantargyId int
  ,@osztalycsoportId int
  ,@tanarId int
  ,@oraKezdeteDatum datetime
  ,@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 TOP 1
         tanora.ID AS Id
		,tanora.C_TEMA AS Tema
		,tanora.C_DATUM AS Datum
		,felhasznalo.C_NYOMTATASINEV AS HelyettesNev
        ,IIF(tanora.C_SORSZAMOZANDO = 'T', ROW_NUMBER() OVER (PARTITION BY tanora.C_SORSZAMOZANDO ORDER BY tanora.C_ORAKEZDETE), NULL) AS EvesSorszam
      FROM T_TANITASIORA_OSSZES tanora
		LEFT JOIN T_FELHASZNALO felhasznalo ON felhasznalo.ID = tanora.C_HELYETTESITOTANARID
      WHERE tanora.C_TANEVID = @tanevId 
        AND tanora.C_INTEZMENYID = @intezmenyId
        AND tanora.C_MEGTARTOTT = 'T' 
		AND tanora.TOROLT = 'F'
        AND tanora.C_TANTARGYID = @tantargyId
        AND tanora.C_OSZTALYCSOPORTID = @osztalyCsoportId
        AND tanora.C_TANARID = @tanarId
        AND tanora.C_ORAKEZDETE <= @oraKezdeteDatum
	  ORDER BY tanora.C_ORAKEZDETE DESC
    END
    ELSE BEGIN
      SELECT TOP 1
         tanora.ID AS Id
		,tanora.C_TEMA AS Tema
		,tanora.C_DATUM AS Datum
		,felhasznalo.C_NYOMTATASINEV AS HelyettesNev
        ,IIF(tanora.C_SORSZAMOZANDO = 'T', ROW_NUMBER() OVER (PARTITION BY tanora.C_SORSZAMOZANDO ORDER BY tanora.C_ORAKEZDETE), NULL) AS EvesSorszam
      FROM T_TANITASIORA_OSSZES tanora
	    LEFT JOIN T_FELHASZNALO felhasznalo ON felhasznalo.ID = tanora.C_HELYETTESITOTANARID
      WHERE tanora.C_TANEVID = @tanevId
        AND tanora.C_INTEZMENYID = @intezmenyId
        AND tanora.C_MEGTARTOTT = 'T' 
        AND tanora.TOROLT = 'F'
        AND tanora.C_TANTARGYID = @tantargyId
        AND tanora.C_OSZTALYCSOPORTID = @osztalyCsoportId
        AND tanora.C_ORAKEZDETE <= @oraKezdeteDatum
	  ORDER BY tanora.C_ORAKEZDETE DESC
    END
  END 
  ELSE BEGIN
    IF @tanarSzamit = 1 BEGIN  
      SELECT TOP 1
         tanora.ID AS Id
		,tanora.C_TEMA AS Tema
		,tanora.C_DATUM AS Datum
		,felhasznalo.C_NYOMTATASINEV AS HelyettesNev
        ,IIF(tanora.C_SORSZAMOZANDO = 'T', ROW_NUMBER() OVER (PARTITION BY tanora.C_SORSZAMOZANDO ORDER BY tanora.C_ORAKEZDETE), NULL) AS EvesSorszam
      FROM T_TANITASIORA_OSSZES tanora
		LEFT JOIN T_FELHASZNALO felhasznalo ON felhasznalo.ID = tanora.C_HELYETTESITOTANARID
      WHERE tanora.C_TANEVID = @tanevId 
        AND tanora.C_INTEZMENYID = @intezmenyId
        AND tanora.C_TANTARGYID = @tantargyId
        AND tanora.C_OSZTALYCSOPORTID IN (
		  SELECT cs.ID FROM T_CSOPORT cs
          WHERE NOT(cs.ID <> @osztalyCSoportID AND cs.C_OSZTALYBONTASID<>@osztalyCSoportID AND NOT EXISTS(SELECT 1 FROM T_CSOPORT cs2 WHERE cs2.C_OSZTALYBONTASID=cs.C_OSZTALYBONTASID AND cs2.ID=@osztalyCSoportID))
          UNION 
          SELECT C_OSZTALYBONTASID FROM T_CSOPORT WHERE ID=@osztalyCSoportID
        )
        AND tanora.C_TANARID = @tanarId
        AND tanora.C_ORAKEZDETE <= @oraKezdeteDatum
        AND tanora.TOROLT = 'F'
        AND tanora.C_MEGTARTOTT = 'T'
	  ORDER BY tanora.C_ORAKEZDETE DESC
    END
    ELSE BEGIN
      SELECT TOP 1
         tanora.ID AS Id
		,tanora.C_TEMA AS Tema
		,tanora.C_DATUM AS Datum
		,felhasznalo.C_NYOMTATASINEV AS HelyettesNev
        ,IIF(tanora.C_SORSZAMOZANDO = 'T', ROW_NUMBER() OVER (PARTITION BY tanora.C_SORSZAMOZANDO ORDER BY tanora.C_ORAKEZDETE), NULL) AS EvesSorszam
      FROM T_TANITASIORA_OSSZES tanora
	    LEFT JOIN T_FELHASZNALO felhasznalo ON felhasznalo.ID = tanora.C_HELYETTESITOTANARID
      WHERE tanora.C_TANEVID = @tanevId 
        AND tanora.C_INTEZMENYID = @intezmenyId
        AND tanora.C_TANTARGYID = @tantargyId
        AND tanora.C_OSZTALYCSOPORTID IN (
          SELECT cs.ID FROM T_CSOPORT cs
          WHERE NOT(cs.ID <> @osztalyCSoportID AND cs.C_OSZTALYBONTASID<>@osztalyCSoportID AND NOT EXISTS(SELECT 1 FROM T_CSOPORT cs2 WHERE cs2.C_OSZTALYBONTASID=cs.C_OSZTALYBONTASID AND cs2.ID=@osztalyCSoportID))
          UNION 
          SELECT C_OSZTALYBONTASID FROM T_CSOPORT WHERE ID=@osztalyCSoportID
        )
        AND tanora.C_ORAKEZDETE <= @oraKezdeteDatum
        AND tanora.TOROLT = 'F'
        AND tanora.C_MEGTARTOTT = 'T'
	  ORDER BY tanora.C_ORAKEZDETE DESC
    END
  END
 
END
GO