SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

IF OBJECT_ID('[dbo].[sp_GetTanulokMulasztasokReszletezese]') IS NOT NULL 
BEGIN
  DROP PROCEDURE [dbo].[sp_GetTanulokMulasztasokReszletezese]
END  
GO

CREATE PROCEDURE [dbo].[sp_GetTanulokMulasztasokReszletezese]
	@OsztalyId		INT,
	@TanevId		INT
AS
BEGIN
	SET NOCOUNT ON;

		DECLARE @Diakok TABLE (DiakId INT)		
		INSERT INTO @Diakok 
		SELECT 
			T_FELHASZNALO_OSSZES.ID 
		FROM T_FELHASZNALO_OSSZES
		JOIN (SELECT C_TANULOID, C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES WHERE T_TANULOCSOPORT_OSSZES.TOROLT='F') TANCSOPORT ON TANCSOPORT.C_TANULOID = T_FELHASZNALO_OSSZES.ID 
		WHERE T_FELHASZNALO_OSSZES.TOROLT='F' 
		AND T_FELHASZNALO_OSSZES.C_TANEVID = @TanevId
		AND TANCSOPORT.C_OSZTALYCSOPORTID = @OsztalyId
		order by T_FELHASZNALO_OSSZES.C_NYOMTATASINEV

		DECLARE @Mulasztasok TABLE (MulasztasId INT)	
		INSERT INTO @Mulasztasok 
		SELECT ID FROM T_MULASZTASTIPUS_OSSZES 
		WHERE ID != 1497 
				AND ID != 1498 
				AND ID != 1817 
				AND C_ALTANEVID = @TanevId

		DECLARE @tmp TABLE (OSZTALY NVARCHAR(255), INT_NEV NVARCHAR(255), INT_OMKOD int, INT_VAROS NVARCHAR(255)
							, INT_CIM NVARCHAR(255), INT_TELJES_CIM NVARCHAR(255), INT_IGAZGATO_NEV NVARCHAR(255), OSZTFO_NEV NVARCHAR(255))

		INSERT INTO @tmp 
		SELECT TOP 1 
			ocs.C_NEV
			, i.C_NEV AS INT_NEV
			,i.C_OMKOD AS INT_OMKOD
			,i.C_VAROS AS INT_VAROS
			,i.C_CIME AS INT_CIM
			,i.C_IRANYITOSZAM + ' ' +  i.C_VAROS + ' ' + i.C_CIME AS INT_TELJES_CIM
			,i.C_IGAZGATONEVE AS INT_IGAZGATO_NEV
			,osztf.C_VEZETEKNEV + ' ' + osztf.C_UTONEV AS OSZTFO_NEV
		FROM T_OSZTALYCSOPORT_OSSZES ocs
			JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = ocs.ID AND tcs.TOROLT = 'F'
			JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID AND f.TOROLT = 'F'
			LEFT OUTER JOIN T_INTEZMENYADATOK_OSSZES i ON i.C_INTEZMENYID = ocs.C_INTEZMENYID AND i.C_TANEVID = ocs.C_TANEVID AND i.TOROLT = 'F'
			LEFT OUTER JOIN T_OSZTALY_OSSZES o ON o.ID = ocs.ID AND o.TOROLT = 'F'
			LEFT OUTER JOIN T_FELHASZNALO_OSSZES osztf ON osztf.ID = o.C_OSZTALYFONOKID AND osztf.TOROLT = 'F'
		where
			tcs.C_OSZTALYCSOPORTID = @OsztalyId 
			AND ocs.C_TANEVID = @TanevId
			AND tcs.TOROLT = 'F'
			AND ocs.TOROLT = 'F'

		declare @TenylegesMulasztasok table	(DiakId INT, MulasztasId int, NEV NVARCHAR(255), OSZTALY NVARCHAR(255), DATUM DATETIME
											, ORA INT, MULASZTASJELLEG NVARCHAR(255), KESESPERC int, OSZTALYCSOPORT NVARCHAR(255)
											, TANTARGY NVARCHAR(255), INT_NEV NVARCHAR(255), INT_OMKOD NVARCHAR(255), INT_VAROS NVARCHAR(255)
											, INT_CIM NVARCHAR(255), INT_TELJES_CIM NVARCHAR(255), INT_IGAZGATO_NEV NVARCHAR(255), OSZTFO_NEV NVARCHAR(255))	

		INSERT INTO @TenylegesMulasztasok	
		SELECT 
			f.Id
			,tm.C_TIPUS
			,f.C_VEZETEKNEV + ' ' + f.C_UTONEV AS NEV
			,ocs.C_NEV AS OSZTALY
			,tno.C_DATUM AS DATUM
			,oo.C_ORASZAM AS ORA
			,tm.C_TIPUS as MULASZTASJELLEG
			,tm.C_KESESPERCBEN AS KESESPERC
			,ocs.C_NEV AS OSZTALYCSOPORT
			,tt.C_NEV AS TANTARGY
			,i.C_NEV AS INT_NEV
			,i.C_OMKOD AS INT_OMKOD
			,i.C_VAROS AS INT_VAROS
			,i.C_CIME AS INT_CIM
			,i.C_IRANYITOSZAM + ' ' +  i.C_VAROS + ' ' + i.C_CIME AS INT_TELJES_CIM
			,i.C_IGAZGATONEVE AS INT_IGAZGATO_NEV
			,osztf.C_VEZETEKNEV + ' ' + osztf.C_UTONEV AS OSZTFO_NEV
		FROM T_OSZTALYCSOPORT_OSSZES ocs
		JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = ocs.ID AND tcs.TOROLT = 'F'
		JOIN T_FELHASZNALO_OSSZES f on f.ID = tcs.C_TANULOID AND f.TOROLT = 'F'
		LEFT JOIN T_TANULOMULASZTAS_OSSZES tm ON tm.C_ORATANULOIID = tcs.C_TANULOID and tm.TOROLT = 'F'
		LEFT JOIN T_TANITASIORA_OSSZES tno ON tno.ID = tm.C_TANITASIORAKID AND tno.TOROLT = 'F'
		LEFT JOIN T_TANTARGY_OSSZES tt ON tt.ID = tno.C_TANTARGYID AND tt.TOROLT = 'F'
		LEFT JOIN T_ORARENDIORA_OSSZES oo ON oo.ID = tno.C_ORARENDIORAID AND oo.TOROLT = 'F'
		LEFT OUTER JOIN  T_INTEZMENYADATOK_OSSZES i ON i.C_INTEZMENYID = ocs.C_INTEZMENYID AND i.C_TANEVID = ocs.C_TANEVID AND i.TOROLT = 'F'
		LEFT OUTER JOIN  T_OSZTALY_OSSZES o ON o.ID = ocs.ID AND o.TOROLT = 'F'
		LEFT OUTER JOIN T_FELHASZNALO_OSSZES osztf ON osztf.ID = o.C_OSZTALYFONOKID AND osztf.TOROLT = 'F'
		WHERE
			tcs.C_OSZTALYCSOPORTID = @OsztalyId
			AND ocs.C_TANEVID = @TanevId 
			AND tcs.TOROLT = 'F'
			AND ocs.TOROLT = 'F'
		
		DECLARE @tmp2 TABLE (DiakId INT, MulasztasId INT, Cnt INT)
		INSERT INTO @tmp2
		SELECT
			N.DiakId
			,O.MulasztasId
			,count(*) AS Cnt
		FROM @Diakok N
		CROSS JOIN @Mulasztasok O
		JOIN @TenylegesMulasztasok T ON T.DiakId = N.DiakId AND T.MulasztasId = O.MulasztasId
		GROUP BY N.DiakId,O.MulasztasId
		
		SELECT
			N.DiakId
			,O.MulasztasId
			,O.MulasztasId AS Mulasztas
			,f.C_VEZETEKNEV + ' ' + f.C_UTONEV AS NEV
			,(select OSZTALY FROM @tmp) AS OSZTALY
			,DATUM
			,ORA
			,T.MulasztasId AS MULASZTASJELLEG
			,KESESPERC
			,OSZTALYCSOPORT
			,TANTARGY
			,(SELECT INT_NEV FROM @tmp) AS INT_NEV
			,(SELECT INT_OMKOD FROM @tmp) AS INT_OMKOD
			,(SELECT INT_VAROS FROM @tmp) AS INT_VAROS
			,(SELECT INT_CIM FROM @tmp) AS INT_CIM
			,(SELECT INT_TELJES_CIM FROM @tmp) AS INT_TELJES_CIM
			,(SELECT INT_IGAZGATO_NEV FROM @tmp) AS INT_IGAZGATO_NEV
			,(SELECT OSZTFO_NEV FROM @tmp) as OSZTFO_NEV
			,isnull(Cntr.Cnt, 0) AS Cntr
			,f.C_NYOMTATASINEV + ' ' + cast(N.DiakId as nvarchar) AS GROUPPARAMETER
		FROM @Diakok N
		CROSS JOIN @Mulasztasok O
		LEFT JOIN @TenylegesMulasztasok T ON T.DiakId = N.DiakId AND T.MulasztasId = O.MulasztasId
		JOIN T_FELHASZNALO_OSSZES f ON f.ID = N.DiakId AND f.TOROLT = 'F'
		LEFT JOIN @tmp2 Cntr ON Cntr.DiakId = N.DiakId AND Cntr.MulasztasId = O.MulasztasId
		ORDER BY f.C_NYOMTATASINEV

		SELECT C_OSZTALYFONOKID PartnerID FROM T_OSZTALY_OSSZES 
		WHERE 
			T_OSZTALY_OSSZES.ID = @OsztalyId 
			AND T_OSZTALY_OSSZES.TOROLT='F' 
			AND T_OSZTALY_OSSZES.C_ALTANEVID = @TanevId

END

GO