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

182 lines
6.8 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS dbo.sp_GetMulasztasokNaploNezetData
GO
CREATE PROCEDURE dbo.sp_GetMulasztasokNaploNezetData
@pTanevId int
,@pIntezmenyId int
,@pOsztalyCsoportId int
,@pDatum date
,@pCsoportTipusTanoraiCeluId int
,@pIsCsoportVez int = 0
,@pSzervezetTipusId INT = NULL
AS
BEGIN
SET NOCOUNT ON;
CREATE TABLE #TempTable(
TanitasiOraId INT NOT NULL,
OsztalyCsoportId INT NOT NULL,
OsztalyCsoportNev NVARCHAR(255) NOT NULL,
OsztalyNev NVARCHAR(255) NOT NULL,
IsOsztalyOraja BIT NOT NULL,
IsTanoraiCelu BIT NOT NULL,
IsTanoraiCelunakJelolt BIT NOT NULL,
TantargyId INT NOT NULL,
TantargyNev NVARCHAR(255) NOT NULL,
TanarId INT NOT NULL,
TanarNev NVARCHAR(255) NOT NULL,
OraSorszam INT NULL,
OraKezdete DATETIME NULL
);
DECLARE @sql nvarchar(max) = ''
SET @sql += N'
SELECT
tn.ID AS TanitasiOraId
,ocs.ID AS OsztalyCsoportId
,ocs.C_NEV AS OsztalyCsoportNev
,o.C_NEV AS OsztalyNev
,IIF(ocs.ID = @pOsztalyCsoportId, 1, 0) AS IsOsztalyOraja
,IIF(cst.ID = @pCsoportTipusTanoraiCeluId, 1, 0) AS IsTanoraiCelu
,IIF(cst.C_ISTANORAICELU = ''T'', 1, 0) AS IsTanoraiCelunakJelolt
,tt.ID AS TantargyId
,tt.C_NEV AS TantargyNev
,fa.ID AS TanarId
,fa.C_NYOMTATASINEV AS TanarNev
,IIF(tn.C_CSENGETESIRENDORAID IS NOT NULL, tn.C_ORASZAM, NULL) AS OraSorszam
,IIF(tn.C_CSENGETESIRENDORAID IS NULL, tn.C_ORAKEZDETE, NULL) AS OraKezdete
FROM T_TANITASIORA_OSSZES tn
' + IIF(@pIsCsoportVez = 0, N' INNER JOIN dbo.fnGetKapcsolodoOsztalycsoportokByDate(@pOsztalyCsoportId, @pDatum, @pDatum) kocs ON kocs.ID = tn.C_OSZTALYCSOPORTID ', '')
SET @sql += N'
INNER JOIN T_TANTARGY_OSSZES tt ON tt.ID = tn.C_TANTARGYID AND tt.TOROLT = ''F'' AND tt.C_TANEVID = @pTanevId AND tt.C_INTEZMENYID = @pIntezmenyId
INNER JOIN T_FELHASZNALO_OSSZES fa ON fa.ID = tn.C_ORATULAJDONOSID AND fa.TOROLT = ''F'' AND fa.C_TANEVID = @pTanevId AND fa.C_INTEZMENYID = @pIntezmenyId
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tn.C_OSZTALYCSOPORTID AND ocs.TOROLT = ''F'' AND ocs.C_TANEVID = @pTanevId AND ocs.C_INTEZMENYID = @pIntezmenyId
LEFT JOIN T_CSOPORT_OSSZES cs ON cs.ID = tn.C_OSZTALYCSOPORTID AND cs.TOROLT = ''F'' AND cs.C_ALTANEVID = @pTanevId AND cs.C_ALINTEZMENYID = @pIntezmenyId
LEFT JOIN T_CSOPORTTIPUS_OSSZES cst ON cst.ID = cs.C_TIPUSA AND cst.TOROLT = ''F'' AND cst.C_ALTANEVID = @pTanevId AND cst.C_ALINTEZMENYID = @pIntezmenyId
INNER JOIN T_OSZTALYCSOPORT_OSSZES o ON o.ID = @pOsztalyCsoportId AND o.TOROLT = ''F'' AND ocs.C_TANEVID = @pTanevId AND ocs.C_INTEZMENYID = @pIntezmenyId
INNER JOIN (SELECT ID FROM fnGetKapcsolodoOsztalycsoportokByDate(@pOsztalyCsoportId, @pDatum, @pDatum)) f on f.ID = tn.C_OSZTALYCSOPORTID
WHERE tn.C_DATUM = @pDatum
AND tn.C_MEGTARTOTT = ''T''
AND tn.TOROLT = ''F''
AND tn.C_TANEVID = @pTanevId
AND tn.C_INTEZMENYID = @pIntezmenyId
' + IIF(@pIsCsoportVez = 1, N' AND tn.C_OSZTALYCSOPORTID = @pOsztalyCsoportId ','')
INSERT INTO #TempTable
EXEC sp_executesql @sql, N'
@pTanevId INT
,@pIntezmenyId INT
,@pOsztalyCsoportId INT
,@pDatum DATE
,@pCsoportTipusTanoraiCeluId INT
,@pIsCsoportVez INT'
,@pTanevId = @pTanevId
,@pIntezmenyId = @pIntezmenyId
,@pOsztalyCsoportId = @pOsztalyCsoportId
,@pDatum = @pDatum
,@pCsoportTipusTanoraiCeluId = @pCsoportTipusTanoraiCeluId
,@pIsCsoportVez = @pIsCsoportVez
SET @sql = N''
SET @sql += N'
SELECT
tcs.C_TANULOID AS TanuloId
,ft.C_NYOMTATASINEV AS TanuloNev
,ft.C_ANYJANEVE AS AnyjaNeve
,ft.C_SZULETESIDATUM AS SzuletesiIdo
,tbl.OsztalyCsoportId
,tbl.OsztalyCsoportNev
,tbl.OsztalyNev
,tbl.IsOsztalyOraja
,tbl.IsTanoraiCelu
,tbl.IsTanoraiCelunakJelolt
,tbl.TantargyId
,tbl.TantargyNev
,tbl.TanarId
,tbl.TanarNev
,tbl.OraSorszam
,tbl.OraKezdete
,tbl.TanitasiOraId
,tm.ID AS MulasztasId
,tm.C_TIPUS AS MulasztasTipus
,tm.C_IGAZOLT AS IsIgazolt
,tm.C_IGAZOLASTIPUSA AS IgazolasTipus
,tm.C_MEGJEGYZES AS Megjegyzes
,tm.C_KESESPERCBEN AS KesesPercben
FROM (
SELECT
C_TANULOID
,C_OSZTALYCSOPORTID
FROM T_TANULOCSOPORT_OSSZES tcs ' +
IIF(@pSzervezetTipusId IS NULL, 'INNER JOIN T_TANULOTANUGYIADATOK_OSSZES tta ON tta.C_TANULOCSOPORTID = tcs.ID
AND tta.TOROLT = ''F''
AND tta.C_TANEVID = @pTanevId
AND tta.C_INTEZMENYID = @pIntezmenyId
AND tta.C_JOGVISZONYATSZUNETELTETO = ''F''','')+'
WHERE C_OSZTALYCSOPORTID = @pOsztalyCsoportId
AND C_BELEPESDATUM <= @pDatum
AND (C_KILEPESDATUM > @pDatum OR C_KILEPESDATUM IS NULL)
AND tcs.TOROLT = ''F''
AND tcs.C_TANEVID = @pTanevId
AND tcs.C_INTEZMENYID = @pIntezmenyId
AND C_TANULOID IN (
SELECT
C_TANULOID
FROM T_TANULOCSOPORT_OSSZES tcs2
WHERE tcs2.C_OSZTALYCSOPORTID IN (SELECT OsztalyCsoportId FROM #TempTable)
AND tcs2.C_TANEVID = @pTanevId
AND tcs2.C_INTEZMENYID = @pIntezmenyId
AND tcs2.TOROLT = ''F''
AND tcs2.C_BELEPESDATUM <= @pDatum
AND (tcs2.C_KILEPESDATUM > @pDatum OR tcs2.C_KILEPESDATUM IS NULL)
)
) tcs
CROSS JOIN #TempTable tbl
INNER JOIN T_FELHASZNALO_OSSZES ft ON tcs.C_TANULOID = ft.ID
AND ft.TOROLT = ''F''
AND ft.C_TANEVID = @pTanevId
AND ft.C_INTEZMENYID = @pIntezmenyId
LEFT JOIN T_TANULOMULASZTAS_OSSZES tm ON tcs.C_TANULOID = tm.C_ORATANULOIID
AND tm.C_TANITASIORAKID = tbl.TanitasiOraId
AND tm.TOROLT = ''F''
AND tm.C_TANEVID = @pTanevId
AND tm.C_INTEZMENYID = @pIntezmenyId
LEFT JOIN T_TANULOMENTESSEG_OSSZES mentesseg ON mentesseg.C_TANULOID = tcs.C_TANULOID
AND mentesseg.C_TANTARGYID = tbl.TantargyId
AND mentesseg.C_ORAMENTESITES = ''T''
AND mentesseg.TOROLT = ''F''
AND mentesseg.C_TANEVID = @pTanevId
AND mentesseg.C_INTEZMENYID = @pIntezmenyId
WHERE
tcs.C_TANULOID IN (
SELECT
C_TANULOID
FROM T_TANULOCSOPORT_OSSZES tcs2
WHERE tbl.OsztalyCsoportId = tcs2.C_OSZTALYCSOPORTID
AND tcs2.C_TANEVID = @pTanevId
AND tcs2.C_INTEZMENYID = @pIntezmenyId
AND tcs2.TOROLT = ''F''
AND tcs2.C_BELEPESDATUM <= @pDatum
AND (tcs2.C_KILEPESDATUM > @pDatum OR tcs2.C_KILEPESDATUM IS NULL)
)
AND (tm.C_TIPUS <> 1817 OR tm.C_TIPUS IS NULL)
AND (mentesseg.ID IS NULL OR (mentesseg.C_KEZDETE > @pDatum OR mentesseg.C_VEGE < @pDatum))
ORDER BY ft.C_NYOMTATASINEV '
EXEC sp_executesql @sql, N'
@pTanevId INT
,@pIntezmenyId INT
,@pOsztalyCsoportId INT
,@pDatum DATE
,@pCsoportTipusTanoraiCeluId INT
,@pIsCsoportVez INT'
,@pTanevId = @pTanevId
,@pIntezmenyId = @pIntezmenyId
,@pOsztalyCsoportId = @pOsztalyCsoportId
,@pDatum = @pDatum
,@pCsoportTipusTanoraiCeluId = @pCsoportTipusTanoraiCeluId
,@pIsCsoportVez = @pIsCsoportVez
END
GO