DROP PROCEDURE IF EXISTS uspGetDokumentumTantargyakErtekeleshez 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') ,@elsoNap datetime ,@utolsoNap datetime SELECT @elsoNap = C_KEZDONAP, @utolsoNap = C_UTOLSONAP FROM T_TANEV_OSSZES WHERE ID = @tanevId CREATE TABLE #KapcsopodoTantargy( ID int ,C_FOTARGYID int ,C_NEV nvarchar(255) ,C_NEVNYOMTATVANYBAN nvarchar(255) ,C_TARGYKATEGORIA int ,C_INTEZMENYID int ,C_TANEVID int ) -- Összeszedjük az osztályhoz kapcsolódó csoportokat CREATE TABLE #KapcsolodoOsztalyCsoport( Id int PRIMARY KEY ,Kezdete datetime ,Vege datetime ) INSERT INTO #KapcsopodoTantargy 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 IF EXISTS (SELECT ID FROM T_OSZTALY_OSSZES WHERE ID = @osztalyCsoportId) BEGIN INSERT INTO #KapcsolodoOsztalyCsoport (ID) SELECT DISTINCT kocs.ID FROM fnGetKapcsolodoOsztalycsoportokByDate(@osztalyCsoportId, @elsoNap, @utolsoNap) kocs LEFT JOIN T_CSOPORT_OSSZES cs ON cs.ID = kocs.ID LEFT JOIN T_CSOPORTTIPUS cst ON cst.ID = cs.C_TIPUSA WHERE (cs.ID IS NULL OR cst.C_ISTANORAICELU = 'T') END ELSE BEGIN -- Csoport esetén csak a keresett csoport kell legyen tagja INSERT INTO #KapcsolodoOsztalyCsoport (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 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 #KapcsolodoOsztalyCsoport kocs ON kocs.ID = Foglalkozas.C_OSZTALYCSOPORTID INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = kocs.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 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 #KapcsolodoOsztalyCsoport kocs ON kocs.ID = OrarendiOra.C_OSZTALYCSOPORTID INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = kocs.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 ALL 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 ALL 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 RENDEZ1 ,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 #KapcsopodoTantargy 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