﻿SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

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

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

AS
BEGIN
  SET NOCOUNT ON;

SELECT 
	 helyettesito.ID						HelyettesitoId
	,helyettesitesett.ID					HelyettesitettId
	,dbo.fnGetDokumentumDatumFormatum(hi.C_HELYETTESITESNAPJA)	HetNapja
	,ISNULL(CONVERT(NVARCHAR(5), orarendiOra.C_ORASZAM) + '.', '')Oraszam
	,helyettesito.C_NYOMTATASINEV			HelyettesitoNeve
	,helyettesitesett.C_NYOMTATASINEV		HelyettesitettNeve
	,ocs.C_NEV								OsztalyCsoportNev
	,tantargy.C_NEV							TantargyNev
	,terem.C_NEV							TeremNev
	,HelyettesitesTipusa.C_NAME				HelyettesitesTipusa
INTO #adatok
FROM T_HELYETTESITESIIDOSZAK_OSSZES hi
	LEFT JOIN T_ORARENDIORA_OSSZES orarendiOra ON orarendiOra.Id = hi.C_HELYETTESITETTORARENDID AND orarendiOra.TOROLT = 'F'
	LEFT JOIN T_FELHASZNALO_OSSZES helyettesito ON helyettesito.Id = hi.C_HELYETTESTANAROKID AND helyettesito.TOROLT = 'F'
	LEFT JOIN T_FELHASZNALO_OSSZES helyettesitesett ON helyettesitesett.ID = orarendiOra.C_TANARID AND helyettesitesett.TOROLT = 'F'
	LEFT JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.Id = orarendiOra.C_OSZTALYCSOPORTID AND ocs.TOROLT = 'F'
	LEFT JOIN T_TANTARGY_OSSZES tantargy ON tantargy.Id = orarendiOra.C_TANTARGYID AND tantargy.TOROLT = 'F'
	LEFT JOIN T_TEREM_OSSZES terem ON terem.Id = orarendiOra.C_TEREMID AND terem.TOROLT = 'F'
	INNER JOIN T_DICTIONARYITEMBASE_OSSZES HelyettesitesTipusa ON HelyettesitesTipusa.ID = hi.C_HELYETTESITESTIPUS AND HelyettesitesTipusa.C_TANEVID = @tanevId
WHERE
	hi.TOROLT = 'F'	
	AND hi.C_TANEVID = @tanevId	
	AND hi.C_HELYETTESITESNAPJA BETWEEN @idoszakKezdete AND @idoszakVege
ORDER BY dbo.fnGetDokumentumDatumFormatum(hi.C_HELYETTESITESNAPJA), orarendiOra.C_ORASZAM

-- elmaradt órák hozzáadása
INSERT INTO #adatok
SELECT 
	 NULL						HelyettesitoId
	,tanar.ID					HelyettesitettId
	,dbo.fnGetDokumentumDatumFormatum(ora.C_DATUM)	HetNapja
	,ISNULL(CONVERT(NVARCHAR(5), ora.C_ORASZAM) + '.', '')Oraszam
	,'Elmaradt óra'			HelyettesitoNeve
	,tanar.C_NYOMTATASINEV		HelyettesitettNeve
	,ocs.C_NEV								OsztalyCsoportNev
	,tantargy.C_NEV							TantargyNev
	,terem.C_NEV							TeremNev
	,''				HelyettesitesTipusa
FROM T_TANITASIORA_OSSZES ora
	LEFT JOIN T_FELHASZNALO_OSSZES tanar ON tanar.ID = ora.C_TANARID AND tanar.TOROLT = 'F'
	LEFT JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.Id = ora.C_OSZTALYCSOPORTID AND ocs.TOROLT = 'F'
	LEFT JOIN T_TANTARGY_OSSZES tantargy ON tantargy.Id = ora.C_TANTARGYID AND tantargy.TOROLT = 'F'
	LEFT JOIN T_TEREM_OSSZES terem ON terem.Id = ora.C_TEREMID AND terem.TOROLT = 'F'
WHERE
	ora.TOROLT = 'F'
	AND ora.C_MEGTARTOTT = 'F'	
	AND ora.C_TANEVID = @tanevId	
	AND ora.C_DATUM BETWEEN @idoszakKezdete AND @idoszakVege
ORDER BY dbo.fnGetDokumentumDatumFormatum(ora.C_DATUM), ora.C_ORASZAM

SELECT DISTINCT HetNapja FROM #adatok

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

END

GO