kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20170729164706_KRETA_2450/sp_GetOraSorszamByOsztaly.sql
2024-03-13 00:33:46 +01:00

104 lines
3.5 KiB
Transact-SQL

IF OBJECT_ID('sp_GetOraSorszamByOsztaly') IS NOT NULL BEGIN
DROP PROCEDURE [sp_GetOraSorszamByOsztaly]
END
GO
CREATE PROCEDURE sp_GetOraSorszamByOsztaly
@osztalyCsoportId int,
@datum datetime,
@intezmenyId int,
@tanevId int
AS
BEGIN
DECLARE @tanarSzamit bit,
@osztalybontasEgybe bit,
@osztalybontasCsoport bit
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
t.ID AS TanitasiOraId
,ROW_NUMBER() OVER (PARTITION BY t.C_OSZTALYCSOPORTID, o.C_TANAROKID, t.C_TANTARGYID ORDER BY t.C_ORAKEZDETE, C_BEJEGYZESIDEJE) AS OraEvesSorszam
FROM T_TANITASIORA_OSSZES t
INNER JOIN T_ORAK_TANAROK o ON t.ID = o.C_ORAKID
INNER JOIN fnGetKapcsolodoOsztalycsoportok(@osztalyCsoportId) kocs ON kocs.ID = t.C_OSZTALYCSOPORTID
WHERE t.C_MEGTARTOTT = 'T'
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_ORAKEZDETE <= @datum
END
ELSE BEGIN
SELECT
t.ID AS TanitasiOraId
,ROW_NUMBER() OVER (PARTITION BY t.C_OSZTALYCSOPORTID, t.C_TANTARGYID ORDER BY C_ORAKEZDETE, C_BEJEGYZESIDEJE) AS OraEvesSorszam
FROM T_TANITASIORA_OSSZES t
WHERE t.C_MEGTARTOTT = 'T'
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND t.C_ORAKEZDETE <= @datum
END
END
ELSE BEGIN
IF @tanarSzamit = 1 BEGIN
SELECT
t.ID AS TanitasiOraId
,ROW_NUMBER() OVER (PARTITION BY o.C_TANAROKID, t.C_TANTARGYID ORDER BY C_ORAKEZDETE, C_BEJEGYZESIDEJE) AS OraEvesSorszam
FROM T_TANITASIORA_OSSZES t
INNER JOIN T_ORAK_TANAROK o ON t.ID = o.C_ORAKID
WHERE
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)
UNION
SELECT cs.C_OSZTALYBONTASID
FROM T_CSOPORT cs
WHERE cs.ID = @osztalyCsoportId
UNION
SELECT cs.ID
FROM T_CSOPORT cs
WHERE cs.C_OSZTALYBONTASID = @osztalyCsoportId
UNION
SELECT @osztalyCsoportId
)
AND t.C_ORAKEZDETE <= @datum
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_MEGTARTOTT = 'T'
END
ELSE BEGIN
SELECT
t.ID AS TanitasiOraId
,ROW_NUMBER() OVER (PARTITION BY t.C_TANTARGYID ORDER BY C_ORAKEZDETE, C_BEJEGYZESIDEJE) AS OraEvesSorszam
FROM T_TANITASIORA_OSSZES t
WHERE
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)
UNION
SELECT cs.C_OSZTALYBONTASID
FROM T_CSOPORT cs
WHERE cs.ID = @osztalyCsoportId
UNION
SELECT cs.ID
FROM T_CSOPORT cs
WHERE cs.C_OSZTALYBONTASID = @osztalyCsoportId
UNION
SELECT @osztalyCsoportId
)
AND t.C_ORAKEZDETE <= @datum
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_MEGTARTOTT = 'T'
END
END
END
GO