﻿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 [sp_GetTorzslap]
	@osztalyId				INT,
	@tanevId				INT,
	@ertekelesTipus			INT,
	@kesesTipus				INT,
	@elmeletiOraPercben		INT = 45,
    @gyakorlatiOraPercben	INT = 60,
	@iskolaErdekuSzamit		BIT
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
	
	--Osztályhoz tartozó tanulók
	DECLARE @Tanulok TABLE (TanuloId int)
	INSERT INTO @Tanulok
	SELECT TanuloId FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyId, 'T') 

	--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.Gondviselok GondviseloNeve,
		naploSorszam.Sorszam NaploSorszam,
		Adatvaltozas.Feljegyzes Adatvaltozas
	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 @Tanulok TANCSOPORT
						ON TANCSOPORT.TanuloId = T_FELHASZNALO_OSSZES.ID 
				 WHERE  
					T_FELHASZNALO_OSSZES.C_TANEVID = @tanevId
					AND T_FELHASZNALO_OSSZES.TOROLT='F'
		) felhasznalo
	LEFT JOIN 
			(
			SELECT DISTINCT
				g.C_TANULOID TanuloId
				,STUFF((SELECT  ' , ' + C_NEV + ' (' + d.C_NAME +')'
						FROM T_GONDVISELO_OSSZES bg		
							INNER JOIN T_DICTIONARYITEMBASE_OSSZES d on d.ID = bg.C_ROKONSAGFOKA AND d.C_TANEVID = bg.C_TANEVID				
						WHERE 
							bg.C_TANULOID=g.C_TANULOID
							AND bg.TOROLT = 'F'
						FOR XML PATH(''), TYPE)
					.value('.','NVARCHAR(MAX)'),1,3,'') Gondviselok
			FROM T_GONDVISELO_OSSZES g
			) gondviselo on felhasznalo.ID = gondviselo.TanuloId
	LEFT JOIN @NaploSorszam naploSorszam on naploSorszam.TanuloId = felhasznalo.ID
	LEFT JOIN (SELECT DISTINCT
					hatarozat.TanuloId
					,STUFF((SELECT  ' | ' + CAST(Tartalom AS VARCHAR(max)) 
							FROM fnGetDokumentumTanulokFeljegyzesei(@tanevId, @osztalyId) bhatarozat 							
							WHERE 
								bhatarozat.TanuloId=hatarozat.TanuloId
								AND Tipusa = 1545
							FOR XML PATH(''), TYPE)
						.value('.','NVARCHAR(MAX)'),1,2,' ') Feljegyzes
				FROM fnGetDokumentumTanulokFeljegyzesei(@tanevId, @osztalyId) hatarozat
				WHERE
					Tipusa = 1545 --Feljegyzések személyi adatok változásához:
				) Adatvaltozas on Adatvaltozas.TanuloId = felhasznalo.ID
	ORDER BY felhasznalo.Nev

	--Határozat
	SELECT 
		hatarozat.TanuloId	TanuloId
		,Tartalom			Bejegyzes 
	FROM fnGetDokumentumTanulokFeljegyzesei(@tanevId, @osztalyId) hatarozat
	WHERE
		Tipusa IN (1547, 1548, 1549, 1550, 1551, 1552, 1553) --évvégi

	--Egyéb bejegyzések 
	SELECT 
		bejegyzes.TanuloId	TanuloId
		,Tartalom		Bejegyzes 
		,Tipusa			Tipus
	FROM fnGetDokumentumTanulokFeljegyzesei(@tanevId, @osztalyId) bejegyzes
	WHERE
		Tipusa IN (1539, 5477, 5478, 5478, 5479, 5481, 5480)
	ORDER BY bejegyzes.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,
		@iskolaErdekuSzamit = @iskolaErdekuSzamit
	
	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