DROP PROCEDURE IF EXISTS sp_GetKozossegiSzolgalatokReszletek GO 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 ,ISNULL(@pTanuloId, ISNULL(AktTanuloOktazon.ID, AktTanuloIdp.ID)) AS TanuloId ,Tanulo.C_NYOMTATASINEV AS TanuloNev ,dbo.fnGetTanuloAktualisOsztaly(ISNULL(@pTanuloId, ISNULL(AktTanuloOktazon.ID, AktTanuloIdp.ID))) 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.TOROLT = IIF(@pToroltElemek = ''T'', Tanulo.TOROLT, ''F'') LEFT JOIN T_FELHASZNALO_OSSZES AktTanuloOktazon ON AktTanuloOktazon.C_OKTATASIAZONOSITO = Tanulo.C_OKTATASIAZONOSITO AND AktTanuloOktazon.TOROLT = IIF(@pToroltElemek = ''T'', AktTanuloOktazon.TOROLT, ''F'') AND AktTanuloOktazon.C_TANEVID = @pTanevId LEFT JOIN T_FELHASZNALO_OSSZES AktTanuloIdp ON AktTanuloIdp.C_IDPEGYEDIAZONOSITO = Tanulo.C_IDPEGYEDIAZONOSITO AND AktTanuloIdp.TOROLT = IIF(@pToroltElemek = ''T'', AktTanuloIdp.TOROLT, ''F'') AND AktTanuloIdp.C_TANEVID = @pTanevId' SET @whereSql = N' WHERE KozossegiSzolgalat.TOROLT = IIF(@pToroltElemek = ''T'', KozossegiSzolgalat.TOROLT, ''F'')' IF @pTanuloId IS NOT NULL BEGIN SET @whereSql += N' AND ISNULL(AktTanuloOktazon.ID, AktTanuloIdp.ID) = @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 LIKE N''%'' + @pTanuloNev + N''%''' 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