GO
/****** Object:  StoredProcedure [dbo].[sp_GetTanulokTantargyMulasztasokReszletezese]    Script Date: 2016.05.02. 9:09:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		Hoffmann Zsolt
-- Create date: 2016.04.07.
-- Description:	sp_GetTanulokTantargyMulasztasokReszletezese
-- =============================================
CREATE PROCEDURE [dbo].[sp_GetTanulokTantargyMulasztasokReszletezese]
	@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' and C_BELEPESDATUM < GETDATE() and (C_KILEPESDATUM is null or C_KILEPESDATUM >= GETDATE())) TANCSOPORT 
		ON TANCSOPORT.C_TANULOID = T_FELHASZNALO_OSSZES.ID 
		WHERE T_FELHASZNALO_OSSZES.TOROLT='F' 
		and TANCSOPORT.C_OSZTALYCSOPORTID = @OsztalyId
		and T_FELHASZNALO_OSSZES.C_TANEVID = @TanevId
		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 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 ocs.TOROLT = 'F'
								and tcs.TOROLT = 'F'
								and tcs.C_BELEPESDATUM < GETDATE()
								and (tcs.C_KILEPESDATUM is null or tcs.C_KILEPESDATUM >= GETDATE())

		declare @TenylegesMulasztasok table	(DiakId int, MulasztasId int, NEV nvarchar(100), OSZTALY nvarchar(100), DATUM datetime, ORA int, MULASZTASJELLEG nvarchar(100), KESESPERC int, OSZTALYCSOPORT nvarchar(100),
			TANTARGYID int, TANTARGY nvarchar(100), INT_NEV nvarchar(255), INT_OMKOD nvarchar(100), INT_VAROS nvarchar(100), INT_CIM nvarchar(255), INT_TELJES_CIM nvarchar(255), INT_IGAZGATO_NEV nvarchar(100), OSZTFO_NEV nvarchar(100), IGAZOLT nvarchar(1),IG_TIPUS nvarchar(100))	
		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,csro.C_ORASZAM as ORA,tm.C_TIPUS as MULASZTASJELLEG,
													tm.C_KESESPERCBEN as KESESPERC,ocs.C_NEV as OSZTALYCSOPORT,tt.ID as TANTARGYID, 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, tm.C_IGAZOLT as IGAZOLT, tm.C_IGAZOLASTIPUSA as IG_TIPUS
											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 join T_CSENGETESIRENDORA_OSSZES csro on csro.ID = oo.C_CSENGETESIRENDORAID and csro.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 ocs.TOROLT = 'F'
												and tcs.TOROLT = 'F'
												and tcs.C_BELEPESDATUM < GETDATE()
												and (tcs.C_KILEPESDATUM is null or tcs.C_KILEPESDATUM >= GETDATE())
		
		declare @tmp2 table (DiakId int, TantargyId int, Cnt int)
		insert into @tmp2
			select
				N.DiakId
				,T.TANTARGYID
				,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,T.TANTARGYID

		--select * from @tmp2
		
		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
			,IGAZOLT
			,IG_TIPUS
			,KESESPERC
			,OSZTALYCSOPORT
			,T.TANTARGYID
			,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.TantargyId = T.TANTARGYID
		where T.TANTARGYID is not null
		order by f.C_NYOMTATASINEV

		select 
		DiakId,
		TANTARGY,
		isnull(count(1),0) as Ossz
		from @TenylegesMulasztasok
		group by DiakId,TANTARGY
		order by DiakId,TANTARGY

			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