/* ===================================== */ /* Description: */ /* ===================================== */ 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 ,@pFeladatKategoriaId int = NULL ,@pFeladatEllatasiHelyId int = NULL ,@pSzervezetTipusId 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 @pFeladatKategoriaId IS NOT NULL OR @pFeladatEllatasiHelyId 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(@pSzervezetTipusId IS NULL, N' AND igazolas.C_SZERVEZETID IS NULL',N' AND igazolas.C_SZERVEZETID IS NOT NULL') + ' ' + 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 @pFeladatKategoriaId IS NOT NULL OR @pFeladatEllatasiHelyId 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(@pFeladatKategoriaId IS NULL, N'', N' AND osztalyCsoport.C_FELADATKATEGORIAID = @pFeladatKategoriaId') + ' ' + IIF(@pFeladatEllatasiHelyId IS NULL, N'', N' AND osztalyCsoport.C_FELADATELLATASIHELYID = @pFeladatEllatasiHelyId') + '' 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 ,@SimpleResult bit ,@IsExport bit ,@pFeladatKategoriaId int ,@pFeladatEllatasiHelyId int ' ,@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 ,@SimpleResult = @SimpleResult ,@IsExport = @IsExport ,@pFeladatKategoriaId = @pFeladatKategoriaId ,@pFeladatEllatasiHelyId = @pFeladatEllatasiHelyId END GO