kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20190708191957_OM_1593/uspGetIgazolasInfo.sql
2024-03-13 00:33:46 +01:00

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