262 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			262 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
SET ANSI_NULLS ON
 | 
						||
GO
 | 
						||
 | 
						||
SET QUOTED_IDENTIFIER ON
 | 
						||
GO
 | 
						||
 | 
						||
DROP PROCEDURE IF EXISTS sp_GetDokumentumTanuloOrarend
 | 
						||
GO
 | 
						||
 | 
						||
CREATE PROCEDURE sp_GetDokumentumTanuloOrarend
 | 
						||
  @tanevId				INT,
 | 
						||
  @tanuloId				INT,
 | 
						||
  @aktivTanevId			INT,
 | 
						||
  @isEgyebFoglalkozasok	BIT,
 | 
						||
  @orarendErvenyessegiDatum	DATE,
 | 
						||
  @feladatKategoriaId INT = NULL
 | 
						||
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')
 | 
						||
			,@ElsoNap	DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_NAPTIPUSA = 1394 AND C_TANEVID = @tanevId AND TOROLT = 'F')
 | 
						||
			,@VizsgaltNap		DATE
 | 
						||
			,@tanuloNev NVARCHAR(MAX) = (SELECT C_NYOMTATASINEV FROM T_FELHASZNALO_OSSZES WHERE ID = @tanuloId)
 | 
						||
 | 
						||
	IF (@tanevId = @aktivTanevId AND @orarendErvenyessegiDatum <= @UtolsoNap)
 | 
						||
		BEGIN
 | 
						||
			IF (@orarendErvenyessegiDatum <= @ElsoNap)
 | 
						||
			BEGIN
 | 
						||
				SET @VizsgaltNap = (SELECT TOP 1 C_HETKEZDONAPJA FROM T_NAPTARIHET_OSSZES WHERE C_HETSORSZAMA = 1 AND TOROLT = 'F' AND C_TANEVID = @tanevId)
 | 
						||
			END
 | 
						||
			ELSE
 | 
						||
			BEGIN
 | 
						||
				SET @VizsgaltNap = CONVERT(DATE, @orarendErvenyessegiDatum)
 | 
						||
			END
 | 
						||
		END
 | 
						||
	ELSE
 | 
						||
		BEGIN
 | 
						||
			SET @VizsgaltNap = @UtolsoNap
 | 
						||
		END
 | 
						||
 | 
						||
  SELECT
 | 
						||
	 C_ORASZAM								OraSzam
 | 
						||
	,CONVERT(VARCHAR(5), C_KEZDETE, 108)	Kezdete
 | 
						||
	,CONVERT(VARCHAR(5), C_VEGE, 108)		Vege
 | 
						||
  INTO #CsengetesiRendAdatok
 | 
						||
  FROM T_CSENGETESIRENDORA_OSSZES CsengetesiRendOra
 | 
						||
	INNER JOIN T_CSENGETESIREND_OSSZES CsengetesiRend ON CsengetesiRend.Id = CsengetesiRendOra.C_CSENGETESIRENDID
 | 
						||
  WHERE
 | 
						||
	CsengetesiRendOra.C_TANEVID = @tanevId
 | 
						||
	AND CsengetesiRendOra.TOROLT = 'F'
 | 
						||
	AND CsengetesiRend.TOROLT = 'F'
 | 
						||
	AND CsengetesiRend.C_AKTIV = 'T'
 | 
						||
 | 
						||
	DECLARE  @MinCsengetesiRendOraKezdet NVARCHAR(10) = (SELECT MIN(Kezdete) FROM #CsengetesiRendAdatok)
 | 
						||
	DECLARE  @MinCsengetesiRendOraszam INT = (SELECT MIN(OraSzam) FROM #CsengetesiRendAdatok)
 | 
						||
 | 
						||
	SELECT
 | 
						||
		OrarendiOra.C_HETIREND									HetirendId
 | 
						||
		,OrarendiOra.C_HETNAPJA									HetnapjaId
 | 
						||
		,CsengetesiRendOra.C_ORASZAM							OraSzam
 | 
						||
		,CONVERT(VARCHAR(5), OrarendiOra.C_ORAKEZDETE, 108)		Kezdete
 | 
						||
		,CONVERT(VARCHAR(5), OrarendiOra.C_ORAVEGE, 108)		Vege
 | 
						||
		,ISNULL(Tantargy.C_ROVIDNEV, Tantargy.C_NEV)	TantargyNev
 | 
						||
		,Pedagogus.C_NYOMTATASINEV								PedagogusNev
 | 
						||
		,Terem.C_NEV											TeremNev
 | 
						||
		,ocs.C_NEV												OsztalyCsoportNev
 | 
						||
	INTO #OrarendiOrak
 | 
						||
	FROM T_ORARENDIORA_OSSZES OrarendiOra
 | 
						||
		INNER JOIN T_TANULOCSOPORT_OSSZES TanuloCsoport ON
 | 
						||
							TanuloCsoport.C_TANULOID = @tanuloId
 | 
						||
							AND TanuloCsoport.C_OSZTALYCSOPORTID = OrarendiOra.C_OSZTALYCSOPORTID
 | 
						||
							AND TanuloCsoport.TOROLT = 'F'
 | 
						||
							AND @VizsgaltNap BETWEEN C_BELEPESDATUM AND ISNULL(C_KILEPESDATUM, @UtolsoNap)
 | 
						||
		INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.Id = OrarendiOra.C_TANTARGYID
 | 
						||
		INNER JOIN T_FELHASZNALO_OSSZES Pedagogus ON Pedagogus.Id = OrarendiOra.C_TANARID
 | 
						||
		INNER JOIN T_TEREM_OSSZES Terem ON Terem.Id = OrarendiOra.C_TEREMID
 | 
						||
		INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = OrarendiOra.C_OSZTALYCSOPORTID AND (ocs.C_FELADATKATEGORIAID = @feladatKategoriaId OR @feladatKategoriaId IS NULL)
 | 
						||
		LEFT JOIN T_CSENGETESIRENDORA_OSSZES CsengetesiRendOra ON CsengetesiRendOra.Id = OrarendiOra.C_CSENGETESIRENDORAID
 | 
						||
		LEFT JOIN T_CSOPORT_OSSZES Csoport ON Csoport.Id = OrarendiOra.C_OSZTALYCSOPORTID
 | 
						||
	WHERE
 | 
						||
		OrarendiOra.Torolt = 'F'
 | 
						||
		AND @VizsgaltNap BETWEEN OrarendiOra.C_ORAERVENYESSEGKEZDETE AND OrarendiOra.C_ORAERVENYESSEGVEGE
 | 
						||
		AND (@isEgyebFoglalkozasok = 1 OR (Csoport.C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@tanevId)) OR Csoport.C_TIPUSA IS NULL))
 | 
						||
	SELECT
 | 
						||
		OraSzam
 | 
						||
		,HetirendId
 | 
						||
		,HetnapjaId
 | 
						||
		,OsztalyCsoportNev
 | 
						||
		,PedagogusNev
 | 
						||
		,TantargyNev
 | 
						||
		,TeremNev
 | 
						||
		,Kezdete
 | 
						||
		,Vege
 | 
						||
	INTO #OrarendTEMP
 | 
						||
	FROM
 | 
						||
	(
 | 
						||
		SELECT
 | 
						||
			 MAX(CsengetesiRendAdatok.OraSzam)	OraSzam
 | 
						||
			,OrarendiOrak.HetirendId			HetirendId
 | 
						||
			,OrarendiOrak.HetnapjaId			HetnapjaId
 | 
						||
			,OrarendiOrak.OsztalyCsoportNev		OsztalyCsoportNev
 | 
						||
			,OrarendiOrak.PedagogusNev			PedagogusNev
 | 
						||
			,OrarendiOrak.TantargyNev			TantargyNev
 | 
						||
			,OrarendiOrak.TeremNev				TeremNev
 | 
						||
			,OrarendiOrak.Kezdete				Kezdete
 | 
						||
			,OrarendiOrak.Vege					Vege
 | 
						||
		FROM #CsengetesiRendAdatok CsengetesiRendAdatok
 | 
						||
			LEFT JOIN #OrarendiOrak OrarendiOrak ON OrarendiOrak.Kezdete >= CsengetesiRendAdatok.Kezdete
 | 
						||
		WHERE
 | 
						||
			OrarendiOrak.OraSzam IS NULL
 | 
						||
		GROUP BY
 | 
						||
			 OrarendiOrak.HetirendId
 | 
						||
			,OrarendiOrak.HetnapjaId
 | 
						||
			,OrarendiOrak.OsztalyCsoportNev
 | 
						||
			,OrarendiOrak.PedagogusNev
 | 
						||
			,OrarendiOrak.TantargyNev
 | 
						||
			,OrarendiOrak.TeremNev
 | 
						||
			,OrarendiOrak.Kezdete
 | 
						||
			,OrarendiOrak.Vege
 | 
						||
 | 
						||
		UNION
 | 
						||
 | 
						||
		SELECT
 | 
						||
			 MAX(CsengetesiRendAdatok.OraSzam)	OraSzam
 | 
						||
			,OrarendiOrak.HetirendId			HetirendId
 | 
						||
			,OrarendiOrak.HetnapjaId			HetnapjaId
 | 
						||
			,OrarendiOrak.OsztalyCsoportNev		OsztalyCsoportNev
 | 
						||
			,OrarendiOrak.PedagogusNev			PedagogusNev
 | 
						||
			,OrarendiOrak.TantargyNev			TantargyNev
 | 
						||
			,OrarendiOrak.TeremNev				TeremNev
 | 
						||
			,OrarendiOrak.Kezdete				Kezdete
 | 
						||
			,OrarendiOrak.Vege					Vege
 | 
						||
		FROM #CsengetesiRendAdatok CsengetesiRendAdatok
 | 
						||
			LEFT JOIN #OrarendiOrak OrarendiOrak ON OrarendiOrak.OraSzam = CsengetesiRendAdatok.OraSzam
 | 
						||
		WHERE
 | 
						||
			OrarendiOrak.OraSzam IS NOT NULL
 | 
						||
		GROUP BY
 | 
						||
			 OrarendiOrak.HetirendId
 | 
						||
			,OrarendiOrak.HetnapjaId
 | 
						||
			,OrarendiOrak.OsztalyCsoportNev
 | 
						||
			,OrarendiOrak.PedagogusNev
 | 
						||
			,OrarendiOrak.TantargyNev
 | 
						||
			,OrarendiOrak.TeremNev
 | 
						||
			,OrarendiOrak.Kezdete
 | 
						||
			,OrarendiOrak.Vege
 | 
						||
	)OrarendioraOraszammal
 | 
						||
 | 
						||
	INSERT INTO #OrarendTEMP
 | 
						||
	SELECT
 | 
						||
		@MinCsengetesiRendOraszam
 | 
						||
		,OrarendiOrak.HetirendId			HetirendId
 | 
						||
		,OrarendiOrak.HetnapjaId			HetnapjaId
 | 
						||
		,OrarendiOrak.OsztalyCsoportNev		OsztalyCsoportNev
 | 
						||
		,OrarendiOrak.PedagogusNev			PedagogusNev
 | 
						||
		,OrarendiOrak.TantargyNev			TantargyNev
 | 
						||
		,OrarendiOrak.TeremNev				TeremNev
 | 
						||
		,OrarendiOrak.Kezdete				Kezdete
 | 
						||
		,OrarendiOrak.Vege					Vege
 | 
						||
	FROM #orarendiorak  OrarendiOrak
 | 
						||
	WHERE
 | 
						||
		Kezdete < @MinCsengetesiRendOraKezdet
 | 
						||
 | 
						||
	SELECT
 | 
						||
		 Orarend.OraSzam
 | 
						||
		,HetirendId
 | 
						||
		,HetnapjaId
 | 
						||
		,OsztalyCsoportNev
 | 
						||
		,PedagogusNev
 | 
						||
		,TantargyNev
 | 
						||
		,TeremNev
 | 
						||
		,IIF(Orarend.Kezdete != CsengetesiRendAdatok.Kezdete OR Orarend.Vege != CsengetesiRendAdatok.Vege, Orarend.Kezdete + ' - ' + Orarend.Vege, '') KezdesVegeIdopont
 | 
						||
	INTO #Orarend
 | 
						||
	FROM #OrarendTEMP Orarend
 | 
						||
		INNER JOIN #CsengetesiRendAdatok CsengetesiRendAdatok on CsengetesiRendAdatok.Oraszam = Orarend.OraSzam
 | 
						||
 | 
						||
	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 @Orakezdetek TABLE (Ora INT)
 | 
						||
	INSERT INTO @orakezdetek
 | 
						||
	SELECT DISTINCT OraSzam from #CsengetesiRendAdatok
 | 
						||
 | 
						||
	DECLARE @OsszesOra TABLE (Hetirend INT, Nap INT, Oraszam nvarchar(20))
 | 
						||
	INSERT INTO @OsszesOra
 | 
						||
	SELECT DISTINCT oo.Id, Nap , OraSzam FROM @Hetirendek oo
 | 
						||
		CROSS JOIN (SELECT Ora FROM @Orakezdetek) OraSzam (OraSzam)
 | 
						||
		CROSS JOIN (VALUES (1408),(1409),(1410),(1411),(1412), (1413)) Nap (Nap)
 | 
						||
 | 
						||
	DECLARE @TenylegesOra TABLE (Hetirend INT, Nap INT, OraSzam NVARCHAR(20), Foglalkozas NVARCHAR(MAX))
 | 
						||
	DECLARE @Orarend TABLE (TanuloId INT, Ora int, Hetirend INT,  Nap INT, Foglalkozas 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>' + CHAR(13) + CHAR(10)
 | 
						||
							+ IIF(LEN(KezdesVegeIdopont) > 0, ' (' + KezdesVegeIdopont +')' + CHAR(13) + CHAR(10), '')
 | 
						||
							+ bveg.OsztalyCsoportNev + CHAR(13) + CHAR(10)
 | 
						||
							+ bveg.PedagogusNev + CHAR(13) + CHAR(10)
 | 
						||
							+ bveg.TeremNev + CHAR(13) + CHAR(10) AS VARCHAR(max))
 | 
						||
				FROM #Orarend 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 #Orarend veg
 | 
						||
			FETCH NEXT FROM kur INTO @HetirendId
 | 
						||
	END
 | 
						||
	CLOSE kur
 | 
						||
	DEALLOCATE kur
 | 
						||
 | 
						||
	/*V<EFBFBD>gleges <20>rarend*/
 | 
						||
	INSERT INTO @Orarend
 | 
						||
	SELECT @tanuloId
 | 
						||
			, OsszesOra.Oraszam
 | 
						||
			, OsszesOra.Hetirend
 | 
						||
			, OsszesOra.Nap
 | 
						||
			, TenylegesOra.Foglalkozas
 | 
						||
	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
 | 
						||
		pv.*
 | 
						||
		, dic.C_NAME	HETIREND_DNAME
 | 
						||
		,@tanuloNev		TanuloNev
 | 
						||
	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
 | 
						||
		INNER JOIN @Orakezdetek ok ON ok.Ora = pv.Ora
 | 
						||
	ORDER BY Ora
 | 
						||
		END
 | 
						||
 | 
						||
		DROP TABLE #CsengetesiRendAdatok
 | 
						||
		DROP TABLE #Orarend
 | 
						||
		DROP TABLE #OrarendiOrak
 | 
						||
GO |