DROP PROCEDURE IF EXISTS uspFeljegyzesekKereses GO CREATE PROCEDURE uspFeljegyzesekKereses @pTanevId int = NULL ,@pIntezmenyId int = NULL ,@pOsztalyId int = NULL ,@OktNevKatTipus int = NULL ,@pFeladatEllatasiHelyId int = NULL ,@pTanuloId int = NULL ,@pOsztalyCsoportId int = NULL ,@pFeljegyzoId int = NULL ,@pTipus int = NULL ,@pDatumTol datetime = NULL ,@pDatumIg datetime = NULL ,@pIsElektronikusUzenet bit ,@pElektronikusUzenetTipusEnum int ,@pIsKellKapcsolodoCsoportok bit ,@pRogzitesDatumTol datetime = NULL ,@pRogzitesDatumIg datetime = NULL ,@pFeljegyzesSzovege nvarchar(max) = NULL ,@pSzervezetTipusId int = NULL ,@pSzervezetIdListString nvarchar(255) = NULL ,@pSzervezetNev nvarchar(255) = NULL ,@pSzervezetAzonosito nvarchar(255) = NULL AS BEGIN SET NOCOUNT ON; DECLARE @sql nvarchar(max) ,@whereSql nvarchar(max) SET @sql = N' SELECT tanuloesemeny.ID AS ID ,tanuloesemeny.C_ESEMENYDATUMA AS Datum ,tanuloesemeny.C_MEGJEGYZES AS Megjegyzes ,tanuloesemeny.C_TARTALOM AS Tartalom ,tanuloesemeny.C_TIPUS AS Tipus ,tanuloesemeny.C_FELJEGYZOID AS FeljegyzoId ,tanuloesemeny.C_TANTARGYID AS TantargyId ,tanuloesemeny.C_ROGZITESDATUMA AS RogzitesDatuma ,TANULO.ID AS TanuloId ,TANULO.C_NYOMTATASINEV AS TanuloNev ,TANULO.C_SZULETESIDATUM AS SzuletesiDatum ,TANULO.C_OKTATASIAZONOSITO AS OktatasiAzonosito ,IIF(TANULO.C_NEVSORREND = ''T'', TANULO.C_UTONEV + '' '' + TANULO.C_VEZETEKNEV, TANULO.C_VEZETEKNEV + '' '' + TANULO.C_UTONEV) AS TanuloNevElotagNelkul ,FELJEGYZO.C_NYOMTATASINEV AS FeljegyzoNev ,IIF(FELJEGYZO.C_NEVSORREND = ''T'', FELJEGYZO.C_UTONEV + '' '' + FELJEGYZO.C_VEZETEKNEV, FELJEGYZO.C_VEZETEKNEV + '' '' + FELJEGYZO.C_UTONEV) AS FeljegyzoNevElotagNelkul ,ISNULL(ocs.ID, beirasOcs.ID) AS OsztalyCsoportId ,ISNULL(ocs.C_NEV, ISNULL(beirasOcs.C_NEV, ISNULL(rogzitesOcs.C_NEV, ''-''))) AS OsztalyCsoportNev ,STUFF(( SELECT '', '' + CAST(ocsop.C_NEV AS nvarchar(max)) FROM T_TANULOCSOPORT_OSSZES tcs INNER JOIN T_OSZTALY_OSSZES o on o.ID = tcs.C_OSZTALYCSOPORTID AND o.TOROLT = ''F'' INNER JOIN T_OSZTALYCSOPORT_OSSZES ocsop on ocsop.ID = o.ID AND ocsop.TOROLT = ''F'' AND (@pFeladatEllatasiHelyId IS NULL OR ocsop.C_FELADATELLATASIHELYID = @pFeladatEllatasiHelyId) AND (@OktNevKatTipus IS NULL OR ocsop.C_FELADATKATEGORIAID = @OktNevKatTipus) WHERE tcs.TOROLT = ''F'' AND tcs.C_TANULOID = T_TANULO_TANULOESEMENY.C_TANULOID AND tcs.C_BELEPESDATUM <= tanuloesemeny.C_ESEMENYDATUMA AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > tanuloesemeny.C_ESEMENYDATUMA) FOR XML PATH ('''')), 1, 1, '''') AS OsztalyNev ,tanuloesemeny.C_TARGY AS Cim FROM T_TANULOESEMENY_OSSZES AS tanuloesemeny INNER JOIN T_TANULO_TANULOESEMENY ON tanuloesemeny.ID = T_TANULO_TANULOESEMENY.C_TANULOESEMENYID LEFT JOIN ( SELECT tanitasiora.ID AS TanitasioraId ,ocs.ID ,ocs.C_NEV ,ocs.C_FELADATELLATASIHELYID ,ocs.C_FELADATKATEGORIAID ,ocs.C_TANEVID ,ocs.C_INTEZMENYID FROM T_TANITASIORA_OSSZES tanitasiora INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tanitasiora.C_OSZTALYCSOPORTID AND ocs.TOROLT = ''F'' AND (@OktNevKatTipus IS NULL OR C_FELADATKATEGORIAID = @OktNevKatTipus) AND (@pFeladatEllatasiHelyId IS NULL OR ocs.C_FELADATELLATASIHELYID= @pFeladatEllatasiHelyId) ) ocs on ocs.TanitasioraId = tanuloesemeny.C_TANITASIORAID LEFT JOIN T_OSZTALYCSOPORT_OSSZES rogzitesOcs ON tanuloesemeny.C_ROGZITESKORIOSZTALYID = rogzitesOcs.ID LEFT JOIN T_OSZTALYCSOPORT_OSSZES beirasOcs ON tanuloesemeny.C_BEIRASOSZTALYCSOPORTID = beirasOcs.ID INNER JOIN T_FELHASZNALO_OSSZES TANULO ON TANULO.ID = T_TANULO_TANULOESEMENY.C_TANULOID AND TANULO.TOROLT = ''F'' INNER JOIN T_FELHASZNALO_OSSZES FELJEGYZO ON FELJEGYZO.ID = tanuloesemeny.C_FELJEGYZOID AND FELJEGYZO.TOROLT = ''F''' SET @whereSql = N' WHERE tanuloesemeny.TOROLT = ''F'' AND (@pFeladatEllatasiHelyId IS NULL OR COALESCE(ocs.C_FELADATELLATASIHELYID, rogzitesOcs.C_FELADATELLATASIHELYID, beirasOcs.C_FELADATELLATASIHELYID) = @pFeladatEllatasiHelyId) AND (@OktNevKatTipus IS NULL OR ocs.C_FELADATKATEGORIAID = @OktNevKatTipus OR rogzitesOcs.C_FELADATKATEGORIAID = @OktNevKatTipus) AND tanuloesemeny.C_INTEZMENYID = @pIntezmenyId AND tanuloesemeny.C_TANEVID = @pTanevId' IF (@pOsztalyId IS NOT NULL) SET @whereSql += N' AND EXISTS( SELECT 1 FROM T_TANULOCSOPORT_OSSZES tcs WHERE tcs.C_TANULOID = T_TANULO_TANULOESEMENY.C_TANULOID AND C_BELEPESDATUM <= tanuloesemeny.C_ESEMENYDATUMA AND (C_KILEPESDATUM > tanuloesemeny.C_ESEMENYDATUMA OR C_KILEPESDATUM IS NULL) AND C_OSZTALYCSOPORTID = @pOsztalyId)' IF (@pTanuloId IS NOT NULL) SET @whereSql += N' AND T_TANULO_TANULOESEMENY.C_TANULOID = @pTanuloId' IF (@pOsztalyCsoportId IS NOT NULL) SET @whereSql += IIF(@pIsKellKapcsolodoCsoportok = 1, N' AND ISNULL(ocs.ID, beirasOcs.ID) IN (SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(@pOsztalyCsoportId))', N' AND (ocs.ID = @pOsztalyCsoportId OR beirasOcs.ID = @pOsztalyCsoportId)') IF (@pFeljegyzoId IS NOT NULL) SET @whereSql += N' AND tanuloesemeny.C_FELJEGYZOID = @pFeljegyzoId' IF (@pTipus IS NOT NULL) SET @whereSql += N' AND tanuloesemeny.C_TIPUS = @pTipus' IF (@pDatumTol IS NOT NULL) SET @whereSql += N' AND tanuloesemeny.C_ESEMENYDATUMA >= @pDatumTol' IF (@pDatumIg IS NOT NULL) SET @whereSql += N' AND tanuloesemeny.C_ESEMENYDATUMA < @pDatumIg' IF (@pRogzitesDatumTol IS NOT NULL) SET @whereSql += N' AND tanuloesemeny.C_ROGZITESDATUMA >= @pRogzitesDatumTol' IF (@pRogzitesDatumIg IS NOT NULL) SET @whereSql += N' AND tanuloesemeny.C_ROGZITESDATUMA < @pRogzitesDatumIg' IF (@pIsElektronikusUzenet = 1) SET @whereSql += N' AND tanuloesemeny.C_TIPUS = @pElektronikusUzenetTipusEnum' ELSE SET @whereSql += N' AND tanuloesemeny.C_TIPUS <> @pElektronikusUzenetTipusEnum' IF (@pFeljegyzesSzovege IS NOT NULL) SET @whereSql += N' AND tanuloesemeny.C_TARTALOM LIKE ''%'' + @pFeljegyzesSzovege + ''%''' IF @pSzervezetTipusId IS NOT NULL BEGIN SET @sql += N' LEFT JOIN T_CSOPORT_OSSZES cs on cs.C_ALTANEVID = ocs.C_TANEVID AND cs.C_ALINTEZMENYID = ocs.C_INTEZMENYID AND cs.TOROLT = ''F'' AND cs.ID = ocs.ID INNER JOIN T_SZERVEZET_OSSZES sz ON sz.C_TANEVID = tanuloesemeny.C_TANEVID AND sz.C_INTEZMENYID = tanuloesemeny.C_INTEZMENYID AND sz.TOROLT = ''F'' AND sz.ID = cs.C_SZERVEZETID AND sz.C_TIPUS = @pSzervezetTipusId' IF (@pSzervezetIdListString IS NOT NULL AND LEN(@pSzervezetIdListString) > 0) BEGIN SET @whereSql += N' AND sz.ID IN (' + @pSzervezetIdListString + ')' END IF @pSzervezetNev IS NOT NULL BEGIN SET @whereSql += N' AND sz.C_NEV LIKE ''%'' + @pSzervezetNev + ''%''' END IF @pSzervezetAzonosito IS NOT NULL BEGIN SET @whereSql += N' AND sz.C_AZONOSITO LIKE ''%'' + @pSzervezetAzonosito + ''%''' END END SET @sql += @whereSql EXEC sys.Sp_executesql @sql, N' @pTanevId int = NULL ,@pIntezmenyId int = NULL ,@pOsztalyId int ,@OktNevKatTipus int ,@pFeladatEllatasiHelyId int ,@pTanuloId int ,@pOsztalyCsoportId int ,@pFeljegyzoId int ,@pTipus int ,@pDatumTol datetime ,@pDatumIg datetime ,@pIsElektronikusUzenet bit ,@pElektronikusUzenetTipusEnum int ,@pRogzitesDatumTol datetime ,@pRogzitesDatumIg datetime ,@pFeljegyzesSzovege nvarchar(max) ,@pSzervezetTipusId int = NULL ,@pSzervezetNev nvarchar(255) = NULL ,@pSzervezetAzonosito nvarchar(255) = NULL' ,@pTanevId ,@pIntezmenyId ,@pOsztalyId ,@OktNevKatTipus ,@pFeladatEllatasiHelyId ,@pTanuloId ,@pOsztalyCsoportId ,@pFeljegyzoId ,@pTipus ,@pDatumTol ,@pDatumIg ,@pIsElektronikusUzenet ,@pElektronikusUzenetTipusEnum ,@pRogzitesDatumTol ,@pRogzitesDatumIg ,@pFeljegyzesSzovege ,@pSzervezetTipusId = @pSzervezetTipusId ,@pSzervezetNev = @pSzervezetNev ,@pSzervezetAzonosito = @pSzervezetAzonosito END GO