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

83 lines
No EOL
4.6 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS dbo.uspGetFelhasznaloOsztalyaiByFoglalkozasAndOsztfo
GO
CREATE PROCEDURE dbo.uspGetFelhasznaloOsztalyaiByFoglalkozasAndOsztfo
@pTanevId INT
,@pIntezmenyId INT
,@pFelhasznaloId INT
,@pOsztalyGroupName VARCHAR(32)
,@pCsoportGroupName VARCHAR(32)
,@pIsKellCsoportVezeto BIT = 0
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Osztalyok TABLE (NumberOrder int,NumberAndTextOrder int, ID int, Nev VARCHAR(255),Tipus VARCHAR(255),Evfolyam VARCHAR(255))
-- insert TFF-re filterelve
INSERT INTO @Osztalyok(NumberOrder,NumberAndTextOrder,ID,Nev,Tipus,Evfolyam)
SELECT DISTINCT
CASE WHEN osztalyCsoport.C_NEV NOT LIKE '%[^0-9]%' THEN CAST(LEFT(osztalyCsoport.C_NEV,9) AS INT) ELSE 2147483647 END NumberOrder,
CASE WHEN LEFT(osztalyCsoport.C_NEV, 1) BETWEEN '0' AND '9' AND osztalyCsoport.C_NEV LIKE '%[^0-9]%' THEN CAST(LEFT(SUBSTRING(osztalyCsoport.C_NEV, 1, PATINDEX('%[^0-9]%', osztalyCsoport.C_NEV) - 1),9) AS INT) ELSE 2147483647 END NumberAndTextOrder,
osztalyCsoport.ID ID,
osztalyCsoport.C_NEV Nev,
CASE WHEN o.ID IS NOT NULL THEN @pOsztalyGroupName ELSE @pCsoportGroupName END Tipus,
osztalyCsoport.C_EVFOLYAMTIPUSA Evfolyam
FROM T_FOGLALKOZAS_OSSZES foglalkozas
INNER JOIN T_OSZTALYCSOPORT_OSSZES osztalyCsoport ON osztalyCsoport.ID = foglalkozas.C_OSZTALYCSOPORTID
AND osztalyCsoport.TOROLT = 'F'
LEFT JOIN T_TANTARGY_OSSZES tantargy ON tantargy.ID = foglalkozas.C_TANTARGYID
AND tantargy.TOROLT = 'F'
LEFT JOIN T_FELHASZNALO_OSSZES felhasznalo ON felhasznalo.ID = foglalkozas.C_TANARID
AND felhasznalo.TOROLT = 'F'
LEFT JOIN (SELECT ID, 'T' AS Osztaly FROM T_OSZTALY_OSSZES WHERE TOROLT = 'F') AS o
ON o.ID = osztalyCsoport.ID
LEFT JOIN (SELECT ID, C_TIPUSA FROM T_CSOPORT_OSSZES WHERE TOROLT = 'F') AS cs
ON cs.ID = osztalyCsoport.ID
WHERE foglalkozas.TOROLT = 'F'
AND foglalkozas.C_TANARID = @pFelhasznaloId
AND foglalkozas.C_TANEVID = @pTanevId
AND foglalkozas.C_INTEZMENYID = @pIntezmenyId
-- insert Osztfo-re filterelve amelyeket meg nem tartalmazza a lista
INSERT INTO @Osztalyok(NumberOrder,NumberAndTextOrder,ID,Nev,Tipus,Evfolyam)
SELECT DISTINCT
CASE WHEN OsztalyCsoport.C_NEV NOT LIKE '%[^0-9]%' THEN CAST(LEFT(OsztalyCsoport.C_NEV,9) AS INT) ELSE 2147483647 END AS NumberOrder,
CASE WHEN LEFT(OsztalyCsoport.C_NEV, 1) BETWEEN '0' AND '9' AND OsztalyCsoport.C_NEV LIKE '%[^0-9]%' THEN CAST(LEFT(SUBSTRING(OsztalyCsoport.C_NEV, 1, PATINDEX('%[^0-9]%', OsztalyCsoport.C_NEV) - 1),9) AS INT) ELSE 2147483647 END AS NumberAndTextOrder,
OsztalyCsoport.ID AS ID,
OsztalyCsoport.C_NEV AS Nev,
@pOsztalyGroupName AS Tipus,
OsztalyCsoport.C_EVFOLYAMTIPUSA AS Evfolyam
FROM T_OSZTALYCSOPORT_OSSZES OsztalyCsoport
INNER JOIN T_OSZTALY_OSSZES osztaly ON OsztalyCsoport.ID = osztaly.ID
AND (osztaly.C_OFOHELYETTESID = @pFelhasznaloId OR osztaly.C_OSZTALYFONOKID = @pFelhasznaloId)
AND osztaly.TOROLT = 'F'
LEFT JOIN @Osztalyok TTFosztalyok on TTFosztalyok.ID = OsztalyCsoport.ID
WHERE OsztalyCsoport.TOROLT = 'F'
AND TTFosztalyok.ID IS NULL
AND OsztalyCsoport.C_TANEVID = @pTanevId
AND OsztalyCsoport.C_INTEZMENYID = @pIntezmenyId
-- insert CsopVez-re filterelve amelyeket meg nem tartalmazza a lista
IF @pIsKellCsoportVezeto = 1 BEGIN
INSERT INTO @Osztalyok(NumberOrder,NumberAndTextOrder,ID,Nev,Tipus,Evfolyam)
SELECT DISTINCT
CASE WHEN OsztalyCsoport.C_NEV NOT LIKE '%[^0-9]%' THEN CAST(LEFT(OsztalyCsoport.C_NEV,9) AS INT) ELSE 2147483647 END AS NumberOrder,
CASE WHEN LEFT(OsztalyCsoport.C_NEV, 1) BETWEEN '0' AND '9' AND OsztalyCsoport.C_NEV LIKE '%[^0-9]%' THEN CAST(LEFT(SUBSTRING(OsztalyCsoport.C_NEV, 1, PATINDEX('%[^0-9]%', OsztalyCsoport.C_NEV) - 1),9) AS INT) ELSE 2147483647 END AS NumberAndTextOrder,
OsztalyCsoport.ID AS ID,
OsztalyCsoport.C_NEV AS Nev,
@pCsoportGroupName AS Tipus,
OsztalyCsoport.C_EVFOLYAMTIPUSA AS Evfolyam
FROM T_OSZTALYCSOPORT_OSSZES OsztalyCsoport
INNER JOIN T_CSOPORT_OSSZES csoport ON OsztalyCsoport.ID = csoport.ID
AND csoport.C_CSOPORTVEZETOID = @pFelhasznaloId
AND csoport.TOROLT = 'F'
LEFT JOIN @Osztalyok OfoOsztalyok on OfoOsztalyok.ID = OsztalyCsoport.ID
WHERE OsztalyCsoport.TOROLT = 'F'
AND OfoOsztalyok.ID IS NULL
AND OsztalyCsoport.C_TANEVID = @pTanevId
AND OsztalyCsoport.C_INTEZMENYID = @pIntezmenyId
END
SELECT DISTINCT
*
FROM @Osztalyok
ORDER BY Tipus DESC, NumberOrder ASC, NumberAndTextOrder ASC, Nev ASC
END
GO