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 ,ISNULL(@pTanuloId, AktTanuloId.TanuloId) AS TanuloId ,Tanulo.C_NYOMTATASINEV AS TanuloNev ,dbo.fnGetTanuloAktualisOsztaly(ISNULL(@pTanuloId, AktTanuloId.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.TOROLT = IIF(@pToroltElemek = ''T'', Tanulo.TOROLT, ''F'') LEFT JOIN ( SELECT f.ID TanuloId ,C_ANYJANEVE ,C_SZULETESIDATUM ,C_SZULETESINEV ,C_SZULETESIHELY FROM T_FELHASZNALO_OSSZES f INNER JOIN T_TANULO_OSSZES t ON t.ID = f.ID AND t.TOROLT = IIF(@pToroltElemek = ''T'', t.TOROLT, ''F'') WHERE f.TOROLT = IIF(@pToroltElemek = ''T'', TOROLT, ''F'') AND f.C_TANEVID = @pTanevId ) AktTanuloId ON AktTanuloId.C_ANYJANEVE = Tanulo.C_ANYJANEVE AND AktTanuloId.C_SZULETESIDATUM = Tanulo.C_SZULETESIDATUM AND AktTanuloId.C_SZULETESINEV = Tanulo.C_SZULETESINEV AND AktTanuloId.C_SZULETESIHELY = Tanulo.C_SZULETESIHELY' SET @whereSql = N' WHERE KozossegiSzolgalat.TOROLT = IIF(@pToroltElemek = ''T'', KozossegiSzolgalat.TOROLT, ''F'')' IF @pTanuloId IS NOT NULL BEGIN SET @whereSql += N' AND AktTanuloId.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