﻿DROP PROCEDURE IF EXISTS uspGetKiirtHelyettesitesek
GO

CREATE PROCEDURE uspGetKiirtHelyettesitesek
   @pIntezmenyId int
  ,@pTanevId int
  ,@pTanarId int
  ,@pDarab int
AS BEGIN
  SET NOCOUNT ON;

  DECLARE
     @pIdoszakKezdete datetime
    ,@pIdoszakVege datetime

  CREATE TABLE #OrarendiOrak (
     Id int
    ,ORARENDIID int
    ,Datum datetime
    ,Bontott char (1)
    ,Hetirend int
    ,HetNapja int
    ,HetSorszam int
    ,ErvenyessegKezdete datetime
    ,ErvenyessegVege datetime
    ,OraKezdete datetime
    ,OraVege datetime
    ,Oraszam int
    ,TargyNev nvarchar (300)
    ,TargyNevForMobile nvarchar (300)
    ,TargykategoriaID int
    ,Megtartott char (1)
    ,CsengetesiRendOraID int
    ,CsengetesiRendID int
    ,MaxNapiOraszam int
    ,OsztalyNev nvarchar (255)
    ,TanevRendOsztalyCsoportId int
    ,MegjelenesOka nvarchar (300)
    ,TanarNev nvarchar (255)
    ,TeremNev nvarchar (255)
    ,TeremId int
    ,OraTipus nvarchar (200)
    ,Hianyzas char (1)
    ,Keses char (1)
    ,Ures char (1)
    ,HelyettesitoTanarID int
    ,HelyettesitoTanarNev nvarchar (255)
    ,HelyettesitesId int
    ,TanarID int
    ,AdminAltalKiirt char (1)
    ,GroupId int
    ,Tema nvarchar (max)
    ,TantargyId int
    ,OsztCsopId int
    ,INDEX IX1 CLUSTERED(Datum, HetNapja, Oraszam, TanevRendOsztalyCsoportId, TantargyId, TanarID)
  )

  SELECT
     @pIdoszakKezdete = (CASE WHEN tanev.C_AKTIV = 'T' THEN GETDATE() ELSE tanev.C_ELSOTANITASINAP END)
    ,@pIdoszakVege = tanev.C_UTOLSOTANITASINAP
  FROM T_TANEV_OSSZES tanev
  WHERE tanev.TOROLT = 'F'
    AND tanev.ID = @pTanevId
    AND tanev.C_INTEZMENYID = @pIntezmenyId

  INSERT INTO #OrarendiOrak (
     Id
    ,ORARENDIID
    ,Datum
    ,Bontott
    ,Hetirend
    ,HetNapja
    ,HetSorszam
    ,ErvenyessegKezdete
    ,ErvenyessegVege
    ,OraKezdete
    ,OraVege
    ,Oraszam
    ,TargyNev
    ,TargyNevForMobile
    ,TargykategoriaID
    ,Megtartott
    ,CsengetesiRendOraID
    ,CsengetesiRendID
    ,MaxNapiOraszam
    ,OsztalyNev
    ,TanevRendOsztalyCsoportId
    ,MegjelenesOka
    ,TanarNev
    ,TeremNev
    ,TeremId
    ,OraTipus
    ,Hianyzas
    ,Keses
    ,Ures
    ,HelyettesitoTanarID
    ,HelyettesitoTanarNev
    ,HelyettesitesId
    ,TanarID
    ,AdminAltalKiirt
    ,GroupId
    ,Tema
    ,TantargyId
    ,OsztCsopId
  )
  EXEC sp_GetOrarend
     @pIntezmenyId = @pIntezmenyId
    ,@pTanevId = @pTanevId
    ,@pIdoszakKezdete = @pIdoszakKezdete
    ,@pIdoszakVege = @pIdoszakVege
    ,@pTanarId = @pTanarId
    ,@pIsHelyettesitesNelkul = 0
    ,@pOsztalyCsoportId = NULL
    ,@pTanuloId = NULL
    ,@pTantargyId = NULL
    ,@pTeremId = NULL
    ,@pCsakOrarendiOrak = 0
    ,@pIsNapirend = NULL

  SELECT TOP (@pDarab)
     orak.Id AS Id
    ,CONVERT(nvarchar (25), OraKezdete, 102) AS Datum
    ,IIF(orak.CsengetesiRendID IS NOT NULL, orak.Oraszam, N'-') AS Oraszam
    ,orak.OsztalyNev AS OsztalyCsoport
    ,orak.TargyNev AS Tantargy
  FROM #OrarendiOrak orak
  WHERE orak.OraTipus = N'OrarendiOra'
    AND orak.OraKezdete <= @pIdoszakVege
    AND orak.OraVege >= @pIdoszakKezdete
    AND orak.HelyettesitoTanarID = @pTanarId
  ORDER BY orak.OraKezdete ASC

END
GO
