﻿DROP PROCEDURE IF EXISTS sp_GetDokumentumHelyettesitesekByDateInterval
GO

CREATE PROCEDURE sp_GetDokumentumHelyettesitesekByDateInterval
   @tanevId            INT
  ,@intezmenyId          INT
  ,@helyettesitesListaFormatumId  INT = 0 --0 helyettesitett, 1 helyettesito
  ,@idoszakKezdete        DATE
  ,@idoszakVege          DATE

AS
BEGIN
  SET NOCOUNT ON;

  CREATE TABLE #OrarendAdatok (
    Datum datetime
    ,HetNapja int
    ,OraKezdete datetime
    ,OraVege datetime
    ,Oraszam int
    ,Megtartott char(1)
    ,OsztalyNev nvarchar(255)
    ,TanarNev nvarchar(255)
    ,TeremNev nvarchar(255)
    ,OraTipus nvarchar(200)
    ,HelyettesitoTanarID int
    ,HelyettesitoTanarNev nvarchar(255)
    ,HelyettesitesId int
    ,TanarID int
    ,TantargyId int
  )

  INSERT INTO #OrarendAdatok (
     Datum
    ,HetNapja
    ,OraKezdete
    ,OraVege
    ,Oraszam
    ,Megtartott
    ,OsztalyNev
    ,TanarNev
    ,TeremNev
    ,OraTipus
    ,HelyettesitoTanarID 
    ,HelyettesitoTanarNev
    ,HelyettesitesId
    ,TanarID
    ,TantargyId
  )
  EXEC 
    dbo.sp_GetOrarend
       @pIntezmenyId = @IntezmenyId
      ,@pTanevId = @TanevId
      ,@pIdoszakKezdete = @IdoszakKezdete
      ,@pIdoszakVege = @IdoszakVege  
      ,@pTanarId = NULL
      ,@pIsHelyettesitesNelkul  = 0
      ,@pOsztalyCsoportId = NULL
      ,@pTanuloId = NULL
      ,@pTantargyId = NULL
      ,@pTeremId = NULL
      ,@pCsakOrarendiOrak  = 0
      ,@pIsNapirend = NULL
      ,@pOszlopok = 'Datum,HetNapja,OraKezdete,OraVege,Oraszam,Megtartott,OsztalyNev,TanarNev,TeremNev,OraTipus,HelyettesitoTanarID,HelyettesitoTanarNev,HelyettesitesId,TanarID,TantargyId'

  SELECT 
     hely.HelyettesitoTanarID AS  HelyettesitoId
    ,hely.TanarID AS  HelyettesitettId
    ,dbo.fnGetDokumentumDatumFormatum(hely.Datum) AS  HetNapja
    ,HetNapja.C_NAME AS  HetNapjaMegnevezes
    ,IIF(hely.Oraszam IS NOT NULL,CONVERT(NVARCHAR(5), hely.Oraszam) + '.', 
      CONCAT(CONVERT(NVARCHAR(5), hely.OraKezdete, 108), '-', CONVERT(NVARCHAR(5), hely.OraVege, 108))) AS  Oraszam
    ,IIF(hely.OraTipus = 'TanitasiOra' AND hely.Megtartott = 'F', 'Elmaradt óra', hely.HelyettesitoTanarNev) AS  HelyettesitoNeve
    ,hely.TanarNev  AS  HelyettesitettNeve
    ,hely.OsztalyNev  AS  OsztalyCsoportNev
    ,tantargy.C_NEV AS  TantargyNev
    ,hely.TeremNev  AS  TeremNev
    ,HelyettesitesTipusa.C_NAME AS  HelyettesitesTipusa
    ,helyettesito.C_OKTATASIAZONOSITO AS  HelyettesitoOktatasiAzon
    ,helyettesitesett.C_OKTATASIAZONOSITO AS  HelyettesitettOktatasiAzon
    ,Rendez = CASE ISNUMERIC(hely.Oraszam) 
              WHEN 1 THEN CAST(hely.Oraszam AS INT) 
              ELSE 999999999999999 END  
  INTO #adatok
  FROM 
    #OrarendAdatok hely
    LEFT JOIN T_TANTARGY_OSSZES tantargy ON tantargy.Id = hely.TantargyId AND tantargy.TOROLT = 'F'
    LEFT JOIN T_HELYETTESITESIIDOSZAK_OSSZES hi ON hi.ID = hely.HelyettesitesId and hi.TOROLT = 'F'
    LEFT JOIN T_FELHASZNALO_OSSZES helyettesito ON helyettesito.Id = hely.HelyettesitoTanarID AND helyettesito.TOROLT = 'F'
    LEFT JOIN T_FELHASZNALO_OSSZES helyettesitesett ON helyettesitesett.ID = hely.TanarID AND helyettesitesett.TOROLT = 'F'
    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES HelyettesitesTipusa ON HelyettesitesTipusa.ID = hi.C_HELYETTESITESTIPUS AND  HelyettesitesTipusa.C_TANEVID = @TanevId AND HelyettesitesTipusa.TOROLT = 'F' 
    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES HetNapja ON HetNapja.ID = hely.HetNapja AND  HetNapja.C_TANEVID = @TanevId AND HetNapja.TOROLT = 'F' 
  WHERE (hely.OraTipus = 'TanitasiOra' AND (hely.HelyettesitoTanarID IS NOT NULL OR hely.Megtartott = 'F'))
      OR (hely.OraTipus = 'OrarendiOra' AND hely.HelyettesitoTanarID IS NOT NULL)
  ORDER BY hely.HetNapja, hely.Oraszam
  
  SELECT DISTINCT HetNapja, HetNapjaMegnevezes FROM #adatok

IF @helyettesitesListaFormatumId = 0
  BEGIN
    SELECT DISTINCT HelyettesitettId PedagogusId, HelyettesitettNeve PedagogusNev, HetNapja FROM #adatok ORDER BY HelyettesitettNeve
    SELECT * FROM #adatok 
    ORDER BY HetNapja, Rendez, Oraszam
  END
ELSE
  BEGIN
    SELECT DISTINCT HelyettesitoId PedagogusId, HelyettesitoNeve PedagogusNev, HetNapja FROM #adatok ORDER BY HelyettesitoNeve
    SELECT * FROM #adatok
    ORDER BY HetNapja, Rendez, Oraszam
  END
 END
GO