209 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			209 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
SET ANSI_NULLS ON
 | 
						||
GO
 | 
						||
SET QUOTED_IDENTIFIER ON
 | 
						||
GO
 | 
						||
 | 
						||
IF OBJECT_ID('sp_GetOrarendKereszttabla_Pedagogus') IS NOT NULL BEGIN
 | 
						||
  DROP PROCEDURE sp_GetOrarendKereszttabla_Pedagogus
 | 
						||
END  
 | 
						||
GO
 | 
						||
 | 
						||
CREATE PROCEDURE sp_GetOrarendKereszttabla_Pedagogus
 | 
						||
  @tanevId					INT,
 | 
						||
  @aktivTanevId				INT
 | 
						||
 | 
						||
AS
 | 
						||
BEGIN
 | 
						||
  SET NOCOUNT ON;
 | 
						||
 | 
						||
DECLARE @UtolsoNap	DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_NAPTIPUSA=1395 AND C_TANEVID=@tanevid AND TOROLT='F')
 | 
						||
		,@HetEleje	DATE
 | 
						||
		,@HetVege	DATE
 | 
						||
 | 
						||
IF (@tanevId = @AktivtanevId AND GETDATE() <= @UtolsoNap)
 | 
						||
	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
 | 
						||
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
 | 
						||
 | 
						||
CREATE TABLE #KapcsolodoCsoportok (OsztalyId INT, OsztalyCsoportId INT)
 | 
						||
INSERT INTO #KapcsolodoCsoportok
 | 
						||
SELECT DISTINCT 
 | 
						||
	o.ID	Osztaly
 | 
						||
	,k.ID	KapcsolodoCsoport 
 | 
						||
FROM T_OSZTALY_OSSZES o
 | 
						||
	CROSS APPLY fnGetKapcsolodoOsztalycsoportokByDate(ID, @HetEleje, @HetVege) k
 | 
						||
    INNER JOIN T_OSZTALYCSOPORT OsztalyCsoport ON OsztalyCsoport.ID = o.ID AND OsztalyCsoport.C_FELADATKATEGORIAID = 7553 /*OktNevelesiKategoriaEnum.Alapkepzes*/
 | 
						||
WHERE 
 | 
						||
	o.TOROLT = 'F' 
 | 
						||
	AND o.C_ALTANEVID = @tanevId
 | 
						||
 | 
						||
DECLARE @PedagogushozKapcsolodoOsszesOrarendiora TABLE (OsztalyId INT, OsztalyCsoportId INT, OrarendiOraId INT, TantargyId INT, PedagogusId INT, TeremId INT, HetirendId INT, HetnapjaId INT, Oraszam INT, OraErvenyessegKezdete DATE, OraErvenyessegVege DATE)
 | 
						||
INSERT INTO @PedagogushozKapcsolodoOsszesOrarendiora
 | 
						||
SELECT 
 | 
						||
	k.OsztalyId
 | 
						||
	,K.OsztalyCsoportId
 | 
						||
	,o.ID 
 | 
						||
	,C_TANTARGYID
 | 
						||
	,C_TANARID 
 | 
						||
	,C_TEREMID
 | 
						||
	,C_HETIREND
 | 
						||
	,C_HETNAPJA
 | 
						||
	,C_ORASZAM
 | 
						||
	,C_ORAERVENYESSEGKEZDETE
 | 
						||
	,C_ORAERVENYESSEGVEGE
 | 
						||
FROM #KapcsolodoCsoportok k
 | 
						||
	LEFT JOIN T_ORARENDIORA_OSSZES o ON o.C_OSZTALYCSOPORTID = k.OsztalyCsoportId
 | 
						||
WHERE
 | 
						||
	TOROLT = 'F'
 | 
						||
 | 
						||
CREATE TABLE #temp (PedagogusId INT, HetirendId INT, HetirendNev NVARCHAR(MAX), HetnapjaId INT, Oraszam INT, TantargyNev NVARCHAR(MAX), TeremNev NVARCHAR(MAX), OsztalyNev NVARCHAR(MAX))
 | 
						||
INSERT INTO #temp
 | 
						||
SELECT
 | 
						||
	OrarendiOra.PedagogusId									PedagogusId
 | 
						||
	,OrarendiOra.HetirendId									HetirendId
 | 
						||
	,hetirend.C_NAME										HetirendNev
 | 
						||
	,OrarendiOra.HetnapjaId									HetnapjaId
 | 
						||
	,OrarendiOra.Oraszam									Oraszam
 | 
						||
	,ISNULL(Tantargy.C_NEVNYOMTATVANYBAN, Tantargy.C_NEV)	TantargyNev
 | 
						||
	,Terem.C_NEV											TeremNev
 | 
						||
	,ocs.C_NEV												OsztalyNev
 | 
						||
FROM @PedagogushozKapcsolodoOsszesOrarendiora OrarendiOra
 | 
						||
	INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.Id = OrarendiOra.TantargyId
 | 
						||
	INNER JOIN T_TEREM_OSSZES Terem ON Terem.Id = OrarendiOra.TeremId
 | 
						||
	INNER JOIN T_DICTIONARYITEMBASE_OSSZES hetirend ON hetirend.Id = OrarendiOra.HetirendId AND hetirend.C_TANEVID = @tanevId
 | 
						||
	INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.Id = OrarendiOrA.OsztalyCsoportId AND ocs.C_FELADATKATEGORIAID = 7553 /*OktNevelesiKategoriaEnum.Alapkepzes*/
 | 
						||
WHERE
 | 
						||
	OrarendiOra.OraErvenyessegKezdete <= @Hetvege
 | 
						||
	AND OrarendiOra.OraErvenyessegVege >= @Heteleje
 | 
						||
 | 
						||
DECLARE @Hetirendek TABLE (Id INT)
 | 
						||
INSERT INTO @Hetirendek 
 | 
						||
SELECT DISTINCT HetirendId FROM #temp
 | 
						||
 | 
						||
DECLARE @OsszesOra TABLE (PedagogusId INT, Hetirend INT, Nap INT, Oraszam INT)
 | 
						||
INSERT INTO @OsszesOra
 | 
						||
SELECT DISTINCT PedagogusId, oo.Id, Nap.Nap , OraSzam.OraSzam FROM @Hetirendek oo
 | 
						||
	CROSS JOIN (SELECT DISTINCT PedagogusId FROM #temp) Pedagogus(PedagogusId)
 | 
						||
	CROSS JOIN (SELECT DISTINCT Oraszam FROM #temp) OraSzam (OraSzam)
 | 
						||
	CROSS JOIN (VALUES (1408),(1409),(1410),(1411),(1412),(1413)) Nap (Nap)
 | 
						||
 | 
						||
DECLARE @TenylegesOra TABLE (PedagogusId INT, Nap INT, OraSzam INT, Foglalkozas NVARCHAR(MAX))
 | 
						||
INSERT INTO @TenylegesOra
 | 
						||
SELECT 
 | 
						||
	PedagogusId
 | 
						||
	,HetnapjaId
 | 
						||
	,Oraszam
 | 
						||
	,STUFF((SELECT DISTINCT ', ' + CAST(bveg.TantargyNev+' (' +bveg.OsztalyNev+', ' + bveg.TeremNev +', ' +HetirendNev+')' AS VARCHAR(max)) 
 | 
						||
			FROM #temp bveg 
 | 
						||
			WHERE 
 | 
						||
					bveg.HetnapjaId=veg.HetnapjaId 
 | 
						||
					AND bveg.Oraszam=veg.Oraszam  
 | 
						||
					AND (bveg.HetirendId=HetirendId OR bveg.HetirendId=1554)
 | 
						||
					AND bveg.PedagogusId = veg.PedagogusId
 | 
						||
			FOR XML PATH(''), TYPE)
 | 
						||
			.value('.','NVARCHAR(MAX)'),1,2,' ') Foglalkozasok	 
 | 
						||
FROM #temp veg
 | 
						||
 | 
						||
/*V<EFBFBD>gleges <20>rarend*/
 | 
						||
CREATE TABLE #Orarend (PedagogusId INT, PedagogusNev NVARCHAR(MAX), Ora INT,  Nap INT, Foglalkozas NVARCHAR(MAX))
 | 
						||
INSERT INTO #Orarend
 | 
						||
SELECT	
 | 
						||
		OsszesOra.PedagogusId
 | 
						||
		,ped.C_NYOMTATASINEV
 | 
						||
		,OsszesOra.Oraszam
 | 
						||
		,OsszesOra.Nap
 | 
						||
		,TenylegesOra.Foglalkozas 		
 | 
						||
FROM @OsszesOra OsszesOra
 | 
						||
	LEFT JOIN @TenylegesOra TenylegesOra ON OsszesOra.Nap=TenylegesOra.Nap AND OsszesOra.Oraszam=TenylegesOra.Oraszam AND TenylegesOra.PedagogusId = OsszesOra.PedagogusId
 | 
						||
	LEFT JOIN T_FELHASZNALO_OSSZES ped ON ped.ID = OsszesOra.PedagogusId
 | 
						||
ORDER BY OsszesOra.Hetirend, OsszesOra.Nap, OsszesOra.Oraszam
 | 
						||
 | 
						||
--------------------------------------------------------------------------------------------------------------
 | 
						||
CREATE TABLE #Napok (Nev NVARCHAR(MAX), Oraszam INT, Rendez INT)
 | 
						||
INSERT INTO #Napok
 | 
						||
SELECT DISTINCT 
 | 
						||
	*
 | 
						||
	, CASE 
 | 
						||
		WHEN nap = 'hetfo' THEN 1 
 | 
						||
		WHEN nap = 'kedd' THEN 2 
 | 
						||
		WHEN nap = 'szerda' THEN 3
 | 
						||
		WHEN nap = 'csutortok' THEN 4
 | 
						||
		WHEN nap = 'pentek' THEN 5 		
 | 
						||
		END
 | 
						||
FROM (VALUES ('hetfo'), ('kedd'), ('szerda'), ('csutortok'), ('pentek')) AS napok(nap)
 | 
						||
CROSS JOIN (SELECT DISTINCT Oraszam FROM #temp) OraSzam (OraSzam)
 | 
						||
 | 
						||
DECLARE @Oraszamok NVARCHAR(MAX),
 | 
						||
		@OraszamokAlias NVARCHAR(MAX)
 | 
						||
 | 
						||
SELECT @Oraszamok = ISNULL(@Oraszamok + ', ', '') + '[' + CAST(Oraszam AS NVARCHAR(MAX)) + ']'
 | 
						||
FROM (SELECT DISTINCT Oraszam FROM #temp ) o
 | 
						||
 | 
						||
SELECT @OraszamokAlias = ISNULL(@OraszamokAlias + ', ', '') +  Nev +'.' + '[' + CAST(Oraszam AS NVARCHAR(MAX)) + ']' FROM #Napok ORDER BY Rendez, Oraszam
 | 
						||
 | 
						||
DECLARE @sql NVARCHAR(MAX)
 | 
						||
SET @sql = '
 | 
						||
SELECT DISTINCT 
 | 
						||
	f.C_NYOMTATASINEV PedagogusNev, 
 | 
						||
	' + @OraszamokAlias + '
 | 
						||
FROM (SELECT DISTINCT PedagogusId FROM #temp) k
 | 
						||
INNER JOIN (
 | 
						||
			SELECT 
 | 
						||
				PedagogusId
 | 
						||
				,'+ @Oraszamok +'
 | 
						||
			FROM #Orarend 	
 | 
						||
			PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
 | 
						||
			WHERE Nap = 1408
 | 
						||
			) hetfo ON hetfo.PedagogusId = k.PedagogusId
 | 
						||
INNER JOIN (
 | 
						||
			SELECT 
 | 
						||
				PedagogusId
 | 
						||
				,'+ @Oraszamok +'
 | 
						||
			FROM #Orarend 	
 | 
						||
			PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
 | 
						||
			WHERE Nap = 1409
 | 
						||
			) kedd ON kedd.PedagogusId = k.PedagogusId
 | 
						||
INNER JOIN (
 | 
						||
			SELECT 
 | 
						||
				PedagogusId
 | 
						||
				,'+ @Oraszamok +'
 | 
						||
			FROM #Orarend 	
 | 
						||
			PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
 | 
						||
			WHERE Nap = 1410
 | 
						||
			) szerda ON szerda.PedagogusId = k.PedagogusId
 | 
						||
INNER JOIN (
 | 
						||
			SELECT 
 | 
						||
				PedagogusId
 | 
						||
				,'+ @Oraszamok +'
 | 
						||
			FROM #Orarend 	
 | 
						||
			PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
 | 
						||
			WHERE Nap = 1411
 | 
						||
			) csutortok ON csutortok.PedagogusId = k.PedagogusId
 | 
						||
INNER JOIN (
 | 
						||
			SELECT 
 | 
						||
				PedagogusId
 | 
						||
				,'+ @Oraszamok +'
 | 
						||
			FROM #Orarend 	
 | 
						||
			PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
 | 
						||
			WHERE Nap = 1412
 | 
						||
			) pentek ON pentek.PedagogusId = k.PedagogusId
 | 
						||
INNER JOIN T_FELHASZNALO_OSSZES f ON f.Id = k.PedagogusId
 | 
						||
ORDER BY C_NYOMTATASINEV
 | 
						||
'
 | 
						||
 | 
						||
EXEC sp_executesql @sql
 | 
						||
 | 
						||
DROP TABLE #Napok
 | 
						||
DROP TABLE #Orarend
 | 
						||
DROP TABLE #KapcsolodoCsoportok
 | 
						||
 | 
						||
END
 | 
						||
 | 
						||
GO |