SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

DROP PROCEDURE IF EXISTS [dbo].[sp_GetFaliujsagBejegyzesek] 
GO

-- =============================================
-- Description:	<Felhasználóhoz tartozó faliújságbejegyzések és tanévrendje események lekérdezése>
-- =============================================
CREATE PROCEDURE [dbo].[sp_GetFaliujsagBejegyzesek]
	 @pUserId								INT
	,@pDate									DATE
	,@pEsemenyTipusFaliujsagBejegyzes		INT

AS
BEGIN

	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	SELECT DISTINCT
		 te.ID				ID
		,te.C_KEZDETE		Erv_kezd
		,te.C_TARGY			Cim
		,te.C_TARTALOM		Szoveg
		,f.C_NYOMTATASINEV	Bejegyzo
		,f.C_PROFILKEP		ProfilKep
		,munka.ID			Munkakor
	FROM T_TANULOESEMENY te
	INNER JOIN T_FELHASZNALO f ON te.C_FELJEGYZOID = f.ID AND f.TOROLT = 'F'
	CROSS APPLY(SELECT TOP 1 ISNULL(d.ID, m.C_MUNKAKORTIPUSA) ID
		FROM T_MUNKAUGYIADATOK m 
		LEFT JOIN T_DICTIONARYITEMBASE d ON m.C_VEZETOIORASZAMOK = d.ID AND d.C_NAME != 'Nincs'
		WHERE m.TOROLT = 'F' AND m.C_ALKALMAZOTTID = f.ID
		ORDER BY m.LASTCHANGED DESC) munka
	LEFT JOIN T_TANULO_TANULOESEMENY tte ON te.ID = tte.C_TANULOESEMENYID AND tte.C_TANULOID = @pUserId
	OUTER APPLY (SELECT TOP 1 tcs.ID
		FROM T_TANULOCSOPORT tcs
		WHERE tcs.TOROLT = 'F' AND tcs.C_TANULOID = @pUserId AND tcs.C_BELEPESDATUM <= @pDate AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= @pDate)
		ORDER BY tcs.C_KILEPESDATUM DESC
	) csoport
	LEFT JOIN T_OSZTALYCSOPORT_TANULOESEMENY ote ON te.ID = tte.C_TANULOESEMENYID AND csoport.ID = ote.C_OSZTALYCSOPORTID
	WHERE te.TOROLT = 'F' AND te.C_KEZDETE <= @pDate AND (te.C_VEGE IS NULL OR te.C_VEGE >= @pDate)
		  AND (te.C_MINDENKINEK = 'T' OR ote.C_OSZTALYCSOPORTID IS NOT NULL OR tte.C_TANULOID IS NOT NULL)
		  AND (te.C_FALIUJSAGMEGJELENES = 'T' AND tte.C_TANULOID IS NOT NULL OR te.C_TIPUS = @pEsemenyTipusFaliujsagBejegyzes)
	ORDER BY te.C_KEZDETE DESC

END

GO
