DROP PROCEDURE IF EXISTS uspGetDokumentumTantargyakErtekeleshez GO CREATE PROCEDURE uspGetDokumentumTantargyakErtekeleshez @intezmenyId int ,@tanevId int ,@osztalyCsoportId int ,@csakKivalasztottOsztalyCsoport bit ,@osztalyzatTipusTypeID int = 44 ,@magatartasErtekelesTipusTypeID int = 50 ,@szorgalomErtekelesTipusTypeID int = 51 ,@pIsKellKapcsolodoOsztalyCsoportok bit = 0 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 DECLARE @feladatKategoriaId int = (SELECT C_FELADATKATEGORIAID FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyCsoportId AND TOROLT = 'F') SELECT @elsoNap = C_KEZDONAP, @utolsoNap = C_UTOLSONAP FROM T_TANEV_OSSZES WHERE ID = @tanevId AND TOROLT = 'F' CREATE TABLE #kapcsolodoOsztalycsoportok (OsztalyCsoportId INT PRIMARY KEY) IF @pIsKellKapcsolodoOsztalyCsoportok = 1 BEGIN INSERT INTO #kapcsolodoOsztalycsoportok (OsztalyCsoportId) SELECT OsztalyCsoportok.Id FROM fnGetDokumentumKapcsolodoOsztalyCsoportokByDateRange (@osztalyCsoportId, @ElsoNap, @utolsoNap, @intezmenyId, @tanevId) OsztalyCsoportok INNER JOIN fnGetDokumentumOsztalyVagyTanoraiCsoport(@tanevId) TanoraiCeluOsztalyCsoportok on TanoraiCeluOsztalyCsoportok.ID = OsztalyCsoportok.Id END ELSE BEGIN INSERT INTO #kapcsolodoOsztalycsoportok (OsztalyCsoportId) VALUES (@osztalyCsoportId) END 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 ,C_SORSZAM int ) INSERT INTO #KapcsopodoTantargy SELECT kt.ID ,kt.C_FOTARGYID ,kt.C_NEV ,t.C_NEVNYOMTATVANYBAN ,kt.C_TARGYKATEGORIA ,kt.C_INTEZMENYID ,kt.C_TANEVID ,t.C_SORSZAM FROM dbo.fnGetKapcsolodoTantargyak(@intezmenyId, @tanevId, NULL) AS kt INNER JOIN T_TANTARGY_OSSZES AS t ON t.ID = kt.ID AND t.TOROLT = 'F'; -- Ö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 T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = Foglalkozas.C_OSZTALYCSOPORTID AND tcs.TOROLT = 'F' INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID AND ocs.TOROLT = 'F' AND ocs.C_FELADATKATEGORIAID = @feladatKategoriaId 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' INNER JOIN #kapcsolodoOsztalycsoportok kapcsolodoOsztalycsoportok ON kapcsolodoOsztalycsoportok.OsztalyCsoportId = Foglalkozas.C_OSZTALYCSOPORTID WHERE (tcsOsztaly.C_KILEPESDATUM IS NULL OR tcsOsztaly.C_KILEPESDATUM > tcs.C_BELEPESDATUM) AND 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 T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = OrarendiOra.C_OSZTALYCSOPORTID 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_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID AND ocs.TOROLT = 'F' AND ocs.C_FELADATKATEGORIAID = @feladatKategoriaId 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 (tcsOsztaly.C_KILEPESDATUM IS NULL OR tcsOsztaly.C_KILEPESDATUM > tcs.C_BELEPESDATUM) AND OrarendiOra.C_INTEZMENYID = @intezmenyId AND OrarendiOra.C_TANEVID = @tanevId AND OrarendiOra.TOROLT = 'F' AND OrarendiOra.C_OSZTALYCSOPORTID = @osztalyCsoportId 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, @csakKivalasztottOsztalyCsoport, DEFAULT, DEFAULT, @osztalyzatTipusTypeID, @magatartasErtekelesTipusTypeID, @szorgalomErtekelesTipusTypeID) AS TanuloErtekeles ) SELECT NULL ,NULL ,'Magatartás' ,'' ,0 ,f.ID ,tcs.ID ,0 ,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 ,0 ,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 ,KapcsopodoTantargy.C_SORSZAM ,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