﻿GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

IF OBJECT_ID('sp_GetTorzslap') IS NOT NULL BEGIN
  DROP PROCEDURE [sp_GetTorzslap] 
END  
GO

CREATE PROCEDURE [dbo].[sp_GetTorzslap]
	@osztalyId int,
	@tanevId	int,
	@ertekelesTipus int,
	@kesesTipus int,
	@elmeletiOraPercben int = 45,
    @gyakorlatiOraPercben int = 60,
	@hatarozatTipus int
AS
BEGIN
	SET NOCOUNT ON;

	--Intézmény, tanév
	SELECT T_INTEZMENYADATOK_OSSZES.C_NEV IntezmenyNeve,
		T_INTEZMENYADATOK_OSSZES.C_IRANYITOSZAM IntezmenyIranyitoszam, 
		T_INTEZMENYADATOK_OSSZES.C_VAROS IntezmenyVaros,
		T_INTEZMENYADATOK_OSSZES.C_CIME IntezmenyCime,
		T_INTEZMENYADATOK_OSSZES.C_TELEFONSZAM TELEFON,
		T_INTEZMENYADATOK_OSSZES.C_EMAILCIM EMAILCIM,
		T_INTEZMENYADATOK_OSSZES.C_OMKOD IntezmenyOMKod,
		T_TANEV_OSSZES.C_NEV TANEV
	FROM T_INTEZMENYADATOK_OSSZES
		INNER JOIN T_TANEV_OSSZES ON T_TANEV_OSSZES.ID = T_INTEZMENYADATOK_OSSZES.C_TANEVID and T_TANEV_OSSZES.TOROLT = 'F'
	WHERE T_TANEV_OSSZES.ID = @tanevId

	--Osztály, évfolyam
	SELECT 
		T_OSZTALYCSOPORT_OSSZES.C_NEV,
		T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA
	FROM T_OSZTALYCSOPORT_OSSZES 
	WHERE 
		T_OSZTALYCSOPORT_OSSZES.ID = @osztalyId

	--Tanuló adatok
	DECLARE @NaploSorszam TABLE (
		TanuloId INT
		,Sorszam INT	
		)

	INSERT INTO @NaploSorszam
	EXEC sp_GetDokumentumTanuloNaploSorszam
		@osztalyId = @osztalyId

	SELECT 
		felhasznalo.ID TanuloId,
		felhasznalo.Azonosito,
		felhasznalo.Nev,
		felhasznalo.SzuletesiDatum,
		felhasznalo.SzuletesiHely,
		felhasznalo.Allampolgarsag,
		felhasznalo.Anyjaneve,
		felhasznalo.SzuletesiOrszag,
		felhasznalo.TorzslapSzam,
		gondviselo.Nev GondviseloNeve,
		gondviselo.Rokonsag,
		naploSorszam.Sorszam NaploSorszam
	FROM
		(
			SELECT 
				 T_FELHASZNALO_OSSZES.ID AS ID,
				 T_FELHASZNALO_OSSZES.C_OKTATASIAZONOSITO Azonosito,
				 T_FELHASZNALO_OSSZES.C_NYOMTATASINEV Nev,
				 T_FELHASZNALO_OSSZES.C_SZULETESIDATUM SzuletesiDatum,
				 T_FELHASZNALO_OSSZES.C_SZULETESIHELY SzuletesiHely,
				 T_FELHASZNALO_OSSZES.C_SZULETESIORSZAG SzuletesiOrszag,
				 T_FELHASZNALO_OSSZES.C_ALLAMPOLGARSAGA Allampolgarsag,
				 T_FELHASZNALO_OSSZES.C_ANYJANEVE Anyjaneve,
				 T_FELHASZNALO_OSSZES.C_NYILVANTARTASISZAM TorzslapSzam
				 FROM T_FELHASZNALO_OSSZES          
					INNER JOIN T_TANULOCSOPORT_OSSZES ON T_FELHASZNALO_OSSZES.ID = T_TANULOCSOPORT_OSSZES.C_TANULOID
				 WHERE T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID=@osztalyId
				 AND T_FELHASZNALO_OSSZES.C_TANEVID = @tanevId
				 AND T_FELHASZNALO_OSSZES.TOROLT='F'
				 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())
		) felhasznalo
	LEFT JOIN 
			(SELECT 
				T_GONDVISELO_OSSZES.C_NEV Gondviselo,
				T_GONDVISELO_OSSZES.C_ROKONSAGFOKA Rokonsag,
				T_GONDVISELO_OSSZES.C_TANULOID Id,
				T_GONDVISELO_OSSZES.C_NEV Nev
				FROM T_GONDVISELO_OSSZES
				WHERE T_GONDVISELO_OSSZES.TOROLT='F'
			) gondviselo on felhasznalo.ID = gondviselo.ID
	LEFT JOIN @NaploSorszam naploSorszam on naploSorszam.TanuloId = felhasznalo.ID
	ORDER BY felhasznalo.Nev

	--Határozat
	SELECT 
		T_TANULOESEMENY_OSSZES.C_TANULOID TANULOID,
		T_TANULOESEMENY_OSSZES.C_TARTALOM BEJEGYZES
	FROM T_TANULOESEMENY_OSSZES
			INNER 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 = T_TANULOESEMENY_OSSZES.C_TANULOID 
	WHERE TOROLT='F'
	AND TANCSOPORT.C_OSZTALYCSOPORTID = @osztalyId
	AND T_TANULOESEMENY_OSSZES.C_TIPUS = @hatarozatTipus
		
	--Egyéb bejegyzések
	SELECT 
		T_TANULOESEMENY_OSSZES.C_TANULOID TANULOID,
		T_TANULOESEMENY_OSSZES.C_TARTALOM BEJEGYZES, 
		T_TANULOESEMENY_OSSZES.C_TIPUS TIPUS
	FROM T_TANULOESEMENY_OSSZES
		INNER 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 = T_TANULOESEMENY_OSSZES.C_TANULOID 
	WHERE 
		TOROLT='F'
		AND TANCSOPORT.C_OSZTALYCSOPORTID = @osztalyId
		AND T_TANULOESEMENY_OSSZES.C_TANEVID = @tanevId
		AND T_TANULOESEMENY_OSSZES.C_TIPUS != @hatarozatTipus
		AND T_TANULOESEMENY_OSSZES.C_TIPUS <> 1534
	ORDER BY T_TANULOESEMENY_OSSZES.C_TANULOID

	-- MULASZTÁSOK
	DECLARE @Mulasztasok TABLE (
		TanuloId INT
		,Igazolt INT
		,Igazolatlan INT
		,ElmeletIgazolt INT
		,ElmeletIgazolatlan INT
		,GyakorlatIgazolt INT
		,GyakorlatIgazolatlan INT
		,Osszes INT		
		)

	INSERT INTO @Mulasztasok
	EXEC sp_GetDokumentumMulasztasok
		@osztalyId = @osztalyId,
		@tanevId = @tanevId,
		@elmeletGyakorlat = 0,
		@kesesTipus = @kesesTipus,
		@elmeletiOraPercben = @elmeletiOraPercben,
		@gyakorlatiOraPercben = @gyakorlatiOraPercben,
		@ertekelesTipus = @ertekelesTipus
	
	SELECT 
		TanuloId 
		,Igazolt 
		,Igazolatlan 
		,ElmeletIgazolt 
		,ElmeletIgazolatlan 
		,GyakorlatIgazolt 
		,GyakorlatIgazolatlan 
		,Osszes	
	FROM @Mulasztasok

	-- ÉRTÉKELÉSEK
	DECLARE @Ertekelesek TABLE (
		TanuloId			INT
		,Targy				NVARCHAR(MAX)
		,Ertekeles			NVARCHAR(MAX)
		,Jegyzet			NVARCHAR(MAX)	
		,ErtekelesJegyzettel NVARCHAR(MAX)	
		,SzovegesErtekeles	NVARCHAR(MAX)
		,Oraszam			INT
		,RENDEZ				INT
	)
	
	INSERT INTO @Ertekelesek
	EXEC sp_GetDokumentumErtekelesek
		@osztalyId = @osztalyId,
		@tanevId = @tanevId,
		@ertekelesTipus = @ertekelesTipus

	SELECT 
		TanuloId			
		, Targy				
		, Ertekeles	
		, Jegyzet	
		, ErtekelesJegyzettel				
		,SzovegesErtekeles	
		, Oraszam		
		, RENDEZ
	FROM 
	@Ertekelesek
END 

GO