-- ============================================= -- 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) = '' SET @selectSql = N' SELECT DISTINCT tanuloErtekeles.ID ID ,tanuloErtekeles.C_DATUM Datum ,tanuloErtekeles.C_ROGZITESDATUM RogzitesDatum ,tanuloErtekeles.C_TIPUSID TipusId ,tanuloErtekeles.C_ISERTESITESELKULDVE IsErtesitesElkuldve ,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 ,ISNULL(tantargy.C_NEV, ''Magatartás/Szorgalom'') 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 ,rogziteskoriTanuloOsztaly.ID RogziteskoriTanuloOsztalyId ,rogziteskoriTanuloOsztaly.C_EVFOLYAMTIPUSA RogziteskoriTanuloOsztalyEvfolyamTipusId FROM T_TANULOERTEKELES_OSSZES tanuloErtekeles' SET @joinSql = N' 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_OSZTALYCSOPORT_OSSZES rogziteskoriTanuloOsztaly ON rogziteskoriTanuloOsztaly.C_TANEVID = TanuloErtekeles.C_TANEVID AND rogziteskoriTanuloOsztaly.TOROLT = ''F'' AND rogziteskoriTanuloOsztaly.ID = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID INNER JOIN T_FELHASZNALO_OSSZES tanuloFelhasznalo ON tanuloFelhasznalo.C_TANEVID = tanuloErtekeles.C_TANEVID AND tanuloFelhasznalo.TOROLT = ''F'' AND tanuloFelhasznalo.ID = tanuloErtekeles.C_TANULOID INNER JOIN T_FELHASZNALO_OSSZES ertekeloFelhasznalo ON ertekeloFelhasznalo.C_TANEVID = tanuloErtekeles.C_TANEVID AND ertekeloFelhasznalo.TOROLT = ''F'' AND ertekeloFelhasznalo.ID = tanuloErtekeles.C_ERTEKELOID INNER JOIN T_OSZTALYCSOPORT_OSSZES osztalyCsoport ON osztalyCsoport.C_TANEVID = tanuloErtekeles.C_TANEVID AND osztalyCsoport.TOROLT = ''F'' AND osztalyCsoport.ID = tanuloErtekeles.C_OSZTALYCSOPORTID' SET @whereSql = N' WHERE tanuloErtekeles.C_TANEVID = @pTanevId AND tanuloErtekeles.TOROLT = ''F''' IF @pTanuloId IS NOT NULL BEGIN SET @whereSql += N' AND tanuloErtekeles.C_TANULOID = @pTanuloId' END IF @pOsztalyCsoportId IS NOT NULL BEGIN SET @preSelectSql += N' CREATE TABLE #OsztalyCsoportIdList( ID INT PRIMARY KEY ) INSERT INTO #OsztalyCsoportIdList (ID) SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(@pOsztalyCsoportId)' SET @joinSql += N' 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())' SET @whereSql += N' AND osztalyCsoport.ID IN (SELECT ID FROM #OsztalyCsoportIdList) AND EXISTS ( SELECT 1 FROM T_TANULOCSOPORT_OSSZES tanuloCsoport WHERE tanuloCsoport.C_TANEVID = tanuloErtekeles.C_TANEVID AND tanuloCsoport.TOROLT = ''F'' AND tanuloCsoport.C_OSZTALYCSOPORTID = @pOsztalyCsoportId AND tanuloCsoport.C_TANULOID = tanuloFelhasznalo.ID )' SET @postSelectSql += N' DROP TABLE IF EXISTS #OsztalyCsoportIdList' END IF @pCsoportTipusId IS NOT NULL BEGIN SET @joinSql += N' LEFT JOIN T_CSOPORT_OSSZES csoport ON csoport.C_ALTANEVID = tanuloErtekeles.C_TANEVID AND csoport.TOROLT = ''F'' AND csoport.ID = osztalyCsoport.ID' SET @whereSql += N' AND csoport.C_TIPUSA = @pCsoportTipusId' END IF @pTantargyId IS NOT NULL BEGIN SET @whereSql += N' AND tantargy.ID = @pTantargyId' END IF @pErtekeloId IS NOT NULL BEGIN SET @whereSql += N' AND ertekeloFelhasznalo.ID = @pErtekeloId' END IF @pOsztalyzatId IS NOT NULL BEGIN SET @whereSql += N' AND (tanuloErtekeles.C_ERTEKELESOSZTALYZATID = @pOsztalyzatId OR tanuloErtekeles.C_MAGATARTASOSZTALYZATID = @pOsztalyzatId OR tanuloErtekeles.C_SZORGALOMOSZTALYZATID = @pOsztalyzatId)' END IF @pErtekelesModId IS NOT NULL BEGIN SET @whereSql += N' AND tanuloErtekeles.C_ERTEKELESMODID = @pErtekelesModId' END IF @pTipusId IS NOT NULL BEGIN SET @whereSql += N' AND tanuloErtekeles.C_TIPUSID = @pTipusId' END IF @pDatumTol IS NOT NULL BEGIN --NOTE: Ide az adott nap 00:00:00 időponttal fog bejönni. SET @whereSql += N' AND tanuloErtekeles.C_DATUM >= @pDatumTol' END IF @pDatumIg IS NOT NULL BEGIN --NOTE: Ide az adott nap 23:59:59 időponttal fog bejönni. SET @whereSql += N' AND tanuloErtekeles.C_DATUM <= @pDatumIg' END IF @pRogzitesDatumTol IS NOT NULL BEGIN --NOTE: Ide az adott nap 00:00:00 időponttal fog bejönni. SET @whereSql += N' AND tanuloErtekeles.C_ROGZITESDATUM >= @pRogzitesDatumTol' END IF @pRogzitesDatumIg IS NOT NULL BEGIN --NOTE: Ide az adott nap 23:59:59 időponttal fog bejönni. SET @whereSql += N' AND tanuloErtekeles.C_ROGZITESDATUM <= @pRogzitesDatumIg' END IF @pErtekelesSzoveg IS NOT NULL BEGIN SET @whereSql += N' AND (tanuloErtekeles.C_ERTEKELESSZOVEG LIKE ''%'' + @pErtekelesSzoveg + ''%'' OR tanuloErtekeles.C_MAGATARTASSZOVEG LIKE ''%'' + @pErtekelesSzoveg + ''%'' OR tanuloErtekeles.C_SZORGALOMSZOVEG LIKE ''%'' + @pErtekelesSzoveg + ''%'')' END IF @pErtekelesTema IS NOT NULL BEGIN SET @whereSql += N' AND tanuloErtekeles.C_ERTEKELESTEMA LIKE ''%'' + @pErtekelesTema + ''%''' 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