DROP PROCEDURE IF EXISTS uspGetDokumentumTantargyakErtekeleshez GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE uspGetDokumentumTantargyakErtekeleshez @intezmenyId int, @tanevId int, @osztalyCsoportId int AS BEGIN SET NOCOUNT ON; DECLARE @evfolyamTipusId INT = (SELECT C_EVFOLYAMTIPUSA FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyCsoportId AND TOROLT = 'F') CREATE TABLE #KapcsopodoTantargyak( ID INT ,C_FOTARGYID INT ,C_NEV NVARCHAR(255) ,C_NEVNYOMTATVANYBAN NVARCHAR(255) ,C_TARGYKATEGORIA INT ,C_INTEZMENYID INT ,C_TANEVID INT ) INSERT INTO #KapcsopodoTantargyak SELECT kt.ID ,kt.C_FOTARGYID ,kt.C_NEV ,t.C_NEVNYOMTATVANYBAN ,kt.C_TARGYKATEGORIA ,kt.C_INTEZMENYID ,kt.C_TANEVID FROM dbo.fnGetKapcsolodoTantargyak(@intezmenyId, @tanevId, NULL) AS kt INNER JOIN T_TANTARGY_OSSZES AS t ON t.ID = kt.ID -- Összeszedjük az osztályhoz kapcsolódó csoportokat CREATE TABLE #OsztalyCsoportIdList( ID INT PRIMARY KEY ) IF EXISTS (SELECT ID FROM T_OSZTALY_OSSZES WHERE ID = @osztalyCsoportId) BEGIN INSERT INTO #OsztalyCsoportIdList (ID) SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(@osztalyCsoportId) -- Nem tanórai célú csoportok eltávolítása DELETE ocsl FROM #OsztalyCsoportIdList ocsl LEFT JOIN T_CSOPORT_OSSZES cs ON cs.ID = ocsl.ID WHERE cs.C_TIPUSA NOT IN (SELECT ID from fnGetTanoraiCeluCsoportTipusok(@tanevId)) END ELSE BEGIN -- Csoport esetén csak a keresett csoport kell legyen tagja INSERT INTO #OsztalyCsoportIdList (ID) SELECT @osztalyCsoportId END; -- Összeszedjük minden tanuló-tanulócsoporthoz a tárgyakat WITH tantargy_CTE (C_TANTARGYID, C_FOTARGYID, C_TANULOID, C_TANULOCSOPORTID, C_INTEZMENYID, C_TANEVID) AS ( -- TTF-es tárgyak SELECT DISTINCT Foglalkozas.C_TANTARGYID, Tantargy.C_FOTARGYID, f.ID as c_tanuloid, tcsOsztaly.ID as c_tanulocsoportid, 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 INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = OsztalyCsoport.ID AND tcs.TOROLT = 'F' INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID AND f.TOROLT = 'F' INNER JOIN T_TANULOCSOPORT_OSSZES tcsOsztaly ON tcsOsztaly.C_OSZTALYCSOPORTID = @osztalyCsoportId AND tcsOsztaly.C_TANULOID = f.ID AND tcsOsztaly.TOROLT = 'F' WHERE Foglalkozas.C_INTEZMENYID = @intezmenyId AND Foglalkozas.C_TANEVID = @tanevId AND Foglalkozas.TOROLT = 'F' UNION -- ttf-ben nem szereplő tárgyak SELECT DISTINCT OrarendiOra.C_TANTARGYID, Tantargy.C_FOTARGYID, f.ID as c_tanuloid, tcsOsztaly.ID as c_tanulocsoportid, 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 INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = OsztalyCsoport.ID AND (tcs.C_BELEPESDATUM < OrarendiOra.C_ORAERVENYESSEGVEGE AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= OrarendiOra.C_ORAERVENYESSEGKEZDETE)) AND tcs.TOROLT = 'F' INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID AND f.TOROLT = 'F' INNER JOIN T_TANULOCSOPORT_OSSZES tcsOsztaly ON tcsOsztaly.C_OSZTALYCSOPORTID = @osztalyCsoportId AND (tcsOsztaly.C_BELEPESDATUM < OrarendiOra.C_ORAERVENYESSEGVEGE AND (tcsOsztaly.C_KILEPESDATUM IS NULL OR tcsOsztaly.C_KILEPESDATUM >= OrarendiOra.C_ORAERVENYESSEGKEZDETE)) AND tcsOsztaly.C_TANULOID = f.ID AND tcsOsztaly.TOROLT = 'F' WHERE OrarendiOra.C_INTEZMENYID = @intezmenyId AND OrarendiOra.C_TANEVID = @tanevId AND OrarendiOra.TOROLT = 'F' UNION -- Értékelést kapott tárgyak SELECT DISTINCT TanuloErtekeles.TantargyId, TanuloErtekeles.FotargyId, TanuloErtekeles.TanuloId, TanuloErtekeles.TanuloCsoportId as C_TANULOCSOPORTID, @intezmenyId, @tanevId FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevId, @osztalyCsoportId, DEFAULT, DEFAULT, 1, DEFAULT, DEFAULT) AS TanuloErtekeles -- UNION ALL -- -- AMI-s értékelés ---- összevonható-e az alap értékeléssel -- SELECT DISTINCT -- TanuloErtekeles.C_TANTARGYID, -- Tantargy.C_FOTARGYID, -- TanuloErtekeles.C_TANULOID, -- tcs.ID as C_TANULOCSOPORTID, -- Tantargy.C_INTEZMENYID, -- Tantargy.C_TANEVID -- FROM ---- helyett az fnGetDokumentumErtekelesekOsztalyonkent -- 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 -- INNER JOIN -- T_TANULOCSOPORT_OSSZES tcs ON -- tcs.C_OSZTALYCSOPORTID = Osztaly.ID -- AND tcs.C_TANULOID = TanuloErtekeles.C_TANULOID ---- and ertekels-datum between tcs.belépés and tcs. kilépés -- WHERE -- TanuloErtekeles.C_INTEZMENYID = @intezmenyId -- AND TanuloErtekeles.C_TANEVID = @tanevId -- AND TanuloErtekeles.TOROLT = 'F' -- AND TanuloErtekeles.C_TANTARGYID IS NOT NULL -- AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NULL ) SELECT NULL, NULL, 'Magatartás', '', 0, f.ID, tcs.ID ,0 ,'' ,0 ,0 ,'' ,@intezmenyId ,@tanevId FROM T_TANULOCSOPORT_OSSZES tcs LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID AND f.TOROLT = 'F' WHERE tcs.C_OSZTALYCSOPORTID = @osztalyCsoportId AND tcs.TOROLT = 'F' UNION SELECT NULL, NULL, 'Szorgalom', '', 0, f.ID, tcs.ID ,1 ,'' ,0 ,0 ,'' ,@intezmenyId ,@tanevId FROM T_TANULOCSOPORT_OSSZES tcs LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID AND f.TOROLT = 'F' WHERE tcs.C_OSZTALYCSOPORTID = @osztalyCsoportId AND tcs.TOROLT = 'F' UNION SELECT DISTINCT KapcsopodoTantargy.ID, KapcsopodoTantargy.C_FOTARGYID, KapcsopodoTantargy.C_NEV, KapcsopodoTantargy.C_NEVNYOMTATVANYBAN, KapcsopodoTantargy.C_TARGYKATEGORIA, tantargy_CTE.c_tanuloId, tantargy_CTE.c_tanulocsoportid ,CASE WHEN KapcsopodoTantargy.C_FOTARGYID IS NULL THEN ISNULL(TargyKategoriaDictionary.C_ORDER, 10000) ELSE ISNULL(FotargyKategoriaDictionary.C_ORDER, 10000) END ,ISNULL(ISNULL(Fotargy.C_NEVNYOMTATVANYBAN, Fotargy.C_NEV), ISNULL(KapcsopodoTantargy.C_NEVNYOMTATVANYBAN, KapcsopodoTantargy.C_NEV)) AS RENDEZ2 ,ISNULL(KapcsopodoTantargy.C_FOTARGYID, KapcsopodoTantargy.ID) AS RENDEZ3 ,KapcsopodoTantargy.C_FOTARGYID AS RENDEZ4 ,ISNULL(KapcsopodoTantargy.C_NEVNYOMTATVANYBAN, KapcsopodoTantargy.C_NEV) AS RENDEZ5 ,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 LEFT JOIN T_TANTARGY_OSSZES Fotargy ON Fotargy.C_INTEZMENYID = tantargy_CTE.C_INTEZMENYID AND Fotargy.C_TANEVID = tantargy_CTE.C_TANEVID AND Fotargy.TOROLT = 'F' AND Fotargy.ID = tantargy_CTE.C_FOTARGYID LEFT JOIN T_DICTIONARYITEMBASE_OSSZES TargyKategoriaDictionary ON TargyKategoriaDictionary.Id = KapcsopodoTantargy.C_TARGYKATEGORIA AND TargyKategoriaDictionary.TOROLT = 'F' AND TargyKategoriaDictionary.C_TANEVID = @tanevId LEFT JOIN T_DICTIONARYITEMBASE_OSSZES FotargyKategoriaDictionary ON FotargyKategoriaDictionary.ID = Fotargy.C_TARGYKATEGORIA AND FotargyKategoriaDictionary.TOROLT = 'F' AND FotargyKategoriaDictionary.C_TANEVID = Fotargy.C_TANEVID END GO