SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

IF OBJECT_ID('sp_GetErtesitesAltEsMulAdatok') IS NOT NULL BEGIN
  DROP PROCEDURE [sp_GetErtesitesAltEsMulAdatok] 
END  
GO
-- =============================================
-- Author:		Hoffmann Zsolt
-- Create date: 2016.04.05.
-- Description:	Tanulói jegyek részletezése
-- =============================================
CREATE PROCEDURE [dbo].[sp_GetErtesitesAltEsMulAdatok]
	@OsztalyId		int,
	@TanevId		int,
	@Tankoteles		nvarchar(1)
AS
BEGIN
	SET NOCOUNT ON;

	--Tanulói adatok
	select 
		tanulo.ID,
		tanulo.C_NYOMTATASINEV TANULONEV,
		tanulo.C_ANYJANEVE ANYJANEVE,
		tanulo.C_SZULETESIHELY SZULETESIHELY,
		tanulo.C_SZULETESIDATUM SZULETESIDATUM,

		AllandoLakcim.IranyitoSzam1,
		AllandoLakcim.Varos1,
		AllandoLakcim.Kozterulet1,
		AllandoLakcim.KozteruletJellege1,
		AllandoLakcim.Hazszam1,
		AllandoLakcim.Emelet1,
		AllandoLakcim.Ajto1,

		TartozkodasiHely.IranyitoSzam2,
		TartozkodasiHely.Varos2,
		TartozkodasiHely.Kozterulet2,
		TartozkodasiHely.KozteruletJellege2,
		TartozkodasiHely.Hazszam2,
		TartozkodasiHely.Emelet2,
		TartozkodasiHely.Ajto2,

		GONDVISELO.GondvNeve,
		GONDVISELO.GondvTelefon,
		GONDVISELO.GondvCim,

		T_INTEZMENYADATOK_OSSZES.C_IGAZGATONEVE as INT_IGAZGATO_NEV,
		T_INTEZMENYADATOK_OSSZES.C_NEV as INT_NEV,
		T_INTEZMENYADATOK_OSSZES.C_OMKOD as INT_OMKOD,
		T_INTEZMENYADATOK_OSSZES.C_IRANYITOSZAM as INT_IRSZAM,
		T_INTEZMENYADATOK_OSSZES.C_VAROS as INT_VAROS,
		T_INTEZMENYADATOK_OSSZES.C_CIME as INT_CIM,
		T_INTEZMENYADATOK_OSSZES.C_IRANYITOSZAM + ' ' +  T_INTEZMENYADATOK_OSSZES.C_VAROS + ' ' + T_INTEZMENYADATOK_OSSZES.C_CIME as INT_TELJES_CIM,
		T_OSZTALYCSOPORT_OSSZES.C_NEV as OSZTALYCSOPORT_NEV,
		osztf.C_VEZETEKNEV + ' ' + osztf.C_UTONEV as OSZTFO_NEV,
		isnull(Igazolt.ORASZAM,0) IGAZOLT,
		isnull(Igazolatlan.ORASZAM,0) IGAZOLATLAN
		from T_TANULOCSOPORT_OSSZES
		left outer join T_FELHASZNALO_OSSZES tanulo on tanulo.ID = T_TANULOCSOPORT_OSSZES.C_TANULOID and tanulo.TOROLT = 'F'
		left outer join T_TANULO_OSSZES on T_TANULO_OSSZES.ID = tanulo.ID and T_TANULO_OSSZES.TOROLT = 'F'
		left outer join T_OSZTALYCSOPORT_OSSZES on T_OSZTALYCSOPORT_OSSZES.ID = T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID and T_OSZTALYCSOPORT_OSSZES.TOROLT = 'F'
		left outer join T_INTEZMENYADATOK_OSSZES on T_INTEZMENYADATOK_OSSZES.C_INTEZMENYID = T_TANULOCSOPORT_OSSZES.C_INTEZMENYID and T_INTEZMENYADATOK_OSSZES.C_TANEVID = T_TANULOCSOPORT_OSSZES.C_TANEVID and T_INTEZMENYADATOK_OSSZES.TOROLT = 'F'
		left outer join T_OSZTALY_OSSZES on T_OSZTALY_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.ID and T_OSZTALY_OSSZES.TOROLT = 'F'
		left outer join T_FELHASZNALO_OSSZES osztf on osztf.ID = T_OSZTALY_OSSZES.C_OSZTALYFONOKID and osztf.TOROLT = 'F'

		left outer join --Állandó lakcím
		(select
		T_CIM_OSSZES.C_FELHASZNALOID TanuloID,
		T_CIM_OSSZES.C_IRANYITOSZAM IranyitoSzam1,
		T_CIM_OSSZES.C_VAROS Varos1,
		T_CIM_OSSZES.C_KOZTERULET Kozterulet1,
		T_CIM_OSSZES.C_KOZTERULETJELLEGE KozteruletJellege1,
		T_CIM_OSSZES.C_HAZSZAM Hazszam1,
		T_CIM_OSSZES.C_EMELET Emelet1,
		T_CIM_OSSZES.C_AJTO Ajto1
		from T_CIM_OSSZES where T_CIM_OSSZES.TOROLT = 'F' and T_CIM_OSSZES.C_CIMTIPUSA = 907) AllandoLakcim on AllandoLakcim.TanuloID = tanulo.ID

		left outer join -- Tartózkodási hely
		(select
		T_CIM_OSSZES.C_FELHASZNALOID TanuloID,
		T_CIM_OSSZES.C_IRANYITOSZAM IranyitoSzam2,
		T_CIM_OSSZES.C_VAROS Varos2,
		T_CIM_OSSZES.C_KOZTERULET Kozterulet2,
		T_CIM_OSSZES.C_KOZTERULETJELLEGE KozteruletJellege2,
		T_CIM_OSSZES.C_HAZSZAM Hazszam2,
		T_CIM_OSSZES.C_EMELET Emelet2,
		T_CIM_OSSZES.C_AJTO Ajto2
		from T_CIM_OSSZES where T_CIM_OSSZES.TOROLT = 'F' and T_CIM_OSSZES.C_CIMTIPUSA = 909) TartozkodasiHely on TartozkodasiHely.TanuloID = tanulo.ID

		left outer join --Összes igazolt mulasztás
		(
			SELECT MULASZT.C_ORATANULOIID Tanulo, COUNT(1) ORASZAM
			FROM T_TANULOMULASZTAS_OSSZES MULASZT
			JOIN (SELECT C_TANULOID, C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES 
			WHERE T_TANULOCSOPORT_OSSZES.TOROLT='F' and T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE() and (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())) TANCSOPORT ON TANCSOPORT.C_TANULOID = MULASZT.C_ORATANULOIID 
			WHERE MULASZT.TOROLT ='F' AND TANCSOPORT.C_OSZTALYCSOPORTID = @OsztalyId AND MULASZT.C_IGAZOLT = 'T' AND MULASZT.C_TIPUS != 1498
			GROUP BY MULASZT.C_ORATANULOIID
		) Igazolt on Igazolt.Tanulo = Tanulo.ID

		left outer join -- Összes igazolatlan mulasztás
		(
			SELECT MULASZT.C_ORATANULOIID Tanulo, COUNT(1) ORASZAM
			FROM T_TANULOMULASZTAS_OSSZES MULASZT
			JOIN (SELECT C_TANULOID, C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES 
			WHERE T_TANULOCSOPORT_OSSZES.TOROLT='F' and T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE() and (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())) TANCSOPORT ON TANCSOPORT.C_TANULOID = MULASZT.C_ORATANULOIID 
			WHERE MULASZT.TOROLT ='F' AND TANCSOPORT.C_OSZTALYCSOPORTID = @OsztalyId AND MULASZT.C_IGAZOLT = 'F' AND MULASZT.C_TIPUS != 1498
			GROUP BY MULASZT.C_ORATANULOIID
		) Igazolatlan on Igazolatlan.Tanulo = Tanulo.ID

		left outer join -- Gondviselő adatok
		(
			select
			T_GONDVISELO_OSSZES.ID,
			T_GONDVISELO_OSSZES.C_TANULOID GondvTanulo, 
			T_GONDVISELO_OSSZES.C_NEV GondvNeve,
			isnull(T_TELEFON_OSSZES.C_TELEFONSZAM,'') GondvTelefon,
			isnull(T_CIM_OSSZES.C_OSSZETETTCIM,'') GondvCim
			from T_GONDVISELO_OSSZES
			left join T_TELEFON_OSSZES on T_TELEFON_OSSZES.C_GONDVISELOID = T_GONDVISELO_OSSZES.ID and T_TELEFON_OSSZES.TOROLT = 'F'
			left join T_CIM_OSSZES on T_CIM_OSSZES.C_GONDVISELOID = T_GONDVISELO_OSSZES.ID and T_CIM_OSSZES.TOROLT = 'F'
			where
			T_GONDVISELO_OSSZES.TOROLT = 'F'
		) GONDVISELO on GONDVISELO.GondvTanulo = T_TANULO_OSSZES.ID 
		where
		T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID = @OsztalyId and 
		T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE() and
		(T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE()) and
		T_TANULOCSOPORT_OSSZES.TOROLT = 'F' and
		T_TANULO_OSSZES.C_TANKOTELEZETT = @Tankoteles and
		T_TANULOCSOPORT_OSSZES.C_TANEVID = @TanevId
		order by tanulo.C_NYOMTATASINEV


		--Mulasztások részletezése
		select 
		T_TANULOMULASZTAS_OSSZES.C_ORATANULOIID Tanulo,
		T_TANITASIORA_OSSZES.C_DATUM Datum,
		T_TANITASIORA_OSSZES.C_ORASZAM Oraszam,
		T_TANULOMULASZTAS_OSSZES.C_TIPUS Tipus,
		T_TANULOMULASZTAS_OSSZES.C_KESESPERCBEN KesesPerc,
		T_OSZTALYCSOPORT_OSSZES.C_NEV OsztNev,
		T_TANTARGY_OSSZES.C_NEV Tantargy
		from T_TANULOMULASZTAS_OSSZES
		inner join T_TANITASIORA_OSSZES on T_TANITASIORA_OSSZES.ID = T_TANULOMULASZTAS_OSSZES.C_TANITASIORAKID and T_TANITASIORA_OSSZES.TOROLT= 'F'
		left outer join T_TANTARGY_OSSZES on T_TANTARGY_OSSZES.ID = T_TANITASIORA_OSSZES.C_TANTARGYID and T_TANTARGY_OSSZES.TOROLT = 'F'
		left outer join T_TANULOCSOPORT_OSSZES on T_TANULOCSOPORT_OSSZES.C_TANULOID = T_TANULOMULASZTAS_OSSZES.C_ORATANULOIID and T_TANULOCSOPORT_OSSZES.TOROLT = 'F'
		left outer join T_OSZTALYCSOPORT_OSSZES on T_OSZTALYCSOPORT_OSSZES.ID = T_TANITASIORA_OSSZES.C_OSZTALYCSOPORTID
		where T_TANULOMULASZTAS_OSSZES.C_TIPUS != 1498 and
		T_TANULOCSOPORT_OSSZES.TOROLT='F' and 
		T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE() and
		(T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE()) and
		T_TANULOMULASZTAS_OSSZES.C_ORATANULOIID in (SELECT C_TANULOID FROM T_TANULOCSOPORT_OSSZES WHERE C_OSZTALYCSOPORTID=@OSZTALYID AND TOROLT='F') and
		T_TANULOMULASZTAS_OSSZES.C_IGAZOLT = 'F' and
		T_TANULOMULASZTAS_OSSZES.TOROLT = 'F' and
		T_TANULOMULASZTAS_OSSZES.C_TANEVID = @TanevId
		order by T_TANULOMULASZTAS_OSSZES.C_ORATANULOIID, T_TANITASIORA_OSSZES.C_DATUM

	END

GO