kreta/Kreta.DataAccess.Migrations/DBScripts/Database/dbo/Functions/fnGetEvesOraszam.sql
2024-03-13 00:33:46 +01:00

118 lines
3.4 KiB
Transact-SQL

-- Az óra éves sorszáma tantárgy, osztálycsoport és tanár alapján
-- TELEK ÁKOS
-- 2017.03.03.
IF OBJECT_ID('dbo.fnGetEvesOraszam') IS NOT NULL BEGIN
DROP FUNCTION dbo.fnGetEvesOraszam
END
GO
CREATE FUNCTION dbo.fnGetEvesOraszam (
@tantargyId int
,@osztalycsoportId int
,@tanarId int
,@datum datetime
,@intezmenyId int
,@tanevId int
)
RETURNS int
AS
BEGIN
DECLARE
@tanarSzamit bit
,@osztalybontasEgybe bit
,@osztalybontasCsoport bit
,@cnt int
SET @tanarSzamit = dbo.fnGetRendszerbeallitasEnumBool(3075, @intezmenyId, @tanevId)
SET @osztalybontasEgybe = dbo.fnGetRendszerbeallitasEnumBool(3078, @intezmenyId, @tanevId)
SET @osztalybontasCsoport = 0
IF EXISTS (SELECT 1 FROM T_CSOPORT WHERE (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
SELECT @cnt = COUNT(1)
FROM T_TANITASIORA_OSSZES t
WHERE t.C_MEGTARTOTT = 'T'
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_TANTARGYID = @tantargyId
AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND t.C_TANARID = @tanarId
AND t.C_ORAKEZDETE <= @datum
AND t.TOROLT ='F'
END
ELSE BEGIN
SELECT @cnt = COUNT(1)
FROM T_TANITASIORA_OSSZES t
WHERE t.C_MEGTARTOTT = 'T'
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_TANTARGYID = @tantargyId
AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND t.C_ORAKEZDETE <= @datum
AND t.TOROLT ='F'
END
END
ELSE BEGIN
IF @tanarSzamit = 1 BEGIN
SELECT @cnt = COUNT(1)
FROM T_TANITASIORA_OSSZES t
WHERE t.C_TANTARGYID = @tantargyId
AND t.C_OSZTALYCSOPORTID IN (
SELECT cs.ID
FROM T_CSOPORT 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 cs
WHERE cs.ID = @osztalyCsoportId
AND cs.TOROLT = 'F'
UNION
SELECT cs.ID
FROM T_CSOPORT cs
WHERE cs.C_OSZTALYBONTASID = @osztalyCsoportId
AND cs.TOROLT = 'F'
UNION
SELECT @osztalyCsoportId
)
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
SELECT @cnt = COUNT(1)
FROM T_TANITASIORA_OSSZES t
WHERE t.C_TANTARGYID = @tantargyId
AND t.C_OSZTALYCSOPORTID IN (
SELECT cs.ID
FROM T_CSOPORT 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 cs
WHERE cs.ID = @osztalyCsoportId
AND cs.TOROLT = 'F'
UNION
SELECT cs.ID
FROM T_CSOPORT cs
WHERE cs.C_OSZTALYBONTASID = @osztalyCsoportId
AND cs.TOROLT = 'F'
UNION
SELECT @osztalyCsoportId
)
AND t.C_ORAKEZDETE <= @datum
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_MEGTARTOTT = 'T'
AND t.TOROLT = 'F'
END
END
RETURN @cnt
END
GO