kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20181003151514_KRETA_7135_2/sp_GetElozoOraAdatai.sql
2024-03-13 00:33:46 +01:00

124 lines
No EOL
5 KiB
Transact-SQL

-- Az elõzõ óra adati tantárgy, osztálycsoport és tanár alapján
-- SZEKERES ANDRÁS (based on Telek Ákos fn_GetOraEvesSorszamLista)
-- 2017.05.08.
--Modifed by: Zalán Máriusz
--Date: 2018 10 03
IF OBJECT_ID('dbo.sp_GetElozoOraAdatai') IS NOT NULL BEGIN
DROP PROCEDURE dbo.sp_GetElozoOraAdatai
END
GO
CREATE PROCEDURE dbo.sp_GetElozoOraAdatai
@tantargyId int
,@osztalycsoportId int
,@tanarId int
,@oraKezdeteDatum 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 TOP 1
tanora.ID AS Id
,tanora.C_TEMA AS Tema
,tanora.C_DATUM AS Datum
,felhasznalo.C_NYOMTATASINEV AS HelyettesNev
,IIF(tanora.C_SORSZAMOZANDO = 'T', ROW_NUMBER() OVER (PARTITION BY tanora.C_SORSZAMOZANDO ORDER BY tanora.C_ORAKEZDETE), NULL) AS EvesSorszam
FROM T_TANITASIORA_OSSZES tanora
LEFT JOIN T_FELHASZNALO felhasznalo ON felhasznalo.ID = tanora.C_HELYETTESITOTANARID
WHERE tanora.C_TANEVID = @tanevId
AND tanora.C_INTEZMENYID = @intezmenyId
AND tanora.C_MEGTARTOTT = 'T'
AND tanora.TOROLT = 'F'
AND tanora.C_TANTARGYID = @tantargyId
AND tanora.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND tanora.C_TANARID = @tanarId
AND tanora.C_ORAKEZDETE <= @oraKezdeteDatum
ORDER BY tanora.C_ORAKEZDETE DESC
END
ELSE BEGIN
SELECT TOP 1
tanora.ID AS Id
,tanora.C_TEMA AS Tema
,tanora.C_DATUM AS Datum
,felhasznalo.C_NYOMTATASINEV AS HelyettesNev
,IIF(tanora.C_SORSZAMOZANDO = 'T', ROW_NUMBER() OVER (PARTITION BY tanora.C_SORSZAMOZANDO ORDER BY tanora.C_ORAKEZDETE), NULL) AS EvesSorszam
FROM T_TANITASIORA_OSSZES tanora
LEFT JOIN T_FELHASZNALO felhasznalo ON felhasznalo.ID = tanora.C_HELYETTESITOTANARID
WHERE tanora.C_TANEVID = @tanevId
AND tanora.C_INTEZMENYID = @intezmenyId
AND tanora.C_MEGTARTOTT = 'T'
AND tanora.TOROLT = 'F'
AND tanora.C_TANTARGYID = @tantargyId
AND tanora.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND tanora.C_ORAKEZDETE <= @oraKezdeteDatum
ORDER BY tanora.C_ORAKEZDETE DESC
END
END
ELSE BEGIN
IF @tanarSzamit = 1 BEGIN
SELECT TOP 1
tanora.ID AS Id
,tanora.C_TEMA AS Tema
,tanora.C_DATUM AS Datum
,felhasznalo.C_NYOMTATASINEV AS HelyettesNev
,IIF(tanora.C_SORSZAMOZANDO = 'T', ROW_NUMBER() OVER (PARTITION BY tanora.C_SORSZAMOZANDO ORDER BY tanora.C_ORAKEZDETE), NULL) AS EvesSorszam
FROM T_TANITASIORA_OSSZES tanora
LEFT JOIN T_FELHASZNALO felhasznalo ON felhasznalo.ID = tanora.C_HELYETTESITOTANARID
WHERE tanora.C_TANEVID = @tanevId
AND tanora.C_INTEZMENYID = @intezmenyId
AND tanora.C_TANTARGYID = @tantargyId
AND tanora.C_OSZTALYCSOPORTID IN (
SELECT cs.ID FROM T_CSOPORT cs
WHERE NOT(cs.ID <> @osztalyCSoportID AND cs.C_OSZTALYBONTASID<>@osztalyCSoportID AND NOT EXISTS(SELECT 1 FROM T_CSOPORT cs2 WHERE cs2.C_OSZTALYBONTASID=cs.C_OSZTALYBONTASID AND cs2.ID=@osztalyCSoportID))
UNION
SELECT C_OSZTALYBONTASID FROM T_CSOPORT WHERE ID=@osztalyCSoportID
)
AND tanora.C_TANARID = @tanarId
AND tanora.C_ORAKEZDETE <= @oraKezdeteDatum
AND tanora.TOROLT = 'F'
AND tanora.C_MEGTARTOTT = 'T'
ORDER BY tanora.C_ORAKEZDETE DESC
END
ELSE BEGIN
SELECT TOP 1
tanora.ID AS Id
,tanora.C_TEMA AS Tema
,tanora.C_DATUM AS Datum
,felhasznalo.C_NYOMTATASINEV AS HelyettesNev
,IIF(tanora.C_SORSZAMOZANDO = 'T', ROW_NUMBER() OVER (PARTITION BY tanora.C_SORSZAMOZANDO ORDER BY tanora.C_ORAKEZDETE), NULL) AS EvesSorszam
FROM T_TANITASIORA_OSSZES tanora
LEFT JOIN T_FELHASZNALO felhasznalo ON felhasznalo.ID = tanora.C_HELYETTESITOTANARID
WHERE tanora.C_TANEVID = @tanevId
AND tanora.C_INTEZMENYID = @intezmenyId
AND tanora.C_TANTARGYID = @tantargyId
AND tanora.C_OSZTALYCSOPORTID IN (
SELECT cs.ID FROM T_CSOPORT cs
WHERE NOT(cs.ID <> @osztalyCSoportID AND cs.C_OSZTALYBONTASID<>@osztalyCSoportID AND NOT EXISTS(SELECT 1 FROM T_CSOPORT cs2 WHERE cs2.C_OSZTALYBONTASID=cs.C_OSZTALYBONTASID AND cs2.ID=@osztalyCSoportID))
UNION
SELECT C_OSZTALYBONTASID FROM T_CSOPORT WHERE ID=@osztalyCSoportID
)
AND tanora.C_ORAKEZDETE <= @oraKezdeteDatum
AND tanora.TOROLT = 'F'
AND tanora.C_MEGTARTOTT = 'T'
ORDER BY tanora.C_ORAKEZDETE DESC
END
END
END
GO