220 lines
8.7 KiB
Transact-SQL
220 lines
8.7 KiB
Transact-SQL
DROP PROCEDURE IF EXISTS uspGetMulasztasData
|
|
GO
|
|
|
|
CREATE PROCEDURE uspGetMulasztasData
|
|
@pTanevId int
|
|
,@pCsoportVezetoId int = NULL
|
|
,@pIsNemJelenlevoTanulokMegjelenitese bit
|
|
,@pTol datetime = NULL
|
|
,@pIg datetime = NULL
|
|
,@pTanuloId int = NULL
|
|
,@pTanuloNev nvarchar(510) = NULL
|
|
,@pOsztcsop int = NULL
|
|
,@pIsKellKapcsolodoCsoportok bit
|
|
,@pCsoptip int = NULL
|
|
,@pFogl int = NULL
|
|
,@pTargy int = NULL
|
|
,@pOraId int = NULL
|
|
,@pMulTip int = NULL
|
|
,@pKesIdo int = NULL
|
|
,@pIgazolasTipus int = NULL
|
|
,@pIsNemBesoroltTanulokMulasztasainakMegjelenitese bit
|
|
,@pFeladatKategoriaId int = NULL
|
|
,@pFeladatEllatasiHelyId int = NULL
|
|
,@pIgazoltsagAllapota int = NULL
|
|
,@pIsOnlineOra bit = NULL
|
|
,@pTanitasiOraId int = NULL
|
|
,@pSzervezetTipusId int = NULL
|
|
,@pSzervezetIdListString nvarchar(255) = NULL
|
|
,@pSzervezetNev nvarchar(255) = NULL
|
|
,@pSzervezetAzonosito nvarchar(255) = NULL
|
|
AS
|
|
BEGIN
|
|
|
|
SET NOCOUNT ON;
|
|
|
|
DECLARE @sql nvarchar(max)
|
|
,@whereClause nvarchar(max) = N'
|
|
WHERE tm.TOROLT = ''F'' AND tm.C_TANEVID = @tanevId'
|
|
|
|
SET @sql = N'
|
|
SELECT
|
|
tm.ID as ID
|
|
,fh.ID AS TanuloId
|
|
,fh.C_NYOMTATASINEV as TanuloNev
|
|
,IIF(fh.C_NEVSORREND = ''T'',
|
|
fh.C_UTONEV + '' '' + fh.C_VEZETEKNEV,
|
|
fh.C_VEZETEKNEV + '' '' + fh.C_UTONEV) as TanuloNevElotagNelkul
|
|
,fh.C_SZULETESIDATUM as SzuletesiIdo
|
|
,fh.C_OKTATASIAZONOSITO AS OktatasiAzonosito
|
|
,tao.C_ORASZAM as Oraszam
|
|
,tao.C_DATUM as Datum
|
|
,ocs.C_NEV as OsztCsopNev
|
|
,tgy.C_NEV as TargyNev
|
|
,tm.C_TIPUS as MulTip
|
|
,tm.C_KESESPERCBEN as KesesPerc
|
|
,tm.C_IGAZOLT as Igazolt
|
|
,tm.C_IGAZOLASTIPUSA as IgazolasTipus
|
|
,tm.C_MEGJEGYZES as Megjegyzes
|
|
,ISNULL(totOnlineOra.C_BOOLERTEK, ottOnlineOra.C_BOOLDEFAULT) AS IsOnlineOra
|
|
,ISNULL(ig.C_MEGJEGYZES, tm.C_MEGJEGYZES) as IgazolasMegjegyzes
|
|
FROM T_TANULOMULASZTAS_OSSZES tm
|
|
INNER JOIN T_TANITASIORA_OSSZES tao on tao.ID = tm.C_TANITASIORAKID AND tao.TOROLT = ''F''
|
|
INNER JOIN T_FELHASZNALO_OSSZES fh on fh.ID = tm.C_ORATANULOIID AND fh.TOROLT = ''F''
|
|
INNER JOIN T_TANTARGY_OSSZES tgy on tgy.ID = tao.C_TANTARGYID AND tgy.TOROLT = ''F''
|
|
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs on ocs.ID = tao.C_OSZTALYCSOPORTID AND ocs.TOROLT = ''F''
|
|
INNER JOIN T_ORATULAJDONSAGTIPUS_OSSZES ottOnlineOra ON ottOnlineOra.TOROLT = ''F'' AND ottOnlineOra.C_ALTANEVID = tao.C_TANEVID AND ottOnlineOra.ID = 8615
|
|
LEFT JOIN T_TANITASIORATULAJDONSAG_OSSZES totOnlineOra ON totOnlineOra.C_ORATULAJDONSAGID = ottOnlineOra.ID AND totOnlineOra.C_TANEVID = ottOnlineOra.C_ALTANEVID AND totOnlineOra.TOROLT = ''F'' AND totOnlineOra.C_TANITASIORAID = tao.ID
|
|
OUTER APPLY (
|
|
SELECT TOP 1 innerIg.C_MEGJEGYZES
|
|
FROM T_IGAZOLAS_OSSZES innerIg
|
|
WHERE innerIg.TOROLT = ''F''
|
|
AND tao.C_DATUM BETWEEN innerIg.C_KEZDETE AND innerIg.C_VEGE
|
|
AND innerIg.C_TANULOID = tm.C_ORATANULOIID
|
|
AND tm.C_IGAZOLT = ''T''
|
|
) ig
|
|
'
|
|
|
|
SET @sql += IIF(@pOsztcsop IS NOT NULL, N'
|
|
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_TANULOID = tm.C_ORATANULOIID
|
|
AND tcs.TOROLT = ''F''
|
|
AND tao.C_DATUM >= tcs.C_BELEPESDATUM
|
|
AND tao.C_DATUM < ISNULL(tcs.C_KILEPESDATUM, GETDATE())
|
|
AND tcs.C_OSZTALYCSOPORTID= @osztcsop', '')
|
|
SET @sql += IIF(@pCsoportVezetoId IS NOT NULL, N'
|
|
INNER JOIN T_CSOPORT_OSSZES csvcs on csvcs.C_CSOPORTVEZETOID = @csoportVezetoId
|
|
AND csvcs.TOROLT = ''F'' AND csvcs.ID = tao.C_OSZTALYCSOPORTID', '')
|
|
SET @whereClause += IIF(@pTol IS NOT NULL, N'
|
|
AND tao.C_DATUM >= CAST(@tol as date)', '')
|
|
SET @whereClause += IIF(@pIg IS NOT NULL, N'
|
|
AND tao.C_DATUM <= CAST(@ig as date)', '')
|
|
SET @whereClause += IIF(@pTanuloId IS NOT NULL, N'
|
|
AND fh.ID = @tanuloId', '')
|
|
SET @whereClause += IIF(@pTanuloNev IS NOT NULL AND @pTanuloNev <> '', N'
|
|
AND fh.C_NYOMTATASINEV LIKE ''%'' + @tanuloNev + ''%''', '')
|
|
SET @whereClause += IIF(@pOsztcsop IS NOT NULL
|
|
,IIF(@pIsKellKapcsolodoCsoportok = 1, N'
|
|
AND tao.C_OSZTALYCSOPORTID in (SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(@osztcsop))', N'
|
|
AND tao.C_OSZTALYCSOPORTID = @osztcsop')
|
|
,'')
|
|
SET @whereClause += IIF(@pCsoptip IS NOT NULL, N'
|
|
AND EXISTS ( SELECT 1 FROM T_CSOPORT_OSSZES
|
|
WHERE T_CSOPORT_OSSZES.TOROLT = ''F'' AND (T_CSOPORT_OSSZES.ID = tao.C_OSZTALYCSOPORTID '
|
|
+ IIF(@pCsoptip = 1034
|
|
, N'
|
|
OR T_CSOPORT_OSSZES.C_OSZTALYBONTASID = tao.C_OSZTALYCSOPORTID'
|
|
, N'')
|
|
+ N') AND T_CSOPORT_OSSZES.C_TIPUSA = @csoptip)'
|
|
, '')
|
|
SET @whereClause += IIF(@pFogl IS NOT NULL, N'
|
|
AND tao.C_FOGLALKOZASID = @fogl', '')
|
|
SET @whereClause += IIF(@pTargy IS NOT NULL, N'
|
|
AND tao.C_TANTARGYID = @targy', '')
|
|
SET @whereClause += IIF(@pOraId IS NOT NULL, N'
|
|
AND tao.ID = @oraId', '')
|
|
SET @whereClause += IIF(@pMulTip IS NOT NULL, N'
|
|
AND tm.C_TIPUS = @mulTip', '')
|
|
SET @whereClause += IIF(@pKesIdo IS NOT NULL AND @pKesIdo > 0, N'
|
|
AND tm.C_KESESPERCBEN <= @kesIdo', '')
|
|
SET @whereClause +=
|
|
CASE @pIgazoltsagAllapota
|
|
WHEN 0 THEN N'
|
|
AND tm.C_IGAZOLT = ''F'''
|
|
WHEN 1 THEN N'
|
|
AND tm.C_IGAZOLT = ''T'''
|
|
WHEN 2 THEN N'
|
|
AND tm.C_IGAZOLT IS NULL'
|
|
ELSE ''
|
|
END
|
|
SET @whereClause += IIF(@pIgazolasTipus IS NOT NULL, N'
|
|
AND tm.C_IGAZOLASTIPUSA = @igazolasTipus', '')
|
|
SET @whereClause += N'
|
|
AND tm.C_TIPUS <> @jelenlet'
|
|
SET @whereClause += IIF(@pIsNemJelenlevoTanulokMegjelenitese = 1, '', N'
|
|
AND tm.C_TIPUS != 1817')
|
|
SET @whereClause += IIF(@pIsNemBesoroltTanulokMulasztasainakMegjelenitese = 0, N'
|
|
AND EXISTS (
|
|
SELECT TOP 1 1
|
|
FROM T_TANULOCSOPORT_OSSZES tcs
|
|
WHERE tcs.C_OSZTALYCSOPORTID = ocs.ID
|
|
AND tcs.C_TANULOID = fh.ID
|
|
AND tcs.TOROLT = ''F''
|
|
AND tcs.C_BELEPESDATUM <= tao.C_DATUM
|
|
AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= tao.C_DATUM))', '')
|
|
SET @whereClause += IIF(@pFeladatKategoriaId IS NOT NULL, N'
|
|
AND ocs.C_FELADATKATEGORIAID = @feladatKategoriaId', '')
|
|
SET @whereClause += IIF(@pFeladatEllatasiHelyId IS NOT NULL, N'
|
|
AND ocs.C_FELADATELLATASIHELYID = @feladatEllatasiHelyId', '')
|
|
SET @whereClause += IIF(@pIsOnlineOra IS NOT NULL, N'
|
|
AND ISNULL(totOnlineOra.C_BOOLERTEK, ottOnlineOra.C_BOOLDEFAULT) = ' + IIF(@pIsOnlineOra = 1, '''T''', '''F'''), '')
|
|
SET @whereClause += IIF(@pTanitasiOraId IS NOT NULL, N'
|
|
AND tao.ID = @tanitasiOraId', '')
|
|
|
|
IF @pSzervezetTipusId IS NOT NULL BEGIN
|
|
SET @sql += N'
|
|
LEFT JOIN T_CSOPORT_OSSZES cs on cs.C_ALTANEVID = ocs.C_TANEVID AND cs.C_ALINTEZMENYID = ocs.C_INTEZMENYID AND cs.TOROLT = ''F'' AND cs.ID = ocs.ID
|
|
INNER JOIN T_SZERVEZET_OSSZES sz ON sz.C_TANEVID = tm.C_TANEVID AND sz.C_INTEZMENYID = tm.C_INTEZMENYID AND sz.TOROLT = ''F'' AND sz.ID = cs.C_SZERVEZETID AND sz.C_TIPUS = @pSzervezetTipusId'
|
|
IF (@pSzervezetIdListString IS NOT NULL AND LEN(@pSzervezetIdListString) > 0) BEGIN
|
|
SET @whereClause += N'
|
|
AND sz.ID IN (' + @pSzervezetIdListString + ')'
|
|
END
|
|
IF @pSzervezetNev IS NOT NULL BEGIN
|
|
SET @whereClause += N'
|
|
AND sz.C_NEV LIKE ''%'' + @pSzervezetNev + ''%'''
|
|
END
|
|
IF @pSzervezetAzonosito IS NOT NULL BEGIN
|
|
SET @whereClause += N'
|
|
AND sz.C_AZONOSITO LIKE ''%'' + @pSzervezetAzonosito + ''%'''
|
|
END
|
|
END
|
|
|
|
SET @sql += @whereClause
|
|
|
|
EXEC sp_executesql @sql ,N'
|
|
@tanevId int
|
|
,@csoportVezetoId int = NULL
|
|
,@tol datetime = NULL
|
|
,@ig datetime = NULL
|
|
,@tanuloId int = NULL
|
|
,@tanuloNev nvarchar(510) = NULL
|
|
,@osztcsop int = NULL
|
|
,@csoptip int = NULL
|
|
,@fogl int = NULL
|
|
,@targy int = NULL
|
|
,@oraId int = NULL
|
|
,@mulTip int = NULL
|
|
,@kesIdo int = NULL
|
|
,@igazolasTipus int = NULL
|
|
,@feladatKategoriaId int = NULL
|
|
,@feladatEllatasiHelyId int = NULL
|
|
,@jelenlet int
|
|
,@tanitasiOraId int
|
|
,@pSzervezetTipusId int = NULL
|
|
,@pSzervezetNev nvarchar(255) = NULL
|
|
,@pSzervezetAzonosito nvarchar(255) = NULL'
|
|
,@tanevId = @pTanevId
|
|
,@csoportVezetoId = @pCsoportVezetoId
|
|
,@tol = @pTol
|
|
,@ig = @pIg
|
|
,@tanuloId = @pTanuloId
|
|
,@tanuloNev = @pTanuloNev
|
|
,@osztcsop = @pOsztcsop
|
|
,@csoptip = @pCsoptip
|
|
,@fogl = @pFogl
|
|
,@targy = @pTargy
|
|
,@oraId = @pOraId
|
|
,@mulTip = @pMulTip
|
|
,@kesIdo = @pKesIdo
|
|
,@igazolasTipus = @pIgazolasTipus
|
|
,@feladatKategoriaId = @pFeladatKategoriaId
|
|
,@feladatEllatasiHelyId = @pFeladatEllatasiHelyId
|
|
,@jelenlet = 1498 -- MulasztasTipusEnum.jelenlet
|
|
,@tanitasiOraId = @pTanitasiOraId
|
|
,@pSzervezetTipusId = @pSzervezetTipusId
|
|
,@pSzervezetNev = @pSzervezetNev
|
|
,@pSzervezetAzonosito = @pSzervezetAzonosito
|
|
|
|
END
|
|
|
|
GO
|
|
|