kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20190203130855_OM_1997/uspGetTanuloErtekelesListDataSet.sql
2024-03-13 00:33:46 +01:00

298 lines
10 KiB
Transact-SQL

-- =============================================
-- Description: <Előszedjük a tanuló értékeléseket a megadott paraméterek alapján>
-- =============================================
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