﻿IF OBJECT_ID('dbo.sp_GetMulasztasokNaploNezetData') IS NOT NULL BEGIN
	DROP PROCEDURE dbo.sp_GetMulasztasokNaploNezetData
END
GO

CREATE PROCEDURE dbo.sp_GetMulasztasokNaploNezetData
	 @pOsztalyCsoportId				INT
	,@pDatum						DATE
	,@pCsoportTipusTanoraiCeluId	INT
AS
BEGIN

	DECLARE @tempTable TABLE(
		TanitasiOraId INT NOT NULL,
		OsztalyCsoportId INT NOT NULL,
		OsztalyCsoportNev NVARCHAR(255) NOT NULL,
		OsztalyNev NVARCHAR(255) NOT NULL,
		IsOsztalyOraja BIT NOT NULL,
		IsTanoraiCelu BIT NOT NULL,
		IsTanoraiCelunakJelolt BIT NOT NULL,
		TantargyId INT NOT NULL,
		TantargyNev NVARCHAR(255) NOT NULL,
		TanarId INT NOT NULL,
		TanarNev NVARCHAR(255) NOT NULL,
		OraSorszam INT NULL,
		OraKezdete DATETIME NULL
	);

	INSERT INTO @tempTable
	SELECT 
		 tn.ID AS TanitasiOraId
		,ocs.ID AS OsztalyCsoportId
		,ocs.C_NEV AS OsztalyCsoportNev
		,o.C_NEV AS OsztalyNev
		,IIF(ocs.ID = @pOsztalyCsoportId, 1, 0) AS IsOsztalyOraja
		,IIF(cst.ID = @pCsoportTipusTanoraiCeluId, 1, 0) AS IsTanoraiCelu
		,IIF(cst.C_ISTANORAICELU = 'T', 1, 0) AS IsTanoraiCelunakJelolt
		,tt.ID AS TantargyId
		,tt.C_NEV AS TantargyNev
		,fa.ID AS TanarId
		,fa.C_NYOMTATASINEV AS TanarNev
		,IIF(tn.C_CSENGETESIRENDORAID IS NOT NULL, tn.C_ORASZAM, NULL) AS OraSorszam
		,IIF(tn.C_CSENGETESIRENDORAID IS NULL, tn.C_ORAKEZDETE, NULL) AS OraKezdete
	FROM 
		T_TANITASIORA tn
		INNER JOIN dbo.fnGetKapcsolodoOsztalycsoportokByDate(@pOsztalyCsoportId, @pDatum, @pDatum) kocs ON kocs.ID = tn.C_OSZTALYCSOPORTID
		INNER JOIN T_TANTARGY tt ON tt.ID = tn.C_TANTARGYID AND tt.TOROLT = 'F'
		INNER JOIN T_FELHASZNALO fa ON fa.ID = tn.C_ORATULAJDONOSID AND fa.TOROLT = 'F'
		INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = kocs.ID AND ocs.TOROLT = 'F'
		LEFT JOIN T_CSOPORT cs ON cs.ID = kocs.ID AND cs.TOROLT = 'F'
		LEFT JOIN T_CSOPORTTIPUS cst ON cst.ID = cs.C_TIPUSA AND cst.TOROLT = 'F'
		INNER JOIN T_OSZTALYCSOPORT o ON o.ID = @pOsztalyCsoportId AND o.TOROLT = 'F'
	WHERE 
		CAST(tn.C_DATUM AS DATE) = CAST(@pDatum AS DATE)
		AND tn.C_MEGTARTOTT = 'T' 
		AND tn.TOROLT = 'F'

	SELECT
		tcs.C_TANULOID AS TanuloId
		,ft.C_NYOMTATASINEV AS TanuloNev
		,ft.C_ANYJANEVE AS AnyjaNeve
		,ft.C_SZULETESIDATUM AS SzuletesiIdo
		,tbl.OsztalyCsoportId
		,tbl.OsztalyCsoportNev
		,tbl.OsztalyNev
		,tbl.IsOsztalyOraja
		,tbl.IsTanoraiCelu
		,tbl.IsTanoraiCelunakJelolt
		,tbl.TantargyId
		,tbl.TantargyNev
		,tbl.TanarId
		,tbl.TanarNev
		,tbl.OraSorszam
		,tbl.OraKezdete
		,tbl.TanitasiOraId
		,tm.ID AS MulasztasId
		,tm.C_TIPUS AS MulasztasTipus
		,tm.C_IGAZOLT AS IsIgazolt
		,tm.C_IGAZOLASTIPUSA AS IgazolasTipus
		,tm.C_MEGJEGYZES AS Megjegyzes
		,tm.C_KESESPERCBEN AS KesesPercben
	FROM (
		SELECT 
			C_TANULOID, C_OSZTALYCSOPORTID
		FROM 
			T_TANULOCSOPORT
		WHERE 
			C_OSZTALYCSOPORTID = @pOsztalyCsoportId
			AND C_BELEPESDATUM <= @pDatum
			AND (C_KILEPESDATUM > @pDatum OR C_KILEPESDATUM IS NULL)
			AND TOROLT = 'F'
			AND C_TANULOID IN (
				SELECT C_TANULOID 
				FROM T_TANULOCSOPORT 
				WHERE 
					T_TANULOCSOPORT.C_OSZTALYCSOPORTID  IN (SELECT OsztalyCsoportId FROM @tempTable)
					AND T_TANULOCSOPORT.C_BELEPESDATUM <= @pDatum 
					AND (T_TANULOCSOPORT.C_KILEPESDATUM > @pDatum OR T_TANULOCSOPORT.C_KILEPESDATUM IS NULL)
			)
	 ) tcs
		CROSS JOIN @tempTable tbl
		INNER JOIN T_FELHASZNALO ft ON 
			tcs.C_TANULOID = ft.ID 
			AND ft.TOROLT = 'F'
		LEFT  JOIN T_TANULOMULASZTAS tm ON 
			tcs.C_TANULOID = tm.C_ORATANULOIID
			AND tm.C_TANITASIORAKID = tbl.TanitasiOraId 
			AND tm.TOROLT = 'F'
	WHERE 
		tcs.C_TANULOID IN (
			SELECT C_TANULOID 
			FROM T_TANULOCSOPORT 
			WHERE 
				tbl.OsztalyCsoportId = T_TANULOCSOPORT.C_OSZTALYCSOPORTID
				AND T_TANULOCSOPORT.C_BELEPESDATUM <= @pDatum 
				AND (T_TANULOCSOPORT.C_KILEPESDATUM > @pDatum OR T_TANULOCSOPORT.C_KILEPESDATUM IS NULL)
			)
			AND (tm.C_TIPUS IS NULL OR tm.C_TIPUS <>  1817)
	ORDER BY 
		ft.C_NYOMTATASINEV

END


GO

