﻿DROP PROCEDURE IF EXISTS [dbo].[sp_HelyettesitesekKeresese]
GO

CREATE PROCEDURE [dbo].[sp_HelyettesitesekKeresese]
  @IntezmenyId int,
  @TanevId int,
  @pHelyettesitettTanarId int,
  @pHelyettesitesKezdete datetime,
  @pHelyettesitesVege datetime
AS
BEGIN
SET NOCOUNT ON;
  
  CREATE TABLE #OrarendTable (
     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
    ,IsEgyediNap char(1)
    ,TeremTobbOratLehetTartani char(1)
    ,INDEX IX01 CLUSTERED (OraTipus, OraKezdete, OraVege)
  )
  
  INSERT INTO #OrarendTable (
    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
    ,IsEgyediNap
    ,TeremTobbOratLehetTartani
    )
  EXEC sp_GetOrarend 
    @pIntezmenyId = @IntezmenyId
    ,@pTanevId = @TanevId
    ,@pIdoszakKezdete = @pHelyettesitesKezdete
    ,@pIdoszakVege = @pHelyettesitesVege
    ,@pTanarId = @pHelyettesitettTanarId
    ,@pIsHelyettesitesNelkul  = 0
    ,@pOsztalyCsoportId  =  NULL
    ,@pTanuloId = NULL
    ,@pTantargyId  = NULL
    ,@pTeremId = NULL
    ,@pCsakOrarendiOrak  = 0
    ,@pIsNapirend = NULL
    
  SELECT
     NEWID() as ID
    ,Datum as HelyettesitettDatum
    ,ORARENDIID as HelyettesitettOrarendiOraId
    ,IIF(Oraszam = 0 AND CsengetesiRendOraID IS NULL, NULL, Oraszam) as HelyettesitettOraszam
    ,CsengetesiRendOraID as HelyettesitettCsengetesiRendOraId
    ,TantargyId as HelyettesitettTantargyID
    ,Datum + CAST(CAST(OraKezdete AS time) AS datetime) AS HelyettesitettOraKezdete
    ,Datum + CAST(CAST(OraVege AS time) AS datetime) AS HelyettesitettOraVege
    ,TargyNev as HelyettesitettTantargy
    ,ocs.C_NEV as HelyettesitettOsztaly
    ,OsztCsopId as HelyettesitettOsztalyId
    ,ocs.C_EVFOLYAMTIPUSA as HelyettesitettEvFolyamId
    ,TeremNev as HelyettesitettTerem  
    ,TeremId as HelyettesitettTeremId
    ,HelyettesitesId as HelyettesitesId
    ,IIF(Megtartott = 'F' AND ot.Id != ot.ORARENDIID, 'Elmaradt óra', HelyettesitoTanarNev) as HelyettesitoTanarNev
    ,Megtartott as IsMegtartott
    ,hi.C_HELYETTESITESTIPUS as HelyettesitesTipusId
    ,IIF (ot.Id != ot.ORARENDIID, ot.Id, NULL) AS TanoraId
  FROM #OrarendTable ot
    JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = OsztCsopId AND ocs.TOROLT = 'F'
    LEFT JOIN T_HELYETTESITESIIDOSZAK hi ON hi.ID = HelyettesitesId AND hi.TOROLT = 'F'
  WHERE ot.Id = ot.ORARENDIID OR (ot.Megtartott ='F' AND ot.Id != ot.ORARENDIID)
  ORDER BY HelyettesitettDatum, HelyettesitettOraszam
  
  DROP TABLE #OrarendTable

END
