154 lines
6.8 KiB
Transact-SQL
154 lines
6.8 KiB
Transact-SQL
/* ===================================== */
|
|
/* Description: <Dinamikus sql az igazolások (T_IGAZOLAS) lekérdezésére és/vagy exportjára> */
|
|
/* ===================================== */
|
|
DROP PROCEDURE IF EXISTS uspGetIgazolasInfo
|
|
GO
|
|
|
|
CREATE PROCEDURE [dbo].[uspGetIgazolasInfo]
|
|
@pIgazolasId int = NULL
|
|
,@pIntezmenyId int = NULL
|
|
,@pTanevId int = NULL
|
|
,@pTanuloId int = NULL
|
|
,@pIgazolasKezdete datetime = NULL
|
|
,@pIgazolasVege datetime = NULL
|
|
,@pIgazolasTipusa int = NULL
|
|
,@pTanuloNeve nvarchar(255) = NULL
|
|
,@pOsztalyCsoportId int = NULL
|
|
,@pRogzitesDatumaIg datetime = NULL
|
|
,@pRogzitesDatumaTol datetime = NULL
|
|
,@pRogzitoId int = NULL
|
|
,@pIgazolasDatuma datetime = NULL
|
|
,@pDefaultFeladatKategoriaId int = NULL
|
|
|
|
/* Sorting and paging */
|
|
--,@NeedPaging bit = 0
|
|
--,@OrderBy nvarchar(255) = 'ID'
|
|
--,@PageNumber int = 1
|
|
--,@PageSize int = 100
|
|
--,@LastRowCount int = 0
|
|
|
|
/* SimpleResult, Excel export */
|
|
,@SimpleResult bit = 0 -- ha true, akkor a visszaadott oszlopok szukebb listat adnak vissza, figyelve a join-ra és a where-re!
|
|
,@IsExport bit = 0
|
|
AS BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
DECLARE @sql nvarchar(max) = ''
|
|
|
|
/* SELECT part */
|
|
SET @sql +=
|
|
--IIF(@NeedPaging = 1 AND @LastRowCount = 0 AND @IsExport = 0, N'SELECT *, COUNT(ID) OVER () AS RN FROM (', N'') --Pager
|
|
+ N'
|
|
SELECT DISTINCT
|
|
igazolas.ID AS ID
|
|
,tanulo.C_NYOMTATASINEV AS Nev
|
|
,felhasznalo.C_NYOMTATASINEV AS Rogzito
|
|
,igazolas.C_KEZDETE AS Kezdete
|
|
,igazolas.C_VEGE AS Vege
|
|
,igazolas.C_MEGJEGYZES AS Megjegyzes
|
|
,igazolas.C_IGAZOLASTIPUSA AS IgazolasTipusa
|
|
,igazolas.C_ROGZITESDATUMA AS RogzitesDatuma
|
|
|
|
' + IIF(@SimpleResult = 1, N'', N'
|
|
,tanulo.ID AS TanuloId
|
|
,IIF(tanulo.C_NEVSORREND = ''T''
|
|
,tanulo.C_UTONEV + '' '' + tanulo.C_VEZETEKNEV
|
|
,tanulo.C_VEZETEKNEV + '' '' + tanulo.C_UTONEV) AS NevElotagNelkul
|
|
,IIF(felhasznalo.C_NEVSORREND = ''T''
|
|
,felhasznalo.C_UTONEV + '' '' + felhasznalo.C_VEZETEKNEV
|
|
,felhasznalo.C_VEZETEKNEV + '' '' + felhasznalo.C_UTONEV) AS RogzitoElotagNelkul') + '
|
|
' + IIF(@IsExport = 1 AND @SimpleResult = 0, N',tanulo.C_SZULETESIDATUM AS SzuletesiDatum', N'') + N'
|
|
' + IIF(@IsExport = 1 AND @SimpleResult = 0, N',tanulo.C_OKTATASIAZONOSITO AS OktatasiAzonosito', N'') + N'
|
|
--,COUNT(igazolas.ID) OVER () AS db
|
|
|
|
FROM T_IGAZOLAS igazolas
|
|
INNER JOIN T_FELHASZNALO felhasznalo ON felhasznalo.ID = igazolas.C_ROGZITOID AND felhasznalo.TOROLT=''F''
|
|
INNER JOIN T_FELHASZNALO tanulo ON tanulo.ID = igazolas.C_TANULOID AND tanulo.TOROLT=''F''
|
|
'
|
|
IF (@SimpleResult = 0 AND (@pOsztalyCsoportId IS NOT NULL OR @pDefaultFeladatKategoriaId IS NOT NULL)) -- Ha SimpleResult=1, akkor nem joinol és nem is lehet osztalycsoportra vagy feladatkategoriaidra szűrni
|
|
SET @sql += N'
|
|
INNER JOIN T_TANULOCSOPORT tanuloCsoport
|
|
INNER JOIN T_OSZTALY o ON o.ID = tanuloCsoport.C_OSZTALYCSOPORTID AND o.TOROLT=''F''
|
|
ON tanuloCsoport.C_TANULOID = igazolas.C_TANULOID AND tanuloCsoport.TOROLT=''F''
|
|
--AND (igazolas.C_KEZDETE >= tanulocsoport.C_BELEPESDATUM AND (igazolas.C_KEZDETE < tanulocsoport.C_KILEPESDATUM OR tanulocsoport.C_KILEPESDATUM IS NULL))
|
|
INNER JOIN T_OSZTALYCSOPORT osztalyCsoport ON tanuloCsoport.C_OSZTALYCSOPORTID = osztalyCsoport.ID AND osztalyCsoport.TOROLT=''F''
|
|
'
|
|
/* WHERE part */
|
|
SET @sql += N'
|
|
WHERE
|
|
igazolas.TOROLT = ''F''
|
|
' + IIF(@pIgazolasId IS NULL, N'', N' AND igazolas.ID = @pIgazolasId') + N'
|
|
' + IIF(@pIntezmenyId IS NULL, N'', N' AND igazolas.C_INTEZMENYID = @pIntezmenyId') + '
|
|
' + IIF(@pTanevId IS NULL, N'', N' AND igazolas.C_TANEVID = @pTanevId') + '
|
|
' + IIF(@pTanuloId IS NULL, N'', N' AND igazolas.C_TANULOID IN (@pTanuloId)') + '
|
|
' + IIF(@pIgazolasKezdete IS NULL, N'', N' AND igazolas.C_KEZDETE >= @pIgazolasKezdete') + '
|
|
' + IIF(@pIgazolasVege IS NULL, N'', N' AND igazolas.C_VEGE <= @pIgazolasVege') + '
|
|
' + IIF(@pIgazolasTipusa IS NULL, N'', N' AND igazolas.C_IGAZOLASTIPUSA = @pIgazolasTipusa') + '
|
|
' + IIF(@pTanuloNeve IS NULL, N'', N' AND tanulo.C_NYOMTATASINEV LIKE Concat(''%'',@pTanuloNeve,''%'')') + '
|
|
' + IIF(@pRogzitesDatumaIg IS NULL, N'', N' AND CONVERT(date, igazolas.C_ROGZITESDATUMA) <= @pRogzitesDatumaIg') + '
|
|
' + IIF(@pRogzitesDatumaTol IS NULL, N'', N' AND CONVERT(date, igazolas.C_ROGZITESDATUMA) >= @pRogzitesDatumaTol') + '
|
|
' + IIF(@pRogzitoId IS NULL, N'', N' AND igazolas.C_ROGZITOID = @pRogzitoId') + '
|
|
' + IIF(@pIgazolasDatuma IS NULL, N'', N' AND igazolas.C_KEZDETE <= @pIgazolasDatuma AND @pIgazolasDatuma <= igazolas.C_VEGE') + ''
|
|
|
|
IF (@SimpleResult = 0 AND (@pOsztalyCsoportId IS NOT NULL OR @pDefaultFeladatKategoriaId IS NOT NULL))
|
|
SET @sql += N'
|
|
' + IIF(@SimpleResult = 1, N'', N' AND tanuloCsoport.C_BELEPESDATUM <= igazolas.C_KEZDETE AND (tanuloCsoport.C_KILEPESDATUM > igazolas.C_KEZDETE OR tanuloCsoport.C_KILEPESDATUM IS NULL)') + '
|
|
' + IIF(@pOsztalyCsoportId IS NULL, N'', N' AND tanuloCsoport.C_OSZTALYCSOPORTID = @pOsztalyCsoportId') + '
|
|
' + IIF(@pDefaultFeladatKategoriaId IS NULL, N'', N' AND osztalyCsoport.C_FELADATKATEGORIAID = @pDefaultFeladatKategoriaId') + ''
|
|
--' + IIF(@NeedPaging = 1 AND @LastRowCount = 0 AND @IsExport = 0, N') as Base', N'') + '' --Pager
|
|
|
|
/* SORTING & PAGING part */
|
|
--IF (@NeedPaging = 1 AND @IsExport = 0 AND @OrderBy <> '' AND @PageNumber > 0 AND @PageSize > 0) BEGIN
|
|
--SET @sql += N'
|
|
--ORDER BY ' + @OrderBy + '
|
|
--OFFSET ' + CAST(@PageSize * (@PageNumber - 1) as varchar(10)) + ' ROWS
|
|
--FETCH NEXT ' + CAST(@PageSize as varchar(10)) + ' ROWS ONLY
|
|
--'
|
|
--END
|
|
|
|
EXEC sp_executesql @sql, N'
|
|
@pIgazolasId int
|
|
,@pIntezmenyId int
|
|
,@pTanevId int
|
|
,@pTanuloId int
|
|
,@pIgazolasKezdete datetime
|
|
,@pIgazolasVege datetime
|
|
,@pIgazolasTipusa int
|
|
,@pTanuloNeve nvarchar(255)
|
|
,@pOsztalyCsoportId int
|
|
,@pRogzitesDatumaIg datetime
|
|
,@pRogzitesDatumaTol datetime
|
|
,@pRogzitoId int
|
|
,@pIgazolasDatuma datetime
|
|
,@pDefaultFeladatKategoriaId int
|
|
--,@NeedPaging bit
|
|
--,@OrderBy nvarchar(255)
|
|
--,@PageNumber int
|
|
--,@PageSize int
|
|
--,@LastRowCount int
|
|
,@SimpleResult bit
|
|
,@IsExport bit'
|
|
,@pIgazolasId = @pIgazolasId
|
|
,@pIntezmenyId = @pIntezmenyId
|
|
,@pTanevId = @pTanevId
|
|
,@pTanuloId = @pTanuloId
|
|
,@pIgazolasKezdete = @pIgazolasKezdete
|
|
,@pIgazolasVege = @pIgazolasVege
|
|
,@pIgazolasTipusa = @pIgazolasTipusa
|
|
,@pTanuloNeve = @pTanuloNeve
|
|
,@pOsztalyCsoportId = @pOsztalyCsoportId
|
|
,@pRogzitesDatumaIg = @pRogzitesDatumaIg
|
|
,@pRogzitesDatumaTol = @pRogzitesDatumaTol
|
|
,@pRogzitoId = @pRogzitoId
|
|
,@pIgazolasDatuma = @pIgazolasDatuma
|
|
,@pDefaultFeladatKategoriaId = @pDefaultFeladatKategoriaId
|
|
--,@NeedPaging = @NeedPaging
|
|
--,@OrderBy = @OrderBy
|
|
--,@PageNumber = @PageNumber
|
|
--,@PageSize = @PageSize
|
|
--,@LastRowCount = @LastRowCount
|
|
,@SimpleResult = @SimpleResult
|
|
,@IsExport = @IsExport
|
|
|
|
END
|
|
GO
|