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

143 lines
3.5 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS uspGetEvesOraszamForTantargyAndOsztaly
GO
CREATE PROCEDURE uspGetEvesOraszamForTantargyAndOsztaly
@pTanevId int
,@pIntezmenyId int
,@pOsztalyCsoportId int
,@pTantargyId int
,@pBeallitasTanarSzamit int
,@pBeallitasOsztalybontasEgybe int
AS BEGIN
SET NOCOUNT ON;
DECLARE
@pTanarSzamit bit
,@pOsztalybontasEgybe bit
,@pOsztalybontasCsoport bit
SET @pTanarSzamit = dbo.fnGetRendszerbeallitasEnumBool(@pBeallitasTanarSzamit, @pIntezmenyId, @pTanevId)
SET @pOsztalybontasEgybe = dbo.fnGetRendszerbeallitasEnumBool(@pBeallitasOsztalybontasEgybe, @pIntezmenyId, @pTanevId)
IF EXISTS (SELECT 1
FROM T_CSOPORT_OSSZES cs
WHERE cs.TOROLT = 'F'
AND cs.C_ALTANEVID = @pTanevId
AND ((cs.ID = @pOsztalyCsoportId AND cs.C_OSZTALYBONTASID IS NOT NULL) OR cs.C_OSZTALYBONTASID = @pOsztalyCsoportId))
BEGIN
SET @pOsztalybontasCsoport = 1
END
IF @pOsztalybontasEgybe = 0 OR @pOsztalybontasCsoport = 0
BEGIN
IF @pTanarSzamit = 1
BEGIN
SELECT
COUNT(t.ID) AS EvesOraszam
FROM T_TANITASIORA_OSSZES t
WHERE t.C_MEGTARTOTT = 'T'
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_TANTARGYID = @pTantargyId
AND t.C_OSZTALYCSOPORTID = @pOsztalyCsoportId
AND t.C_TANEVID = @pTanevId
AND t.TOROLT = 'F'
GROUP BY t.C_TANARID
END
ELSE
BEGIN
SELECT
COUNT(t.ID) AS EvesOraszam
FROM T_TANITASIORA_OSSZES t
WHERE t.C_MEGTARTOTT = 'T'
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_TANTARGYID = @pTantargyId
AND t.C_OSZTALYCSOPORTID = @pOsztalyCsoportId
AND t.C_TANEVID = @pTanevId
AND t.TOROLT = 'F'
END
END
ELSE
BEGIN
CREATE TABLE #KapcsolodoOsztalyCsoportok (
ID int
,PRIMARY KEY (ID)
)
INSERT INTO #KapcsolodoOsztalyCsoportok (
ID
)
(
SELECT cs.ID AS ID
FROM T_CSOPORT_OSSZES cs
WHERE cs.TOROLT = 'F'
AND cs.C_ALTANEVID = @pTanevId
AND cs.C_OSZTALYBONTASID =
(
SELECT scs.C_OSZTALYBONTASID
FROM T_CSOPORT_OSSZES scs
WHERE scs.TOROLT = 'F'
AND scs.C_ALTANEVID = @pTanevId
AND scs.ID = @pOsztalyCsoportId
AND scs.C_OSZTALYBONTASID IS NOT NULL
)
UNION
SELECT cs.C_OSZTALYBONTASID AS ID
FROM T_CSOPORT_OSSZES cs
WHERE cs.TOROLT = 'F'
AND cs.C_ALTANEVID = @pTanevId
AND cs.ID = @pOsztalyCsoportId
AND cs.C_OSZTALYBONTASID IS NOT NULL
UNION
SELECT cs.ID AS ID
FROM T_CSOPORT_OSSZES cs
WHERE cs.TOROLT = 'F'
AND cs.C_ALTANEVID = @pTanevId
AND cs.C_OSZTALYBONTASID = @pOsztalyCsoportId
UNION
SELECT @pOsztalyCsoportId AS ID
)
IF @pTanarSzamit = 1
BEGIN
SELECT
COUNT(t.ID) AS EvesOraszam
FROM T_TANITASIORA_OSSZES t
INNER JOIN #KapcsolodoOsztalyCsoportok k ON k.ID = t.C_OSZTALYCSOPORTID
WHERE t.C_MEGTARTOTT = 'T'
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_TANTARGYID = @pTantargyId
AND t.C_TANEVID = @pTanevId
AND t.TOROLT = 'F'
GROUP BY t.C_TANARID
END
ELSE
BEGIN
SELECT
COUNT(t.ID) AS EvesOraszam
FROM T_TANITASIORA_OSSZES t
INNER JOIN #KapcsolodoOsztalyCsoportok k ON k.ID = t.C_OSZTALYCSOPORTID
WHERE t.C_MEGTARTOTT = 'T'
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_TANTARGYID = @pTantargyId
AND t.C_TANEVID = @pTanevId
AND t.TOROLT = 'F'
END
END
END
GO