SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF OBJECT_ID('sp_GetPedagogusOrarend') IS NOT NULL BEGIN DROP PROCEDURE sp_GetPedagogusOrarend END GO CREATE PROCEDURE sp_GetPedagogusOrarend @intezmenyId INT, @tanevId INT, @pedagogusId INT, @aktivTanevId INT, @isEgyebFoglalkozasok BIT AS BEGIN SET NOCOUNT ON; DECLARE @UtolsoNap DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_NAPTIPUSA=1395 AND C_TANEVID=@tanevid AND TOROLT='F') ,@ElsoNap DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_NAPTIPUSA=1394 AND C_TANEVID=@tanevid AND TOROLT='F') ,@VizsgaltNap DATE IF (@tanevId = @AktivtanevId AND GETDATE() <= @UtolsoNap) BEGIN IF (GETDATE() <= @ElsoNap) BEGIN SET @VizsgaltNap = (SELECT TOP 1 C_HETKEZDONAPJA FROM T_NAPTARIHET_OSSZES WHERE C_HETSORSZAMA = 1 AND TOROLT = 'F' AND C_TANEVID = @tanevId) END ELSE BEGIN SET @VizsgaltNap = CONVERT(DATE, GETDATE()) END END ELSE BEGIN SET @VizsgaltNap = (SELECT TOP 1 nh.C_HETUTOLSONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE @UtolsoNap >= CONVERT(DATE, nh.C_HETKEZDONAPJA) AND @UtolsoNap <= CONVERT(DATE, nh.C_HETUTOLSONAPJA) AND nh.TOROLT='F' AND nh.C_TANEVID=@tanevId) END SELECT C_ORASZAM OraSzam ,CONVERT(VARCHAR(5), C_KEZDETE, 108) Kezdete ,CONVERT(VARCHAR(5), C_VEGE, 108) Vege INTO #CsengetesiRendAdatok FROM T_CSENGETESIRENDORA_OSSZES CsengetesiRendOra INNER JOIN T_CSENGETESIREND_OSSZES CsengetesiRend ON CsengetesiRend.Id = CsengetesiRendOra.C_CSENGETESIRENDID WHERE CsengetesiRendOra.C_TANEVID = @tanevId AND CsengetesiRendOra.TOROLT = 'F' AND CsengetesiRend.TOROLT = 'F' AND CsengetesiRend.C_AKTIV = 'T' DECLARE @MinCsengetesiRendOraKezdet NVARCHAR(10) = (SELECT MIN(Kezdete) FROM #CsengetesiRendAdatok) DECLARE @MinCsengetesiRendOraszam INT = (SELECT MIN(OraSzam) FROM #CsengetesiRendAdatok) SELECT OrarendiOra.C_HETIREND HetirendId ,OrarendiOra.C_HETNAPJA HetnapjaId ,CsengetesiRendOra.C_ORASZAM OraSzam ,CONVERT(VARCHAR(5), OrarendiOra.C_ORAKEZDETE, 108) Kezdete ,CONVERT(VARCHAR(5), OrarendiOra.C_ORAVEGE, 108) Vege ,ISNULL(Tantargy.C_NEVNYOMTATVANYBAN, Tantargy.C_NEV) TantargyNev ,Pedagogus.C_NYOMTATASINEV PedagogusNev ,Terem.C_NEV TeremNev ,ocs.C_NEV OsztalyCsoportNev INTO #OrarendiOrak FROM T_ORARENDIORA_OSSZES OrarendiOra INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.Id = OrarendiOra.C_TANTARGYID INNER JOIN T_FELHASZNALO_OSSZES Pedagogus ON Pedagogus.Id = OrarendiOra.C_TANARID INNER JOIN T_TEREM_OSSZES Terem ON Terem.Id = OrarendiOra.C_TEREMID INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = OrarendiOra.C_OSZTALYCSOPORTID LEFT JOIN T_CSENGETESIRENDORA_OSSZES CsengetesiRendOra ON CsengetesiRendOra.Id = OrarendiOra.c_csengetesirendoraid LEFT JOIN T_CSOPORT_OSSZES Csoport ON OrarendiOra.C_OSZTALYCSOPORTID = Csoport.Id WHERE OrarendiOra.Torolt = 'F' AND @VizsgaltNap BETWEEN OrarendiOra.C_ORAERVENYESSEGKEZDETE AND OrarendiOra.C_ORAERVENYESSEGVEGE AND (@isEgyebFoglalkozasok = 1 OR (Csoport.C_TIPUSA = 1034 OR Csoport.C_TIPUSA IS NULL)) AND Orarendiora.C_TANARID = @pedagogusId SELECT MAX(CsengetesiRendAdatok.OraSzam) OraSzam ,OrarendiOrak.HetirendId HetirendId ,OrarendiOrak.HetnapjaId HetnapjaId ,OrarendiOrak.OsztalyCsoportNev OsztalyCsoportNev ,OrarendiOrak.PedagogusNev PedagogusNev ,OrarendiOrak.TantargyNev TantargyNev ,OrarendiOrak.TeremNev TeremNev ,OrarendiOrak.Kezdete Kezdete ,OrarendiOrak.Vege Vege INTO #OrarendTEMP FROM #CsengetesiRendAdatok CsengetesiRendAdatok LEFT JOIN #OrarendiOrak OrarendiOrak ON OrarendiOrak.Kezdete >= CsengetesiRendAdatok.Kezdete GROUP BY OrarendiOrak.HetirendId ,OrarendiOrak.HetnapjaId ,OrarendiOrak.OsztalyCsoportNev ,OrarendiOrak.PedagogusNev ,OrarendiOrak.TantargyNev ,OrarendiOrak.TeremNev ,OrarendiOrak.Kezdete ,OrarendiOrak.Vege INSERT INTO #OrarendTEMP SELECT @MinCsengetesiRendOraszam ,OrarendiOrak.HetirendId HetirendId ,OrarendiOrak.HetnapjaId HetnapjaId ,OrarendiOrak.OsztalyCsoportNev OsztalyCsoportNev ,OrarendiOrak.PedagogusNev PedagogusNev ,OrarendiOrak.TantargyNev TantargyNev ,OrarendiOrak.TeremNev TeremNev ,OrarendiOrak.Kezdete Kezdete ,OrarendiOrak.Vege Vege FROM #orarendiorak OrarendiOrak WHERE Kezdete < @MinCsengetesiRendOraKezdet SELECT Orarend.OraSzam ,HetirendId ,HetnapjaId ,OsztalyCsoportNev ,PedagogusNev ,TantargyNev ,TeremNev ,IIF(Orarend.Kezdete != CsengetesiRendAdatok.Kezdete OR Orarend.Vege != CsengetesiRendAdatok.Vege, Orarend.Kezdete + ' - ' + Orarend.Vege, '') KezdesVegeIdopont INTO #Orarend FROM #OrarendTEMP Orarend INNER JOIN #CsengetesiRendAdatok CsengetesiRendAdatok on CsengetesiRendAdatok.Oraszam = Orarend.OraSzam DECLARE @Hetirendek TABLE (Id INT) DECLARE @HetirendCount INT = (SELECT COUNT(DISTINCT oo.C_HETIREND) FROM T_ORARENDIORA_OSSZES oo WHERE oo.TOROLT='F' AND oo.C_TANEVID=@tanevId) IF (@HetirendCount=1) BEGIN INSERT INTO @Hetirendek SELECT DISTINCT oo.c_hetirend FROM T_ORARENDIORA_OSSZES oo WHERE oo.TOROLT='F' AND oo.C_TANEVID = @tanevId END ELSE BEGIN INSERT INTO @Hetirendek SELECT DISTINCT oo.C_HETIREND from T_ORARENDIORA_OSSZES oo WHERE oo.TOROLT='F' AND oo.C_TANEVID=@tanevId AND oo.C_HETIREND <> 1554 END DECLARE @Orakezdetek TABLE (Ora INT) INSERT INTO @orakezdetek SELECT DISTINCT OraSzam from #CsengetesiRendAdatok DECLARE @OsszesOra TABLE (Hetirend INT, Nap INT, Oraszam nvarchar(20)) INSERT INTO @OsszesOra SELECT DISTINCT oo.Id, Nap , OraSzam FROM @Hetirendek oo CROSS JOIN (SELECT Ora FROM @Orakezdetek) OraSzam (OraSzam) CROSS JOIN (VALUES (1408),(1409),(1410),(1411),(1412), (1413)) Nap (Nap) DECLARE @TenylegesOra TABLE (Hetirend INT, Nap INT, OraSzam NVARCHAR(20), Foglalkozas NVARCHAR(MAX)) DECLARE @Orarend TABLE (osztalyId INT, Ora int, Hetirend INT, Nap INT, Foglalkozas NVARCHAR(MAX)) DECLARE kur CURSOR FOR SELECT Id FROM @Hetirendek DECLARE @HetirendId int OPEN kur FETCH NEXT FROM kur INTO @HetirendId WHILE @@FETCH_STATUS = 0 BEGIN INSERT INTO @TenylegesOra SELECT DISTINCT @HetirendId ,veg.HetnapjaId ,veg.Oraszam ,STUFF((SELECT DISTINCT CAST('' + bveg.TantargyNev + '' + CHAR(13) + CHAR(10) + IIF(LEN(KezdesVegeIdopont) > 0, ' (' + KezdesVegeIdopont +')' + CHAR(13) + CHAR(10), '') + bveg.OsztalyCsoportNev + CHAR(13) + CHAR(10) + bveg.TeremNev + CHAR(13) + CHAR(10) AS VARCHAR(max)) FROM #Orarend bveg WHERE bveg.HetnapjaId = veg.HetnapjaId AND bveg.Oraszam = veg.Oraszam AND (bveg.HetirendId = @HetirendId OR bveg.HetirendId = 1554) FOR XML PATH(''), TYPE) .value('.','NVARCHAR(MAX)'),1,0,'') Foglalkozasok FROM #Orarend veg FETCH NEXT FROM kur INTO @HetirendId END CLOSE kur DEALLOCATE kur /*Végleges órarend*/ INSERT INTO @Orarend SELECT @pedagogusId , OsszesOra.Oraszam , OsszesOra.Hetirend , OsszesOra.Nap , TenylegesOra.Foglalkozas FROM @OsszesOra OsszesOra LEFT JOIN @TenylegesOra TenylegesOra ON OsszesOra.Hetirend = TenylegesOra.Hetirend AND OsszesOra.Nap = TenylegesOra.Nap AND OsszesOra.Oraszam = TenylegesOra.Oraszam ORDER BY OsszesOra.Hetirend, OsszesOra.Nap, OsszesOra.Oraszam SELECT @pedagogusId PedagogusId ,pv.Ora Ora ,Hetirend ,(SELECT C_NYOMTATASINEV FROM T_FELHASZNALO_OSSZES WHERE Id = @pedagogusId) PedagogusNev ,[1408] 'Hetfo' ,[1409] 'Kedd' ,[1410] 'Szerda' ,[1411] 'Csutortok' ,[1412] 'Pentek' ,[1413] 'Szombat' , dic.C_NAME HETIREND_DNAME FROM @Orarend PIVOT (MAX(Foglalkozas) FOR Nap in([1408],[1409],[1410],[1411],[1412],[1413]))pv INNER JOIN T_DICTIONARYITEMBASE_OSSZES dic ON dic.id=Hetirend AND dic.C_TANEVID = @tanevId INNER JOIN @Orakezdetek ok ON ok.Ora = pv.Ora ORDER BY Hetirend, Ora END DROP TABLE #CsengetesiRendAdatok DROP TABLE #Orarend DROP TABLE #OrarendiOrak GO