SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

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

CREATE PROCEDURE sp_GetTeremOrarend
  @intezmenyId		INT,
  @tanevId			INT,
  @teremId			INT,
  @aktivTanevId		INT
AS
BEGIN
SET NOCOUNT ON;

SELECT 
	T_INTEZMENYADATOK_OSSZES.C_NEV IntezmenyNeve
	,T_INTEZMENYADATOK_OSSZES.C_OMKOD IntezmenyOMKod 
FROM T_INTEZMENYADATOK_OSSZES
WHERE 
	T_INTEZMENYADATOK_OSSZES.TOROLT = 'F'
	AND T_INTEZMENYADATOK_OSSZES.C_TANEVID = @tanevId

DECLARE @UtolsoNap	DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_NAPTIPUSA=1395 AND C_TANEVID=@tanevid AND TOROLT='F')
DECLARE @ElsoNap	DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_NAPTIPUSA=1394 AND C_TANEVID=@tanevid AND TOROLT='F')
		,@HetEleje	DATE
		,@HetVege	DATE

IF (@tanevId = @AktivtanevId AND GETDATE() <= @UtolsoNap)
	BEGIN
		IF (GETDATE() <= @ElsoNap)
		BEGIN
			SET @HetEleje =(SELECT TOP 1 nh.C_HETKEZDONAPJA  FROM T_NAPTARIHET_OSSZES nh WHERE @ElsoNap>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND @ElsoNap<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) AND nh.TOROLT='F' AND nh.C_TANEVID=@tanevId)
			SET @HetVege = (SELECT TOP 1 nh.C_HETUTOLSONAPJA  FROM T_NAPTARIHET_OSSZES nh WHERE @ElsoNap>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND @ElsoNap<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) AND nh.TOROLT='F' AND nh.C_TANEVID=@tanevId)
		END
		ELSE
		BEGIN
			SET @HetEleje =(SELECT TOP 1 nh.C_HETKEZDONAPJA  FROM T_NAPTARIHET_OSSZES nh WHERE CONVERT(DATE, GETDATE())>=CONVERT(DATE, NH.C_HETKEZDONAPJA) AND CONVERT(DATE, GETDATE())<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) and nh.TOROLT='F' and nh.C_TANEVID=@tanevid)
			SET @HetVege = (SELECT TOP 1 nh.C_HETUTOLSONAPJA  FROM T_NAPTARIHET_OSSZES nh WHERE CONVERT(DATE, GETDATE())>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND CONVERT(DATE, GETDATE())<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) and nh.TOROLT='F' and nh.C_TANEVID=@tanevid)
		END
	END
ELSE
	BEGIN
		SET @HetEleje =(SELECT TOP 1 nh.C_HETKEZDONAPJA  FROM T_NAPTARIHET_OSSZES nh WHERE @UtolsoNap>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND @UtolsoNap<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) AND nh.TOROLT='F' AND nh.C_TANEVID=@tanevId)
		SET @HetVege = (SELECT TOP 1 nh.C_HETUTOLSONAPJA  FROM T_NAPTARIHET_OSSZES nh WHERE @UtolsoNap>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND @UtolsoNap<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) AND nh.TOROLT='F' AND nh.C_TANEVID=@tanevId)
	END

DECLARE @temp TABLE (HetirendId INT, HetnapjaId INT, Oraszam INT, TantargyNev NVARCHAR(MAX), PedagogusNev NVARCHAR(MAX), OsztalyCsoportNev NVARCHAR(MAX))
INSERT INTO @temp
SELECT 
	OrarendiOra.C_HETIREND									HetirendId
	,OrarendiOra.C_HETNAPJA									HetnapjaId
	,OrarendiOra.C_ORASZAM									Oraszam
	,ISNULL(Tantargy.C_NEVNYOMTATVANYBAN, Tantargy.C_NEV)	TantargyNev
	,f.C_NYOMTATASINEV										TeremNev
	,ocs.C_NEV												OsztalyCsoportNev
FROM T_ORARENDIORA_OSSZES OrarendiOra 
	INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.Id = OrarendiOra.C_TANTARGYID
	INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = OrarendiOra.C_TANARID
	INNER JOIN T_OSZTALYCSOPORT_OSSZES	ocs ON ocs.ID = OrarendiOra.C_OSZTALYCSOPORTID
WHERE
	OrarendiOra.Torolt = 'F'
	AND OrarendiOra.C_ORAERVENYESSEGKEZDETE <= @Hetvege
	AND OrarendiOra.C_ORAERVENYESSEGVEGE >= @Heteleje
	AND OrarendiOra.C_TEREMID = @teremId

DECLARE @Hetirendek TABLE (Id INT)
DECLARE @HetirendCount INT = (SELECT COUNT(DISTINCT oo.C_HETIREND) FROM T_ORARENDIORA_OSSZES oo WHERE oo.TOROLT='F' AND oo.C_TANEVID=@tanevId)

IF (@HetirendCount=1)
BEGIN
	INSERT INTO @Hetirendek 
	SELECT DISTINCT oo.c_hetirend FROM T_ORARENDIORA_OSSZES oo WHERE oo.TOROLT='F' AND oo.C_TANEVID=@tanevId
END
ELSE
BEGIN 
	INSERT INTO @Hetirendek 
	SELECT DISTINCT oo.C_HETIREND from T_ORARENDIORA_OSSZES oo WHERE oo.TOROLT='F' AND oo.C_TANEVID=@tanevId AND oo.C_HETIREND<>1554
END

DECLARE @OsszesOra TABLE (Hetirend INT, Nap INT, Oraszam INT)
INSERT INTO @OsszesOra
SELECT DISTINCT oo.Id, Nap.Nap , OraSzam.OraSzam FROM @Hetirendek oo
	CROSS JOIN (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10)) OraSzam (OraSzam)
	CROSS JOIN (VALUES (1408),(1409),(1410),(1411),(1412), (1413)) Nap (Nap)

DECLARE @TenylegesOra TABLE (Hetirend INT, Nap INT, OraSzam INT, Foglalkozas NVARCHAR(MAX))
DECLARE @Orarend TABLE (TeremId INT, Ora INT, Hetirend INT,  Nap INT, Foglalkozas NVARCHAR(MAX), TeremNev NVARCHAR(MAX))

DECLARE kur CURSOR FOR 
SELECT Id FROM @Hetirendek

DECLARE @HetirendId int

OPEN kur
FETCH NEXT FROM kur INTO @HetirendId

WHILE @@FETCH_STATUS = 0 
BEGIN
		INSERT INTO @TenylegesOra
			SELECT DISTINCT 
				@HetirendId
				,veg.HetnapjaId
				,veg.Oraszam
				,STUFF((SELECT DISTINCT CAST('<b>' + bveg.TantargyNev + '</b>' + ' (' + OsztalyCsoportNev + ', ' + bveg.PedagogusNev + ')' + CHAR(13) + CHAR(10) AS VARCHAR(max)) 
							FROM @temp bveg 
							WHERE bveg.HetnapjaId=veg.HetnapjaId 
									AND bveg.Oraszam=veg.Oraszam  
									AND (bveg.HetirendId=@HetirendId OR bveg.HetirendId=1554)
							FOR XML PATH(''), TYPE)
							.value('.','NVARCHAR(MAX)'),1,0,'') Foglalkozasok			
			FROM @temp veg	
		FETCH NEXT FROM kur INTO @HetirendId
END
CLOSE kur
DEALLOCATE kur

DECLARE @teremNev NVARCHAR(MAX) = (SELECT C_NEV FROM T_TEREM_OSSZES WHERE ID = @teremId)
 
/*Végleges órarend*/
INSERT INTO @Orarend
SELECT @teremId
		, OsszesOra.Oraszam
		, OsszesOra.Hetirend
		, OsszesOra.Nap
		, TenylegesOra.Foglalkozas 	
		, @teremNev TeremNev
FROM @OsszesOra OsszesOra
	LEFT JOIN @TenylegesOra TenylegesOra ON OsszesOra.Hetirend=TenylegesOra.Hetirend AND OsszesOra.Nap=TenylegesOra.Nap AND OsszesOra.Oraszam=TenylegesOra.Oraszam 
ORDER BY OsszesOra.Hetirend, OsszesOra.Nap, OsszesOra.Oraszam

SELECT 
	TeremId
	,Ora
	,Hetirend
	,TeremNev
	,[1408] 'Hetfo'
	,[1409] 'Kedd'
	,[1410] 'Szerda'
	,[1411] 'Csutortok'
	,[1412] 'Pentek'
	,[1413] 'Szombat'
	, dic.C_NAME HETIREND_DNAME
FROM @Orarend 
	PIVOT (MAX(Foglalkozas) FOR Nap in([1408],[1409],[1410],[1411],[1412],[1413]))pv
	INNER JOIN T_DICTIONARYITEMBASE_OSSZES dic ON dic.id=Hetirend AND dic.C_TANEVID = @tanevId
ORDER BY Hetirend, Ora

	END 

GO