DROP PROCEDURE IF EXISTS sp_GetKozossegiSzolgalatokReszletek GO -- ============================================= -- Description: -- ============================================= CREATE PROCEDURE sp_GetKozossegiSzolgalatokReszletek @pIntezmenyId int ,@pTanevId int ,@pTanuloId int = NULL ,@pTanarId int = NULL ,@pToroltElemek char = 'F' ,@pIntervallumKezdete datetime = NULL ,@pIntervallumVege datetime = NULL ,@pTeljesitesHelye nvarchar(100) = NULL ,@pOraszam int = NULL ,@pTanuloNev nvarchar (100) = NULL ,@pOsztalyNev nvarchar (100) = NULL ,@pKozossegiSzolgalatTipusa int = NULL AS BEGIN SET NOCOUNT ON; DECLARE @sql nvarchar (max) ,@selectSql nvarchar (max) ,@whereSql nvarchar (max) ,@orderSql nvarchar (max) SET @selectSql = N' SELECT KozossegiSzolgalat.ID AS ID ,KozossegiSzolgalat.C_INTERVALLUMKEZDETE AS IntervallumKezdete ,KozossegiSzolgalat.C_INTERVALLUMVEGE AS IntervallumVege ,KozossegiSzolgalat.C_ROGZITESDATUM AS RogzitesDatuma ,KozossegiSzolgalat.C_TELJESITESIHELYE AS TeljesitesiHelye ,KozossegiSzolgalat.C_ORASZAM AS Oraszam ,KozossegiSzolgalat.C_KOZOSSEGISZOLGALATTIPUSA AS KozossegiSzolgalatTipusa ,KozossegiSzolgalat.C_MEGJEGYZES AS Megjegyzes ,KozossegiSzolgalat.TOROLT AS Torolt ,KozossegiSzolgalat.C_TANULOID AS TanuloId ,Tanulo.C_NYOMTATASINEV AS TanuloNev ,dbo.fnGetTanuloAktualisOsztaly(KozossegiSzolgalat.C_TANULOID) AS OsztalyNev ,KozossegiSzolgalat.C_UGYIRATSZAM AS Ugyiratszam ,CASE WHEN KozossegiSzolgalat.C_FELJEGYZOID = @pTanarId AND @pToroltElemek = ''T'' THEN ''T'' ELSE ''F'' END AS Modosithato FROM T_TANULOKOZOSSEGISZOLGALAT_OSSZES KozossegiSzolgalat INNER JOIN T_FELHASZNALO_OSSZES Tanulo ON KozossegiSzolgalat.C_TANULOID = Tanulo.ID and Tanulo.C_TANEVID = @pTanevId AND Tanulo.TOROLT = IIF(@pToroltElemek = ''T'', Tanulo.TOROLT, ''F'')' SET @whereSql = N' WHERE KozossegiSzolgalat.C_INTEZMENYID = @pIntezmenyId AND KozossegiSzolgalat.TOROLT = IIF(@pToroltElemek = ''T'', KozossegiSzolgalat.TOROLT, ''F'')' IF @pTanuloId IS NOT NULL BEGIN SET @whereSql += N' AND KozossegiSzolgalat.C_TANULOID = @pTanuloId' END IF @pIntervallumKezdete IS NOT NULL BEGIN SET @whereSql += N' AND KozossegiSzolgalat.C_INTERVALLUMKEZDETE >= @pIntervallumKezdete' END IF @pIntervallumVege IS NOT NULL BEGIN SET @whereSql += N' AND KozossegiSzolgalat.C_INTERVALLUMVEGE <= @pIntervallumVege' END IF @pTeljesitesHelye IS NOT NULL BEGIN SET @whereSql += N' AND KozossegiSzolgalat.C_TELJESITESIHELYE = @pTeljesitesHelye' END IF @pOraszam IS NOT NULL BEGIN SET @whereSql += N' AND KozossegiSzolgalat.C_ORASZAM = @pOraszam' END IF @pKozossegiSzolgalatTipusa IS NOT NULL BEGIN SET @whereSql += N' AND KozossegiSzolgalat.C_KOZOSSEGISZOLGALATTIPUSA = @pKozossegiSzolgalatTipusa' END IF @pTanuloNev IS NOT NULL BEGIN SET @whereSql += N' AND Tanulo.C_NYOMTATASINEV = @pTanuloNev' END IF @pOsztalyNev IS NOT NULL BEGIN SET @whereSql += N' AND dbo.fnGetTanuloAktualisOsztaly(KozossegiSzolgalat.C_TANULOID) = @pOsztalyNev' END SET @orderSql = N' ORDER BY KozossegiSzolgalat.C_INTERVALLUMKEZDETE DESC' SET @sql = @selectSql + @whereSql + @orderSql EXEC sp_executesql @sql, N' @pIntezmenyId int ,@pTanevId int ,@pTanuloId int = NULL ,@pTanarId int = NULL ,@pToroltElemek char ,@pIntervallumKezdete datetime = NULL ,@pIntervallumVege datetime = NULL ,@pTeljesitesHelye nvarchar (100) = NULL ,@pOraszam int = NULL ,@pTanuloNev nvarchar (100) = NULL ,@pOsztalyNev nvarchar (100) = NULL ,@pKozossegiSzolgalatTipusa int = NULL' ,@pIntezmenyId = @pIntezmenyId ,@pTanevId = @pTanevId ,@pTanuloId = @pTanuloId ,@pTanarId = @pTanarId ,@pToroltElemek = @pToroltElemek ,@pIntervallumKezdete = @pIntervallumKezdete ,@pIntervallumVege = @pIntervallumVege ,@pTeljesitesHelye = @pTeljesitesHelye ,@pOraszam = @pOraszam ,@pTanuloNev = @pTanuloNev ,@pOsztalyNev = @pOsztalyNev ,@pKozossegiSzolgalatTipusa = @pKozossegiSzolgalatTipusa END GO