142 lines
No EOL
5.8 KiB
Transact-SQL
142 lines
No EOL
5.8 KiB
Transact-SQL
SET ANSI_NULLS ON
|
|
GO
|
|
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
IF OBJECT_ID('sp_GetOrarendOsztalyonkent') IS NOT NULL BEGIN
|
|
DROP PROCEDURE sp_GetOrarendOsztalyonkent
|
|
END
|
|
GO
|
|
|
|
CREATE PROCEDURE sp_GetOrarendOsztalyonkent
|
|
@intezmenyId INT,
|
|
@tanevId INT,
|
|
@osztalyId INT,
|
|
@aktivTanevId INT
|
|
|
|
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')
|
|
DECLARE @ElsoNap DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_NAPTIPUSA=1394 AND C_TANEVID=@tanevid AND TOROLT='F')
|
|
,@HetEleje DATE
|
|
,@HetVege DATE
|
|
|
|
DECLARE @osztalyNev NVARCHAR(MAX)=(SELECT C_NEV FROM T_OSZTALYCSOPORT_OSSZES WHERE ID=@osztalyId)
|
|
|
|
IF (@tanevId = @AktivtanevId AND GETDATE() <= @UtolsoNap)
|
|
BEGIN
|
|
IF (GETDATE() <= @ElsoNap)
|
|
BEGIN
|
|
SET @HetEleje =(SELECT TOP 1 nh.C_HETKEZDONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE @ElsoNap>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND @ElsoNap<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) AND nh.TOROLT='F' AND nh.C_TANEVID=@tanevId)
|
|
SET @HetVege = (SELECT TOP 1 nh.C_HETUTOLSONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE @ElsoNap>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND @ElsoNap<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) AND nh.TOROLT='F' AND nh.C_TANEVID=@tanevId)
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SET @HetEleje =(SELECT TOP 1 nh.C_HETKEZDONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE CONVERT(DATE, GETDATE())>=CONVERT(DATE, NH.C_HETKEZDONAPJA) AND CONVERT(DATE, GETDATE())<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) and nh.TOROLT='F' and nh.C_TANEVID=@tanevid)
|
|
SET @HetVege = (SELECT TOP 1 nh.C_HETUTOLSONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE CONVERT(DATE, GETDATE())>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND CONVERT(DATE, GETDATE())<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) and nh.TOROLT='F' and nh.C_TANEVID=@tanevid)
|
|
END
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SET @HetEleje =(SELECT TOP 1 nh.C_HETKEZDONAPJA 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)
|
|
SET @HetVege = (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
|
|
|
|
DECLARE @temp TABLE (HetirendId INT, HetnapjaId INT, Oraszam INT, TantargyNev NVARCHAR(MAX), PedagogusNev NVARCHAR(MAX), TeremNev NVARCHAR(MAX), OsztalyCsoportNev NVARCHAR(MAX))
|
|
INSERT INTO @temp
|
|
SELECT
|
|
OrarendiOra.C_HETIREND HetirendId
|
|
,OrarendiOra.C_HETNAPJA HetnapjaId
|
|
,OrarendiOra.C_ORASZAM Oraszam
|
|
,ISNULL(Tantargy.C_NEVNYOMTATVANYBAN, Tantargy.C_NEV) TantargyNev
|
|
,Pedagogus.C_NYOMTATASINEV PedagogusNev
|
|
,Terem.C_NEV TeremNev
|
|
,ocs.C_NEV OsztalyCsoportNev
|
|
FROM T_ORARENDIORA_OSSZES OrarendiOra
|
|
INNER JOIN fnGetKapcsolodoOsztalycsoportok(@osztalyId) Kapcsolodo ON Kapcsolodo.Id = OrarendiOra.C_OSZTALYCSOPORTID
|
|
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
|
|
WHERE
|
|
OrarendiOra.Torolt = 'F'
|
|
AND OrarendiOra.C_ORAERVENYESSEGKEZDETE <= @Hetvege
|
|
AND OrarendiOra.C_ORAERVENYESSEGVEGE >= @Heteleje
|
|
|
|
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 @OsszesOra TABLE (Hetirend INT, Nap INT, Oraszam INT)
|
|
INSERT INTO @OsszesOra
|
|
SELECT DISTINCT oo.Id, Nap.Nap , OraSzam.OraSzam FROM @Hetirendek oo
|
|
CROSS JOIN (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10)) OraSzam (OraSzam)
|
|
CROSS JOIN (VALUES (1408),(1409),(1410),(1411),(1412), (1413)) Nap (Nap)
|
|
|
|
DECLARE @TenylegesOra TABLE (Hetirend INT, Nap INT, OraSzam INT, 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('<b>' + bveg.TantargyNev + '</b>' + ' (' + IIF(bveg.OsztalyCsoportNev <> @osztalyNev, bveg.OsztalyCsoportNev + ', ', '') + bveg.PedagogusNev + ', ' + bveg.TeremNev + ')' + CHAR(13) + CHAR(10) AS VARCHAR(max))
|
|
FROM @temp 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 @temp veg
|
|
FETCH NEXT FROM kur INTO @HetirendId
|
|
END
|
|
CLOSE kur
|
|
DEALLOCATE kur
|
|
|
|
/*Végleges órarend*/
|
|
INSERT INTO @Orarend
|
|
SELECT @osztalyId
|
|
, 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
|
|
pv.*
|
|
, dic.C_NAME HETIREND_DNAME
|
|
,@osztalyNev OsztalyNev
|
|
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
|
|
ORDER BY Hetirend, Ora
|
|
|
|
END
|
|
|
|
GO |