This commit is contained in:
2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View File

@@ -0,0 +1,184 @@
-- Az óra éves sorszáma tantárgy, osztálycsoport és tanár alapján a megelőző órák listájával
-- TELEK ÁKOS
-- 2017.03.03.
-- Óra összerendelés halmaz implementálás
-- Zalán Máriusz
-- 2019.01.27.
DROP FUNCTION IF EXISTS fnGetEvesOraszamLista
GO
CREATE FUNCTION fnGetEvesOraszamLista (
@tantargyId int
,@osztalycsoportId int
,@tanarId int
,@datum datetime
,@intezmenyId int
,@tanevId int
)
RETURNS @retTable TABLE (
Id int primary key
,EvesSorszam int
)
AS
BEGIN
DECLARE
@tanarSzamit bit
,@osztalybontasEgybe bit
,@osztalybontasCsoport bit
,@osszerendelesId int
,@kezdoErtek int
SET @tanarSzamit = dbo.fnGetRendszerbeallitasEnumBool(3075, @intezmenyId, @tanevId)
SET @osztalybontasEgybe = dbo.fnGetRendszerbeallitasEnumBool(3078, @intezmenyId, @tanevId)
SET @osztalybontasCsoport = 0
SELECT
@osszerendelesId = h.ID
FROM T_ORASORSZAMOZASHALMAZ_OSSZES h
INNER JOIN T_ORASORSZAMOZASHALMAZOSSZEREN_OSSZES oh ON h.ID = oh.C_ORASORSZAMOZASHALMAZID
AND oh.C_TANTARGYID = @TantargyId AND oh.C_OSZTALYCSOPORTID = @osztalycsoportId
AND oh.TOROLT='F'
WHERE h.TOROLT='F'
--Van összerendelés
IF @osszerendelesId IS NOT NULL BEGIN
SELECT
@tanarSzamit = IIF(C_KOZOSORASORSZAMOZASELTEROTAN = 'T',1,0)
,@kezdoErtek = ISNULL(C_KEZDOERTEK-1,0)
FROM T_ORASORSZAMOZASHALMAZ_OSSZES
WHERE ID = @osszerendelesId AND TOROLT='F'
IF @tanarSzamit = 1 BEGIN
INSERT INTO @retTable (Id, EvesSorszam)
SELECT
ID
,EvesSorszam
FROM (
SELECT
t.ID AS Id
,ROW_NUMBER() OVER (ORDER BY t.C_ORAKEZDETE, ocs.C_NEV) + @kezdoErtek AS EvesSorszam
,t.C_OSZTALYCSOPORTID
FROM T_ORASORSZAMOZASHALMAZOSSZEREN_OSSZES oh
INNER JOIN T_TANITASIORA_OSSZES t ON t.C_TANTARGYID = oh.C_TANTARGYID AND t.C_OSZTALYCSOPORTID = oh.C_OSZTALYCSOPORTID
AND t.C_MEGTARTOTT = 'T'
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_TANARID = @tanarId
AND t.C_ORAKEZDETE <= @datum
AND t.TOROLT='F'
INNER JOIN T_TANTARGY_OSSZES tgy ON tgy.ID = t.C_TANTARGYID AND tgy.TOROLT='F'
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = t.C_OSZTALYCSOPORTID AND ocs.TOROLT='F'
WHERE oh.TOROLT='F' AND oh.C_ORASORSZAMOZASHALMAZID = @osszerendelesId) x
WHERE x.C_OSZTALYCSOPORTID = @osztalyCsoportId
END
ELSE BEGIN
INSERT INTO @retTable (Id, EvesSorszam)
SELECT
ID
,EvesSorszam
FROM (
SELECT
t.ID AS Id
,ROW_NUMBER() OVER (ORDER BY t.C_ORAKEZDETE, ocs.C_NEV) + @kezdoErtek AS EvesSorszam
,t.C_OSZTALYCSOPORTID
FROM T_ORASORSZAMOZASHALMAZOSSZEREN_OSSZES oh
INNER JOIN T_TANITASIORA_OSSZES t ON t.C_TANTARGYID = oh.C_TANTARGYID AND t.C_OSZTALYCSOPORTID = oh.C_OSZTALYCSOPORTID
AND t.C_MEGTARTOTT = 'T'
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_ORAKEZDETE <= @datum
AND t.TOROLT='F'
INNER JOIN T_TANTARGY_OSSZES tgy ON tgy.ID = t.C_TANTARGYID AND tgy.TOROLT='F'
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = t.C_OSZTALYCSOPORTID AND ocs.TOROLT='F'
WHERE oh.TOROLT='F' AND oh.C_ORASORSZAMOZASHALMAZID = @osszerendelesId) x
WHERE x.C_OSZTALYCSOPORTID = @osztalyCsoportId
END
END
ELSE --Nincs összerendelés
BEGIN
IF EXISTS (SELECT 1 FROM T_CSOPORT_OSSZES WHERE TOROLT='F' AND ((ID = @osztalyCsoportId AND C_OSZTALYBONTASID IS NOT NULL) OR C_OSZTALYBONTASID = @osztalyCsoportId))
BEGIN
SET @osztalybontasCsoport = 1
END
IF @osztalybontasEgybe = 0 OR @osztalybontasCsoport = 0 BEGIN
IF @tanarSzamit = 1 BEGIN
INSERT INTO @retTable (Id, EvesSorszam)
SELECT
t.ID AS Id
,ROW_NUMBER() OVER (ORDER BY t.C_ORAKEZDETE) AS EvesSorszam
FROM T_TANITASIORA_OSSZES t
WHERE t.C_TANEVID = @tanevId
AND t.C_MEGTARTOTT = 'T'
AND t.C_SORSZAMOZANDO = 'T'
AND t.TOROLT = 'F'
AND t.C_TANTARGYID = @tantargyId
AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND t.C_TANARID = @tanarId
AND t.C_ORAKEZDETE <= @datum
END
ELSE BEGIN
INSERT INTO @retTable (Id, EvesSorszam)
SELECT
t.ID AS Id
,ROW_NUMBER() OVER (ORDER BY t.C_ORAKEZDETE) AS EvesSorszam
FROM T_TANITASIORA_OSSZES t
WHERE t.C_TANEVID = @tanevId
AND t.C_MEGTARTOTT = 'T'
AND t.C_SORSZAMOZANDO = 'T'
AND t.TOROLT = 'F'
AND t.C_TANTARGYID = @tantargyId
AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND t.C_ORAKEZDETE <= @datum
END
END
ELSE BEGIN
DECLARE @kapcsolodoOsztalyCsoportok TABLE (OsztalyCsoportId int)
INSERT INTO @kapcsolodoOsztalyCsoportok (OsztalyCsoportId)
SELECT cs.ID
FROM T_CSOPORT_OSSZES cs
WHERE cs.C_OSZTALYBONTASID = (SELECT scs.C_OSZTALYBONTASID FROM T_CSOPORT scs WHERE scs.ID = @osztalyCsoportId) AND cs.TOROLT='F'
UNION
SELECT cs.C_OSZTALYBONTASID
FROM T_CSOPORT_OSSZES cs
WHERE cs.ID = @osztalyCsoportId AND cs.TOROLT='F'
UNION
SELECT cs.ID
FROM T_CSOPORT_OSSZES cs
WHERE cs.C_OSZTALYBONTASID = @osztalyCsoportId AND cs.TOROLT='F'
UNION
SELECT @osztalyCsoportId
IF @tanarSzamit = 1 BEGIN
INSERT INTO @retTable (Id, EvesSorszam)
SELECT
t.ID AS Id
,ROW_NUMBER() OVER (ORDER BY t.C_ORAKEZDETE) AS EvesSorszam
FROM T_TANITASIORA_OSSZES t
INNER JOIN @kapcsolodoOsztalyCsoportok ocs ON ocs.OsztalyCsoportId = t.C_OSZTALYCSOPORTID
WHERE t.C_TANEVID = @tanevId
AND t.C_TANTARGYID = @tantargyId
AND t.C_TANARID = @tanarId
AND t.C_ORAKEZDETE <= @datum
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_MEGTARTOTT = 'T'
AND t.TOROLT = 'F'
END
ELSE BEGIN
INSERT INTO @retTable (Id, EvesSorszam)
SELECT
t.ID AS Id
,ROW_NUMBER() OVER (ORDER BY t.C_ORAKEZDETE) AS EvesSorszam
FROM T_TANITASIORA_OSSZES t
INNER JOIN @kapcsolodoOsztalyCsoportok ocs ON ocs.OsztalyCsoportId = t.C_OSZTALYCSOPORTID
WHERE t.C_TANEVID = @tanevId
AND t.C_TANTARGYID = @tantargyId
AND t.C_ORAKEZDETE <= @datum
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_MEGTARTOTT = 'T'
AND t.TOROLT = 'F'
END
END
END
RETURN
END
GO