﻿SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

DROP PROCEDURE IF EXISTS sp_GetOsztalyokEvesOraszama
GO

CREATE PROCEDURE sp_GetOsztalyokEvesOraszama
	@tanevID int,
	@tanitasiHetekSzamaVegzos		INT = 32,
	@tanitasiHetekSzamaNemVegzos	INT = 36,
	@isAltantargyBeszamitasa		BIT
AS
BEGIN
  declare @osztalyok TABLE (
    OsztalyId INT
    ,OsztalyNev NVARCHAR(255)
  )

  INSERT INTO @osztalyok SELECT * FROM fnGetDokumentumOsztalyokTanevenkent(@tanevID) ORDER BY OsztalyId ASC

  SELECT * FROM @osztalyok

	DECLARE kurzor CURSOR FOR 
	SELECT OsztalyId, OsztalyNev FROM @osztalyok  
		LEFT JOIN (
					SELECT 
						COUNT(T_TANULOCSOPORT_OSSZES.C_TANULOID) tanuloCount, 
						T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID 
					FROM 
						T_TANULOCSOPORT_OSSZES
					INNER JOIN 
						T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID AND ocs.TOROLT = 'F'
					WHERE 
						T_TANULOCSOPORT_OSSZES.TOROLT = 'F' AND 
						T_TANULOCSOPORT_OSSZES.C_TANEVID = @tanevID 
					GROUP BY T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID
					) tanuloSzam ON tanuloSzam.C_OSZTALYCSOPORTID = OsztalyId
	WHERE 
		tanuloCount > 0
  ORDER BY OsztalyId

	DECLARE @OsztalyId int, @OsztalyNev nvarchar(255)

	OPEN kurzor
	FETCH NEXT FROM kurzor INTO @OsztalyId, @OsztalyNev

	WHILE @@FETCH_STATUS = 0 BEGIN

		SELECT DISTINCT
			tanulo.C_NYOMTATASINEV	TanuloNev
			,tantargy.C_NEV		TantargyNev
			,oraszamok.Oraszam		EvesOraszam
			,@OsztalyNev AS OsztalyNev
      ,@OsztalyId AS  OsztalyId
		FROM fnGetDokumentumTanulokEvesOraszamaiOsztalyonkent(@tanevID, @OsztalyId, @tanitasiHetekSzamaVegzos, @tanitasiHetekSzamaNemVegzos, @isAltantargyBeszamitasa) oraszamok
			INNER JOIN T_FELHASZNALO_OSSZES tanulo ON tanulo.ID = oraszamok.TanuloId
			INNER JOIN T_TANTARGY_OSSZES tantargy ON tantargy.ID = oraszamok.TantargyID 
  
	FETCH NEXT FROM kurzor INTO @OsztalyId, @OsztalyNev
	END

	CLOSE kurzor
	DEALLOCATE kurzor
END 

GO