-- ============================================= -- Description: -- ============================================= SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO DROP PROCEDURE IF EXISTS [dbo].[uspGetTanuloErtekelesListDataSet] GO CREATE PROCEDURE [dbo].[uspGetTanuloErtekelesListDataSet] @pTanevId INT ,@pTanuloId INT = NULL ,@pOsztalyCsoportId INT = NULL ,@pCsoportTipusId INT = NULL ,@pTantargyId INT = NULL ,@pErtekeloId INT = NULL ,@pOsztalyzatId INT = NULL ,@pErtekelesModId INT = NULL ,@pTipusId INT = NULL ,@pDatumTol DATETIME = NULL ,@pDatumIg DATETIME = NULL ,@pRogzitesDatumTol DATETIME = NULL ,@pRogzitesDatumIg DATETIME = NULL ,@pErtekelesSzoveg NVARCHAR(MAX) = NULL ,@pErtekelesTema NVARCHAR(255) = NULL AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets frominterfering with SELECT statements. SET NOCOUNT ON; --NOTE: A végén lévő konkatenálás miatt kell mindenova NVARCHAR(MAX). Ha 4000-eket használunk elszáll! DECLARE @sql NVARCHAR(MAX) ,@preSelectSql NVARCHAR(MAX) = '' ,@selectSql NVARCHAR(MAX) ,@joinSql NVARCHAR(MAX) ,@whereSql NVARCHAR(MAX) ,@postSelectSql NVARCHAR(MAX) = '' ,@lineBreak CHAR(2) = CHAR(13) + CHAR(10) SET @selectSql = ' SELECT DISTINCT tanuloErtekeles.ID ID ,tanuloErtekeles.C_DATUM Datum ,tanuloErtekeles.C_TIPUSID TipusId ,tanuloErtekeles.C_ROGZITESDATUM RogzitesDatum ,tanuloErtekeles.C_ERTEKELESMODID ErtekelesModId ,tanuloErtekeles.C_ERTEKELESTEMA ErtekelesTema ,tanuloErtekeles.C_ERTEKELESOSZTALYZATID ErtekelesOsztalyzatId ,tanuloErtekeles.C_ERTEKELESSZOVEG ErtekelesSzoveg ,tanuloErtekeles.C_ERTEKELESSZAZALEK ErtekelesSzazalek ,tanuloErtekeles.C_ISMAGATARTASSZORGALOM IsMagatartasSzorgalom ,tanuloErtekeles.C_MAGATARTASOSZTALYZATID MagatartasOsztalyzatId ,tanuloErtekeles.C_MAGATARTASSZOVEG MagatartasSzoveg ,tanuloErtekeles.C_MAGATARTASERTEKID MagatartasErtekId ,tanuloErtekeles.C_SZORGALOMOSZTALYZATID SzorgalomOsztalyzatId ,tanuloErtekeles.C_SZORGALOMSZOVEG SzorgalomSzoveg ,tanuloErtekeles.C_SZORGALOMERTEKID SzorgalomErtekId ,tanuloErtekeles.CREATED Created ,ISNULL(tanariAtlagSuly.C_SULY, 100) ErtekelesSuly ,tantargy.ID TantargyId ,tantargy.C_NEV TantargyNev ,tantargy.C_TARGYKATEGORIA TantargyKategoriaId ,fotargy.ID FotargyId ,fotargy.C_NEV FotargyNev ,fotargy.C_TARGYKATEGORIA FotargyTantargyKategoriaId ,tanuloFelhasznalo.ID TanuloId ,tanuloFelhasznalo.C_NYOMTATASINEV TanuloNev ,IIF(tanuloFelhasznalo.C_NEVSORREND = ''T'', -- tanuloFelhasznalo.C_UTONEV + '' '' + tanuloFelhasznalo.C_VEZETEKNEV, -- tanuloFelhasznalo.C_VEZETEKNEV + '' '' + tanuloFelhasznalo.C_UTONEV) TanuloNevElotagNelkul ,ertekeloFelhasznalo.ID ErtekeloId ,ertekeloFelhasznalo.C_NYOMTATASINEV ErtekeloNyomtatasiNev ,IIF(ertekeloFelhasznalo.C_NEVSORREND = ''T'', -- ertekeloFelhasznalo.C_UTONEV + '' '' + ertekeloFelhasznalo.C_VEZETEKNEV, -- ertekeloFelhasznalo.C_VEZETEKNEV + '' '' + ertekeloFelhasznalo.C_UTONEV) ErtekeloNyomtatasiNevElotagNelkul ,osztalyCsoport.C_NEV OsztalyCsoportNev FROM T_TANULOERTEKELES_OSSZES tanuloErtekeles' + @lineBreak SET @joinSql = ' LEFT JOIN T_TANARIATLAGSULY_OSSZES tanariAtlagSuly ON tanariAtlagSuly.C_TANEVID = tanuloErtekeles.C_TANEVID AND tanariAtlagSuly.TOROLT = ''F'' AND tanariAtlagSuly.C_ERTEKELESMODID = tanuloErtekeles.C_ERTEKELESMODID LEFT JOIN T_TANTARGY_OSSZES tantargy ON tantargy.C_TANEVID = tanuloErtekeles.C_TANEVID AND tantargy.TOROLT = ''F'' AND tantargy.ID = tanuloErtekeles.C_TANTARGYID LEFT JOIN T_TANTARGY_OSSZES fotargy ON fotargy.C_TANEVID = tanuloErtekeles.C_TANEVID AND fotargy.TOROLT = ''F'' AND fotargy.ID = tantargy.C_FOTARGYID LEFT JOIN T_FELHASZNALO_OSSZES tanuloFelhasznalo ON tanuloFelhasznalo.C_TANEVID = tanuloErtekeles.C_TANEVID AND tanuloFelhasznalo.TOROLT = ''F'' AND tanuloFelhasznalo.ID = tanuloErtekeles.C_TANULOID LEFT JOIN T_FELHASZNALO_OSSZES ertekeloFelhasznalo ON ertekeloFelhasznalo.C_TANEVID = tanuloErtekeles.C_TANEVID AND ertekeloFelhasznalo.TOROLT = ''F'' AND ertekeloFelhasznalo.ID = tanuloErtekeles.C_ERTEKELOID LEFT JOIN T_OSZTALYCSOPORT_OSSZES osztalyCsoport ON osztalyCsoport.C_TANEVID = tanuloErtekeles.C_TANEVID AND osztalyCsoport.TOROLT = ''F'' AND osztalyCsoport.ID = tanuloErtekeles.C_OSZTALYCSOPORTID AND osztalyCsoport.C_FELADATKATEGORIAID = (SELECT C_DEFAULTFELADATKATEGORIAID FROM T_TANEV_OSSZES WHERE ID = osztalyCsoport.C_TANEVID) LEFT JOIN T_CSOPORT_OSSZES csoport ON csoport.C_ALTANEVID = tanuloErtekeles.C_TANEVID AND csoport.TOROLT = ''F'' AND csoport.ID = osztalyCsoport.ID' + @lineBreak SET @whereSql = ' WHERE tanuloErtekeles.C_TANEVID = @pTanevId AND tanuloErtekeles.TOROLT = ''F''' + @lineBreak IF @pTanuloId IS NOT NULL BEGIN SET @whereSql += ' AND tanuloErtekeles.C_TANULOID = @pTanuloId' + @lineBreak END IF @pOsztalyCsoportId IS NOT NULL BEGIN SET @preSelectSql += ' CREATE TABLE #OsztalyCsoportIdList( ID INT PRIMARY KEY ) INSERT INTO #OsztalyCsoportIdList (ID) SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(@pOsztalyCsoportId)' + @lineBreak SET @joinSql += ' LEFT JOIN T_TANULOCSOPORT_OSSZES tanuloCsoport ON tanuloCsoport.C_TANEVID = tanuloErtekeles.C_TANEVID AND tanuloCsoport.TOROLT = ''F'' AND tanuloCsoport.C_TANULOID = tanuloFelhasznalo.ID AND tanuloCsoport.C_BELEPESDATUM < GETDATE() AND (tanuloCsoport.C_KILEPESDATUM IS NULL OR tanuloCsoport.C_KILEPESDATUM >= GETDATE())' + @lineBreak SET @whereSql += ' AND osztalyCsoport.ID IN (SELECT ID FROM #OsztalyCsoportIdList) AND EXISTS ( SELECT 1 FROM T_TANULOCSOPORT_OSSZES WHERE C_TANEVID = tanuloErtekeles.C_TANEVID AND TOROLT = ''F'' AND C_OSZTALYCSOPORTID = @pOsztalyCsoportId AND C_TANULOID = tanuloFelhasznalo.ID )' + @lineBreak SET @postSelectSql += 'DROP TABLE IF EXISTS #OsztalyCsoportIdList' + @lineBreak END IF @pCsoportTipusId IS NOT NULL BEGIN SET @whereSql += ' AND csoport.C_TIPUSA = @pCsoportTipusId' + @lineBreak END IF @pTantargyId IS NOT NULL BEGIN SET @whereSql += ' AND tantargy.ID = @pTantargyId' + @lineBreak END IF @pErtekeloId IS NOT NULL BEGIN SET @whereSql += ' AND ertekeloFelhasznalo.ID = @pErtekeloId' + @lineBreak END IF @pOsztalyzatId IS NOT NULL BEGIN SET @whereSql += ' AND (tanuloErtekeles.C_ERTEKELESOSZTALYZATID = @pOsztalyzatId OR tanuloErtekeles.C_MAGATARTASOSZTALYZATID = @pOsztalyzatId OR tanuloErtekeles.C_SZORGALOMOSZTALYZATID = @pOsztalyzatId)' + @lineBreak END IF @pErtekelesModId IS NOT NULL BEGIN SET @whereSql += ' AND tanuloErtekeles.C_ERTEKELESMODID = @pErtekelesModId' + @lineBreak END IF @pTipusId IS NOT NULL BEGIN SET @whereSql += ' AND tanuloErtekeles.C_TIPUSID = @pTipusId' + @lineBreak END IF @pDatumTol IS NOT NULL BEGIN --NOTE: Ide az adott nap 00:00:00 időponttal fog bejönni. SET @whereSql += ' AND tanuloErtekeles.C_DATUM >= @pDatumTol' + @lineBreak END IF @pDatumIg IS NOT NULL BEGIN --NOTE: Ide az adott nap 23:59:59 időponttal fog bejönni. SET @whereSql += ' AND tanuloErtekeles.C_DATUM <= @pDatumIg' + @lineBreak END IF @pRogzitesDatumTol IS NOT NULL BEGIN --NOTE: Ide az adott nap 00:00:00 időponttal fog bejönni. SET @whereSql += ' AND tanuloErtekeles.C_ROGZITESDATUM >= @pRogzitesDatumTol' + @lineBreak END IF @pRogzitesDatumIg IS NOT NULL BEGIN --NOTE: Ide az adott nap 23:59:59 időponttal fog bejönni. SET @whereSql += ' AND tanuloErtekeles.C_ROGZITESDATUM <= @pRogzitesDatumIg' + @lineBreak END IF @pErtekelesSzoveg IS NOT NULL BEGIN SET @whereSql += ' AND (LOWER(tanuloErtekeles.C_ERTEKELESSZOVEG) LIKE ''%'' + @pErtekelesSzoveg + ''%'' OR LOWER(tanuloErtekeles.C_MAGATARTASSZOVEG) LIKE ''%'' + @pErtekelesSzoveg + ''%'' OR LOWER(tanuloErtekeles.C_SZORGALOMSZOVEG) LIKE ''%'' + @pErtekelesSzoveg + ''%'')' + @lineBreak END IF @pErtekelesTema IS NOT NULL BEGIN SET @whereSql += ' AND LOWER(tanuloErtekeles.C_ERTEKELESTEMA) LIKE ''%'' + @pErtekelesTema + ''%''' + @lineBreak END SET @sql = @preSelectSql + @selectSql + @joinSql + @whereSql + @postSelectSql EXEC sp_executesql @sql, N' @pTanevId INT ,@pTanuloId INT = NULL ,@pOsztalyCsoportId INT = NULL ,@pCsoportTipusId INT = NULL ,@pTantargyId INT = NULL ,@pErtekeloId INT = NULL ,@pOsztalyzatId INT = NULL ,@pErtekelesModId INT = NULL ,@pTipusId INT = NULL ,@pDatumTol DATETIME = NULL ,@pDatumIg DATETIME = NULL ,@pRogzitesDatumTol DATETIME = NULL ,@pRogzitesDatumIg DATETIME = NULL ,@pErtekelesSzoveg NVARCHAR(MAX) = NULL ,@pErtekelesTema NVARCHAR(255) = NULL' ,@pTanevId = @pTanevId ,@pTanuloId = @pTanuloId ,@pOsztalyCsoportId = @pOsztalyCsoportId ,@pCsoportTipusId = @pCsoportTipusId ,@pTantargyId = @pTantargyId ,@pErtekeloId = @pErtekeloId ,@pOsztalyzatId = @pOsztalyzatId ,@pErtekelesModId = @pErtekelesModId ,@pTipusId = @pTipusId ,@pDatumTol = @pDatumTol ,@pDatumIg = @pDatumIg ,@pRogzitesDatumTol = @pRogzitesDatumTol ,@pRogzitesDatumIg = @pRogzitesDatumIg ,@pErtekelesSzoveg = @pErtekelesSzoveg ,@pErtekelesTema = @pErtekelesTema END GO