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

70 lines
2.9 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS uspGetZaradekok
GO
CREATE PROCEDURE uspGetZaradekok
@tanevId int
,@intezmenyId int
,@tanuloCsoportId int
,@nemzetiDokumentumNyelvek nvarchar(max) = NULL
,@tanuloId int = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @feladatKategoriaId int = (SELECT ocs.C_FELADATKATEGORIAID FROM T_OSZTALYCSOPORT_OSSZES ocs INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = ocs.ID AND tcs.ID = @tanuloCsoportId)
CREATE TABLE #TempTorolhetoZaradekok (ID INT)
INSERT INTO #TempTorolhetoZaradekok
SELECT
z.ID
FROM T_ZARADEK_OSSZES z
INNER JOIN T_ZARADEK_OSSZES kiAtZaradek ON kiAtZaradek.C_TANULOCSOPORTID = z.C_TANULOCSOPORTID AND kiAtZaradek.TOROLT = 'F'
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.ID = z.C_TANULOCSOPORTID
WHERE
kiAtZaradek.C_ISKIVAGYATSOROLASIZARADEK = 'T'
AND z.C_ISKIVAGYATSOROLASIZARADEK = 'T'
AND kiAtZaradek.TOROLT = 'F'
AND kiAtZaradek.ID <> z.ID
AND tcs.C_KILEPESDATUM IS NOT NULL
AND z.C_TANEVID = @tanevId
AND z.C_INTEZMENYID = @intezmenyId
AND (tcs.C_TANULOID = @tanuloId or tcs.ID = @tanuloCsoportId)
GROUP BY z.ID
SELECT
tcs.ID AS TanuloId
,tcs.ID AS TanuloCsoportId
,z.ID AS ID
,z.C_KELTEZESDATUMA AS KeltezesDatuma
,z.C_KELTEZESHELYE AS KeltezesHelye
,z.C_ROGZITESDATUMA AS RogzitesDatuma
,z.C_ROGZITOID AS RogzitoId
,z.C_SZOVEG AS Szoveg
,ocs.C_NEV AS OsztalyNev
,IIF(tcs.ID = @tanuloCsoportId, 'T', 'F') AS IsKapcsolodo
,z.C_SZOVEG + ISNULL(STUFF((
SELECT ' <br /> '+ISNULL(zny.C_SZOVEG,'')
FROM T_ZARADEKNYELV_OSSZES zny
INNER JOIN string_split(@nemzetiDokumentumNyelvek, ',') nyelvek ON nyelvek.value = zny.C_NYELVID
WHERE zny.C_ZARADEKID = z.ID AND zny.TOROLT = 'F'
FOR XML PATH('')),1,1,''),'') AS IdegenNyelvSzovegek
,z.C_ISKIVAGYATSOROLASIZARADEK AS IsKiVagyAtsorolasiZaradek
-- NOTE: akkor törölhető, ha nincs kisorolva az adott osztály/csoport-ból, vagy szerepel egy másik ki/átsorolási záradék
,IIF(torolhetoZ.ID IS NOT NULL OR tcs.C_KILEPESDATUM IS NULL,'T' ,'F') AS IsTorolheto
,IIF(oszt.ID IS NULL, 'F', 'T') AS IsOsztaly
FROM T_ZARADEK_OSSZES z
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.ID = z.C_TANULOCSOPORTID
and tcs.C_TANEVID = z.C_TANEVID
and tcs.TOROLT = 'F'
-- NOTE: alábbi feltétel fontos ebben a sorrendben, ha van tanuloid csak arra kell szűrni, ha nincs, akkor a tanulocsoportId-ra
and (tcs.C_TANULOID = @tanuloId or tcs.ID = @tanuloCsoportId)
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID
LEFT JOIN T_OSZTALY_OSSZES oszt ON oszt.ID = ocs.ID AND oszt.Torolt = 'F'
LEFT JOIN #TempTorolhetoZaradekok torolhetoZ ON torolhetoZ.ID = z.ID
WHERE z.TOROLT = 'F'
and z.C_TANEVID = @tanevId
and z.C_INTEZMENYID = @intezmenyId
and ocs.C_FELADATKATEGORIAID = @feladatKategoriaId
DROP TABLE #TempTorolhetoZaradekok
END
GO