/* ===================================== */ /* 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 ,@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