﻿GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

IF OBJECT_ID('sp_GetDokumentumErtekelesek') IS NOT NULL BEGIN
  DROP PROCEDURE [sp_GetDokumentumErtekelesek] 
END  
GO

CREATE PROCEDURE sp_GetDokumentumErtekelesek
	@osztalyId int,
	@tanevId   int,
	@ertekelesTipus int,
	@isBizonyitvany int = 0

AS
BEGIN
	SET NOCOUNT ON;
	
--Osztályhoz tartozó tanulók
	DECLARE @Tanulok TABLE (TanuloId int)

	INSERT INTO @Tanulok
	SELECT 
		C_TANULOID
	FROM T_TANULOCSOPORT 
	WHERE 
		C_OSZTALYCSOPORTID = @osztalyId
		AND TOROLT='F'

--Tanulóhoz kapcsolódó óraszámok
	DECLARE @Oraszamok TABLE (TanuloId int, Tantargy INT, Oraszam INT)

	INSERT INTO @Oraszamok
	SELECT 
		TanuloId
		, TantargyId
		, SUM(Oraszam)
	FROM 
		(
		SELECT 
			te.C_TANULOID TanuloId
			, IIF(C_FOTARGYE = 'T', t.Id, C_FOTARGYID) TantargyId
			, IIF((SELECT C_VEGZOSEVFOLYAM FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyId) = 'T', 30, 36) * fog.C_ORASZAM Oraszam
		FROM T_TANULOERTEKELES_OSSZES te
			INNER JOIN T_FOGLALKOZAS_OSSZES fog on fog.C_OSZTALYCSOPORTID = te.C_OSZTALYCSOPORTID and fog.C_TANTARGYID = te.C_TANTARGYID
			INNER JOIN T_TANTARGY_OSSZES t on t.ID = te.C_TANTARGYID 
			INNER JOIN @Tanulok tanulok on tanulok.TanuloId = te.C_TANULOID
		WHERE 
			te.TOROLT = 'F'
			AND te.C_TANEVID = @tanevId
			AND te.C_ERTEKELESTIPUSA = @ertekelesTipus
		) a
	GROUP BY TanuloId, TantargyId

--Értékelések	
	SELECT 
			ERTEKELES.C_TANULOID	TANULOID
			, 'MAGATARTAS'			TARGY
			, ERT.C_NAME			Ertekeles
			, NULL					Jegyzet
			, ERT.C_NAME			ErtekelesJegyzettel
			, ERT.C_NAME			SzovegesErtekeles
			, NULL					Oraszam
			, 1						RENDEZ
	FROM T_TANULOERTEKELES_OSSZES ERTEKELES
			INNER JOIN (SELECT C_TANULOID, C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES WHERE T_TANULOCSOPORT_OSSZES.TOROLT='F'
																						  AND T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE()
																						  AND (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM IS NULL OR T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())) TANCSOPORT
				ON TANCSOPORT.C_TANULOID = ERTEKELES.C_TANULOID
			LEFT JOIN T_OSZTALYFONOKIERTEKELES_OSSZES OSZTALYZAT
				ON OSZTALYZAT.ID = ERTEKELES.ID
			LEFT JOIN T_DICTIONARYITEMBASE_OSSZES ERT ON ERT.ID=OSZTALYZAT.C_MAGATARTAS AND ERT.C_TANEVID = @tanevId
	WHERE 
		TANCSOPORT.C_OSZTALYCSOPORTID = @osztalyId 
		AND ERTEKELES.C_ERTEKELESTIPUSA = @ertekelesTipus
		AND (OSZTALYZAT.C_MAGATARTAS IS NOT NULL OR (LEN(ERTEKELES.C_ERTEKELESSZOVEG) > 0 AND ERTEKELES.C_TANTARGYID IS NULL) )
		AND ERTEKELES.C_TANEVID = @tanevId
		AND ERTEKELES.TOROLT='F'

	UNION

	SELECT 
			ERTEKELES.C_TANULOID	TANULOID
			, 'SZORGALOM'			TARGY
			, ERT.C_NAME			Ertekeles
			, NULL					Jegyzet
			, ERT.C_NAME			ErtekelesJegyzettel
			, ERT.C_NAME			SzovegesErtekeles
			, NULL					Oraszam
			, 2						RENDEZ
	FROM T_TANULOERTEKELES_OSSZES ERTEKELES
			INNER JOIN (SELECT C_TANULOID, C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES WHERE T_TANULOCSOPORT_OSSZES.TOROLT='F'
																						  AND T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE()
																						  AND (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM IS NULL OR T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())) TANCSOPORT
			ON TANCSOPORT.C_TANULOID = ERTEKELES.C_TANULOID
			LEFT JOIN T_OSZTALYFONOKIERTEKELES_OSSZES OSZTALYZAT
			ON OSZTALYZAT.ID = ERTEKELES.ID
			LEFT JOIN T_DICTIONARYITEMBASE_OSSZES ERT ON ERT.ID=OSZTALYZAT.C_SZORGALOM
	WHERE 
		TANCSOPORT.C_OSZTALYCSOPORTID = @osztalyId
		AND ERTEKELES.C_ERTEKELESTIPUSA = @ertekelesTipus
		AND OSZTALYZAT.C_SZORGALOM IS NOT NULL 
		AND ERTEKELES.C_TANEVID = @TanevId
		AND ERTEKELES.TOROLT='F'

	UNION 

	SELECT 
		   ERTEKELES.C_TANULOID				TANULOID
		   , TARGY.TARGYNEV					TARGY
		   , ERT.C_NAME						Ertekeles	   
		   , ertekelesMegjegyzes.C_TEMA		Jegyzet
		   , ERT.C_NAME + IIF(ertekelesMegjegyzes.C_TEMA IS NULL, '', +' * '+ertekelesMegjegyzes.C_TEMA) ErtekelesJegyzettel
		   , ERTEKELES.C_ERTEKELESSZOVEG	SzovegesErtekeles
		   , Oraszam						Oraszam
		   , TARGY.KAT						RENDEZ
	FROM T_TANULOERTEKELES_OSSZES ERTEKELES
			INNER JOIN (SELECT C_TANULOID, C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES 
								WHERE T_TANULOCSOPORT_OSSZES.TOROLT='F'
										AND T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE()
										AND (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM IS NULL OR T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())) TANCSOPORT
			ON TANCSOPORT.C_TANULOID = ERTEKELES.C_TANULOID 
			INNER JOIN ( SELECT ID,C_NEV TARGYNEV,C_TARGYKATEGORIA KAT, C_ALTANTARGYKENTNYOMTATVANYBAN, C_FOTARGYE FROM T_TANTARGY_OSSZES where TOROLT = 'F') TARGY 
			ON TARGY.ID = ERTEKELES.C_TANTARGYID
			LEFT JOIN T_DICTIONARYITEMBASE_OSSZES ERT ON ERT.ID=ERTEKELES.C_OSZTALYZAT AND ERT.C_TANEVID = @tanevId
			LEFT JOIN T_OSZTALYZATERTEKELES_OSSZES ertekelesMegjegyzes on ertekelesMegjegyzes.ID=ertekeles.Id
			LEFT JOIN @Oraszamok oraszam ON 
											oraszam.Tantargy = ERTEKELES.C_TANTARGYID
											AND oraszam.TanuloId = ERTEKELES.C_TANULOID
	WHERE 
		TANCSOPORT.C_OSZTALYCSOPORTID = @osztalyId		
		AND ERTEKELES.C_ERTEKELESTIPUSA = @ertekelesTipus 
		AND ERTEKELES.C_TANEVID = @tanevId
		AND ERTEKELES.TOROLT='F'
		AND (TARGY.C_FOTARGYE = 'T' OR TARGY.C_ALTANTARGYKENTNYOMTATVANYBAN='T')
	ORDER BY TANULOID, RENDEZ
	
END

GO