-- =============================================
-- Author:		Dőrr Tamás
-- Create date: 2017.02.24.
-- Description:	
-- =============================================
IF OBJECT_ID('sp_GetElozoOranHianyzottTanulok') IS NOT NULL BEGIN
  DROP PROCEDURE sp_GetElozoOranHianyzottTanulok
END
GO

CREATE PROCEDURE [sp_GetElozoOranHianyzottTanulok]
	@OsztalyCsoportId	int,
	@Datum				datetime,
	@OraKezdete			datetime,
	@HianyzasTipus		int
AS
BEGIN
	SET NOCOUNT ON;

	DECLARE @tempOsztalyCsoportok TABLE (OsztalyCsoportID int PRIMARY KEY)
	DECLARE @tempTanulok TABLE (TanuloID int PRIMARY KEY)
	DECLARE @resultTanuloK TABLE (TanuloID int)
	
	INSERT INTO @tempOsztalyCsoportok (OsztalyCsoportID)
		SELECT DISTINCT ID FROM [fnGetKapcsolodoOsztalycsoportok] (@OsztalyCsoportId)
	
	INSERT INTO @tempTanuloK (TanuloID)
		SELECT DISTINCT
			C_ORATANULOIID
		FROM T_TANULOMULASZTAS tm
		JOIN T_TANITASIORA t ON t.ID = tm.C_TANITASIORAKID AND t.C_DATUM = @datum AND tm.C_TIPUS = @HianyzasTipus AND t.TOROLT = 'F'
		WHERE tm.TOROLT = 'F' AND tm.C_ORATANULOIID IN (
														SELECT
															tcs.C_TANULOID
														FROM T_TANULOCSOPORT tcs
														WHERE
															tcs.C_OSZTALYCSOPORTID IN (select OsztalyCsoportID from @tempOsztalyCsoportok) 
																AND tcs.TOROLT = 'F'
																AND @datum BETWEEN tcs.C_BELEPESDATUM AND ISNULL(tcs.C_KILEPESDATUM, GETDATE())
														)

	DECLARE @TanuloId int
	DECLARE MY_CURSOR CURSOR 
	LOCAL STATIC READ_ONLY FORWARD_ONLY
	FOR 
		SELECT DISTINCT TanuloID FROM @tempTanuloK
	OPEN MY_CURSOR
	FETCH NEXT FROM MY_CURSOR INTO @TanuloId
	WHILE @@FETCH_STATUS = 0
		BEGIN 
			INSERT INTO @resultTanuloK (TanuloID)
				SELECT TOP 1
					tm.C_ORATANULOIID
				FROM T_TANITASIORA t
				LEFT JOIN T_TANULOMULASZTAS tm ON tm.C_TANITASIORAKID = t.ID AND tm.C_ORATANULOIID = @TanuloId AND tm.TOROLT = 'F' AND tm.C_TIPUS = @HianyzasTipus
				WHERE
					t.TOROLT = 'F' 
					AND t.C_ORAKEZDETE <= @OraKezdete
					AND t.ID IN (SELECT
								t.ID
							FROM T_TANITASIORA t
							WHERE
								t.C_OSZTALYCSOPORTID IN (SELECT OsztalyCsoportID FROM @tempOsztalyCsoportok) AND C_DATUM = @datum)
				ORDER BY
					t.C_ORAKEZDETE DESC

			FETCH NEXT FROM MY_CURSOR INTO @TanuloId
		END
	CLOSE MY_CURSOR
	DEALLOCATE MY_CURSOR

	SELECT TanuloID FROM @resultTanuloK WHERE TanuloID IS NOT NULL

END
