-- ============================================= -- Description: -- ============================================= SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO DROP PROCEDURE IF EXISTS [dbo].[uspGetTanuloErtekelesDataSetByTanulo] GO CREATE PROCEDURE [dbo].[uspGetTanuloErtekelesDataSetByTanulo] @pIntezmenyId INT ,@pTanevId INT ,@pTanarId INT ,@pTanuloId INT ,@pDatum DATE = NULL AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements. SET NOCOUNT ON; IF @pDatum IS NULL SET @pDatum = CONVERT(DATE, GETDATE()) DECLARE @evfolyamTipusId INT = (SELECT EvfolyamTipusId FROM dbo.fnGetTanuloOsztaly(@pTanuloId, @pDatum)) /*TODO:Tobb Osztaly*//*OM-1641*/ CREATE TABLE #KapcsopodoTantargyak( ID INT ,C_FOTARGYID INT ,C_NEV NVARCHAR(255) ,C_TARGYKATEGORIA INT ,C_INTEZMENYID INT ,C_TANEVID INT ) INSERT INTO #KapcsopodoTantargyak SELECT ID ,C_FOTARGYID ,C_NEV ,C_TARGYKATEGORIA ,C_INTEZMENYID ,C_TANEVID FROM fnGetKapcsolodoTantargyak(@pIntezmenyId, @pTanevId, NULL) CREATE TABLE #OsztalyCsoportIdList( ID INT PRIMARY KEY ) INSERT INTO #OsztalyCsoportIdList (ID) SELECT OsztalyCsoport.ID FROM T_TANULOCSOPORT_OSSZES TanuloCsoport INNER JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON OsztalyCsoport.C_INTEZMENYID = TanuloCsoport.C_INTEZMENYID AND OsztalyCsoport.C_TANEVID = TanuloCsoport.C_TANEVID AND OsztalyCsoport.TOROLT = 'F' AND OsztalyCsoport.ID = TanuloCsoport.C_OSZTALYCSOPORTID WHERE TanuloCsoport.C_INTEZMENYID = @pIntezmenyId AND TanuloCsoport.C_TANEVID = @pTanevId AND TanuloCsoport.TOROLT = 'F' AND TanuloCsoport.C_TANULOID = @pTanuloId AND TanuloCsoport.C_BELEPESDATUM <= GETDATE() AND (TanuloCsoport.C_KILEPESDATUM IS NULL OR TanuloCsoport.C_KILEPESDATUM >= GETDATE()) CREATE TABLE #Tantargyak( ID INT ,C_FOTARGYID INT ,C_NEV NVARCHAR(255) ,C_TARGYKATEGORIA INT ,C_INTEZMENYID INT ,C_TANEVID INT ); --NOTE: A Magatartást/Szorgalmat beszúrjuk mint tantárgy INSERT INTO #Tantargyak (ID, C_FOTARGYID, C_NEV, C_TARGYKATEGORIA, C_INTEZMENYID, C_TANEVID) SELECT NULL, NULL, 'Magatartás/Szorgalom', 0, @pIntezmenyId, @pTanevID; WITH tantargy_CTE (C_TANTARGYID, C_FOTARGYID, C_INTEZMENYID, C_TANEVID) AS ( SELECT DISTINCT Foglalkozas.C_TANTARGYID, Tantargy.C_FOTARGYID, Tantargy.C_INTEZMENYID, Tantargy.C_TANEVID FROM T_FOGLALKOZAS_OSSZES Foglalkozas INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.C_INTEZMENYID = Foglalkozas.C_INTEZMENYID AND Tantargy.C_TANEVID = Foglalkozas.C_TANEVID AND Tantargy.TOROLT = 'F' AND Tantargy.ID = Foglalkozas.C_TANTARGYID INNER JOIN #OsztalyCsoportIdList OsztalyCsoport ON OsztalyCsoport.ID = Foglalkozas.C_OSZTALYCSOPORTID WHERE Foglalkozas.C_INTEZMENYID = @pIntezmenyId AND Foglalkozas.C_TANEVID = @pTanevId AND Foglalkozas.TOROLT = 'F' UNION SELECT DISTINCT OrarendiOra.C_TANTARGYID, Tantargy.C_FOTARGYID, Tantargy.C_INTEZMENYID, Tantargy.C_TANEVID FROM T_ORARENDIORA_OSSZES OrarendiOra INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.C_INTEZMENYID = OrarendiOra.C_INTEZMENYID AND Tantargy.C_TANEVID = OrarendiOra.C_TANEVID AND Tantargy.TOROLT = 'F' AND Tantargy.ID = OrarendiOra.C_TANTARGYID INNER JOIN #OsztalyCsoportIdList OsztalyCsoport ON OsztalyCsoport.ID = OrarendiOra.C_OSZTALYCSOPORTID WHERE OrarendiOra.C_INTEZMENYID = @pIntezmenyId AND OrarendiOra.C_TANEVID = @pTanevId AND OrarendiOra.TOROLT = 'F' UNION SELECT DISTINCT TanuloErtekeles.C_TANTARGYID, Tantargy.C_FOTARGYID, Tantargy.C_INTEZMENYID, Tantargy.C_TANEVID FROM T_TANULOERTEKELES_OSSZES TanuloErtekeles INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.C_INTEZMENYID = TanuloErtekeles.C_INTEZMENYID AND Tantargy.C_TANEVID = TanuloErtekeles.C_TANEVID AND Tantargy.TOROLT = 'F' AND Tantargy.ID = TanuloErtekeles.C_TANTARGYID INNER JOIN T_OSZTALYCSOPORT_OSSZES Osztaly ON Osztaly.C_INTEZMENYID = TanuloErtekeles.C_INTEZMENYID AND Osztaly.C_TANEVID = TanuloErtekeles.C_TANEVID AND Osztaly.TOROLT = 'F' AND Osztaly.ID = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID AND Osztaly.C_EVFOLYAMTIPUSA = @evfolyamTipusId WHERE TanuloErtekeles.C_INTEZMENYID = @pIntezmenyId AND TanuloErtekeles.C_TANEVID = @pTanevId AND TanuloErtekeles.TOROLT = 'F' AND TanuloErtekeles.C_TANULOID = @pTanuloId AND TanuloErtekeles.C_TANTARGYID IS NOT NULL UNION ALL -- NOTE: Ami-s értékelésnél a C_ROGZITESKORITANULOOSZTALYID null, ezeket mindig meg kell jeleníteni SELECT DISTINCT TanuloErtekeles.C_TANTARGYID, Tantargy.C_FOTARGYID, Tantargy.C_INTEZMENYID, Tantargy.C_TANEVID FROM T_TANULOERTEKELES_OSSZES TanuloErtekeles INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.C_INTEZMENYID = TanuloErtekeles.C_INTEZMENYID AND Tantargy.C_TANEVID = TanuloErtekeles.C_TANEVID AND Tantargy.TOROLT = 'F' AND Tantargy.ID = TanuloErtekeles.C_TANTARGYID WHERE TanuloErtekeles.C_INTEZMENYID = @pIntezmenyId AND TanuloErtekeles.C_TANEVID = @pTanevId AND TanuloErtekeles.TOROLT = 'F' AND TanuloErtekeles.C_TANULOID = @pTanuloId AND TanuloErtekeles.C_TANTARGYID IS NOT NULL AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NULL ) INSERT INTO #Tantargyak (ID, C_FOTARGYID, C_NEV, C_TARGYKATEGORIA, C_INTEZMENYID, C_TANEVID) SELECT DISTINCT KapcsopodoTantargy.ID, KapcsopodoTantargy.C_FOTARGYID, KapcsopodoTantargy.C_NEV, KapcsopodoTantargy.C_TARGYKATEGORIA, KapcsopodoTantargy.C_INTEZMENYID, KapcsopodoTantargy.C_TANEVID FROM tantargy_CTE INNER JOIN #KapcsopodoTantargyak KapcsopodoTantargy ON tantargy_CTE.C_TANTARGYID = KapcsopodoTantargy.ID OR tantargy_CTE.C_FOTARGYID = KapcsopodoTantargy.ID SELECT @pTanuloId TanuloId ,Tantargy.ID TantargyId ,Tantargy.C_NEV TantargyNev ,TanuloErtekeles.ID ID ,TanuloErtekeles.C_DATUM Datum ,TanuloErtekeles.C_ROGZITESDATUM RogzitesDatum ,TanuloErtekeles.C_TIPUSID TipusId ,FelhasznaloErtekelo.C_NYOMTATASINEV ErtekeloNyomtatasiNev ,IIF(TanuloErtekeles.ID IS NULL, -- NULL, -- CASE -- WHEN TanuloErtekeles.C_ERTEKELOID = @pTanarId -- THEN 'T' -- ELSE 'F' -- END -- ) Modosithato ,TanuloErtekeles.CREATED Created ,IIF(TanuloErtekeles.C_ISMAGATARTASSZORGALOM IS NOT NULL, -- TanuloErtekeles.C_ISMAGATARTASSZORGALOM, -- IIF (Tantargy.ID IS NOT NULL, 'F', 'T') -- ) IsMagatartasSzorgalom ,TanuloErtekeles.C_ISERTESITESELKULDVE IsErtesitesElkuldve ,TanuloErtekeles.C_ERTEKELESOSZTALYZATID ErtekelesOsztalyzatId ,TanariAtlagSuly.C_SULY Suly ,TanuloErtekeles.C_ERTEKELESSZOVEG ErtekelesSzoveg ,TanuloErtekeles.C_ERTEKELESSZOVEGROVIDNEV ErtekelesSzovegRovidNev ,TanuloErtekeles.C_ERTEKELESSZAZALEK ErtekelesSzazalek ,TanuloErtekeles.C_ERTEKELESMODID ErtekelesModId ,TanuloErtekeles.C_ERTEKELESTEMA ErtekelesTema ,TanuloErtekeles.C_MAGATARTASOSZTALYZATID MagatartasOsztalyzatId ,TanuloErtekeles.C_MAGATARTASSZOVEG MagatartasSzoveg ,TanuloErtekeles.C_MAGATARTASSZOVEGROVIDNEV MagatartasSzovegRovidNev ,TanuloErtekeles.C_MAGATARTASERTEKID MagatartasErtekId ,TanuloErtekeles.C_SZORGALOMOSZTALYZATID SzorgalomOsztalyzatId ,TanuloErtekeles.C_SZORGALOMSZOVEG SzorgalomSzoveg ,TanuloErtekeles.C_SZORGALOMSZOVEGROVIDNEV SzorgalomSzovegRovidNev ,TanuloErtekeles.C_SZORGALOMERTEKID SzorgalomErtekId ,Tantargy.C_TARGYKATEGORIA TantargyKategoriaId ,Fotargy.ID FotargyId ,Fotargy.C_NEV FotargyNev ,Fotargy.C_TARGYKATEGORIA FotargyTantargyKategoriaId FROM #Tantargyak Tantargy LEFT JOIN( SELECT TanuloErtekeles.* FROM T_TANULOERTEKELES_OSSZES TanuloErtekeles INNER JOIN T_OSZTALYCSOPORT_OSSZES Osztaly ON Osztaly.C_INTEZMENYID = TanuloErtekeles.C_INTEZMENYID AND Osztaly.C_TANEVID = TanuloErtekeles.C_TANEVID AND Osztaly.TOROLT = 'F' AND Osztaly.ID = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID AND Osztaly.C_EVFOLYAMTIPUSA = @evfolyamTipusId WHERE TanuloErtekeles.C_INTEZMENYID = @pIntezmenyId AND TanuloErtekeles.C_TANEVID = @pTanevId AND TanuloErtekeles.TOROLT = 'F' AND TanuloErtekeles.C_TANULOID = @pTanuloId UNION ALL -- NOTE: Ami-s értékelésnél a C_ROGZITESKORITANULOOSZTALYID null, ezeket mindig meg kell jeleníteni SELECT TanuloErtekeles.* FROM T_TANULOERTEKELES_OSSZES TanuloErtekeles WHERE TanuloErtekeles.C_INTEZMENYID = @pIntezmenyId AND TanuloErtekeles.C_TANEVID = @pTanevId AND TanuloErtekeles.TOROLT = 'F' AND TanuloErtekeles.C_TANULOID = @pTanuloId AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NULL ) AS TanuloErtekeles ON (TanuloErtekeles.C_TANTARGYID = Tantargy.ID OR (TanuloErtekeles.C_TANTARGYID IS NULL AND Tantargy.ID IS NULL)) LEFT JOIN T_FELHASZNALO_OSSZES FelhasznaloErtekelo ON FelhasznaloErtekelo.C_INTEZMENYID = Tantargy.C_INTEZMENYID AND FelhasznaloErtekelo.C_TANEVID = Tantargy.C_TANEVID AND FelhasznaloErtekelo.TOROLT = 'F' AND FelhasznaloErtekelo.ID = TanuloErtekeles.C_ERTEKELOID LEFT JOIN T_TANARIATLAGSULY_OSSZES TanariAtlagSuly ON TanariAtlagSuly.C_INTEZMENYID = Tantargy.C_INTEZMENYID AND TanariAtlagSuly.C_TANEVID = Tantargy.C_TANEVID AND TanariAtlagSuly.TOROLT = 'F' AND TanariAtlagSuly.C_ERTEKELESMODID = TanuloErtekeles.C_ERTEKELESMODID AND TanuloErtekeles.C_ISMAGATARTASSZORGALOM = 'F' AND TanuloErtekeles.C_ERTEKELESOSZTALYZATID IS NOT NULL LEFT JOIN T_TANTARGY_OSSZES Fotargy ON Fotargy.C_INTEZMENYID = Tantargy.C_INTEZMENYID AND Fotargy.C_TANEVID = Tantargy.C_TANEVID AND Fotargy.TOROLT = 'F' AND Fotargy.ID = Tantargy.C_FOTARGYID END GO