﻿IF OBJECT_ID('fnGetDokumentumTanulokFeljegyzesei') IS NOT NULL BEGIN
  DROP FUNCTION fnGetDokumentumTanulokFeljegyzesei
END
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE FUNCTION fnGetDokumentumTanulokFeljegyzesei (@tanevId INT, @osztalyId INT)
  RETURNS TABLE
RETURN (
	SELECT 
		tanulok.TanuloId			TanuloId
		,te.ID						EsemenyId
		,te.C_TARTALOM				Tartalom
		,te.C_TIPUS					Tipusa
		,feljegyezo.C_NYOMTATASINEV FeljegyzoNeve
		,te.C_ROGZITESDATUMA		Datum
		,te.C_MEGJEGYZES			Megjegyzes
	FROM T_TANULOESEMENY_OSSZES te
		INNER JOIN T_TANITASIORA_OSSZES tao on tao.Id = te.C_TANITASIORAID 
		CROSS APPLY (SELECT TanuloId FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, tao.C_OSZTALYCSOPORTID, 'T')) tanulok
		INNER JOIN fnGetDokumentumTanulokOsztalybanToltottNapjai(@tanevId, @osztalyId) tanuloDatum 
															ON 
															tanuloDatum.TanuloId = tanulok.TanuloId 
															AND tanuloDatum.NapDatuma = tao.C_DATUM
		INNER JOIN T_FELHASZNALO_OSSZES feljegyezo	ON feljegyezo.ID = te.C_FELJEGYZOID
	WHERE 
		C_MINDENKINEK = 'T'
		AND te.TOROLT = 'F'
		AND tao.C_OSZTALYCSOPORTID IN (SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(@osztalyId))
		AND ((te.C_TIPUS NOT IN (1542, 6324, 6325)) OR (te.C_TIPUS = 1536 AND te.C_TANITASIORAID IS NULL)) 

	UNION

	SELECT 
		C_TANULOID					TanuloId
		,te.ID						EsemenyId
		,te.C_TARTALOM				Tartalom
		,te.C_TIPUS					Tipusa
		,feljegyezo.C_NYOMTATASINEV	FeljegyzoNeve
		,te.C_ROGZITESDATUMA		Datum
		,te.C_MEGJEGYZES			Megjegyzes
	FROM T_TANULO_TANULOESEMENY_OSSZES tte
		INNER JOIN T_TANULOESEMENY_OSSZES te on te.ID = tte.C_TANULOESEMENYID
		INNER JOIN T_FELHASZNALO_OSSZES feljegyezo	ON feljegyezo.ID = te.C_FELJEGYZOID
	WHERE
		C_TANULOID IN (SELECT TanuloId FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyId, 'T'))
		AND te.TOROLT = 'F'
		AND ((te.C_TIPUS NOT IN (1542, 6324, 6325)) OR (te.C_TIPUS = 1536 AND te.C_TANITASIORAID IS NULL)) 
)