kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20190620153321_KRETA2_192/uspGetTanuloErtekelesDetailDataSet.sql
2024-03-13 00:33:46 +01:00

242 lines
9.7 KiB
Transact-SQL

-- =============================================
-- Description: <Előszedjük a tanuló értékeléseket részletesen>
-- =============================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DROP PROCEDURE IF EXISTS [dbo].[uspGetTanuloErtekelesDetailDataSet]
GO
CREATE PROCEDURE [dbo].[uspGetTanuloErtekelesDetailDataSet]
@pIntezmenyId INT
,@pTanevId INT
,@pTanuloId INT
,@pTantargyId INT = NULL
,@pShowToroltElemek BIT
,@pTanarId INT
,@pErtekelesMegjelenesFajtaEnumTantargyId INT
,@pErtekelesMegjelenesFajtaEnumMagatartasSzorgalomId INT
,@pErtekelesMegjelenesFajtaId INT
,@pDatum DATE = NULL
,@pFeladatKategoriaId INT
,@pAmiKategoriaId INT
,@pAlapKategoriaId INT
,@pKiiratkozottNeJelenjenMeg BIT = 1
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.
SET NOCOUNT ON;
IF @pDatum IS NULL
SET @pDatum = CONVERT(DATE, GETDATE())
DECLARE @evfolyamTipusId INT = (SELECT TOP 1 EvfolyamTipusId FROM dbo.fnGetTanuloOsztaly(@pTanuloId, @pDatum, @pAlapKategoriaId, @pKiiratkozottNeJelenjenMeg) ORDER BY BelepesDatuma DESC)
DECLARE @sql NVARCHAR(MAX) = ''
IF @pFeladatKategoriaId = @pAlapKategoriaId OR @pFeladatKategoriaId IS NULL
BEGIN
SET @sql += N'
SELECT
TanuloErtekeles.ID ID
,TanuloErtekeles.C_DATUM Datum
,TanuloErtekeles.C_ROGZITESDATUM RogzitesDatum
,TanuloErtekeles.C_TIPUSID TipusId
,TanuloErtekeles.C_ISERTESITESELKULDVE IsErtesitesElkuldve
,TanuloErtekeles.C_TANORAID TanoraId
,TanuloErtekeles.C_ERTEKELESOSZTALYZATID ErtekelesOsztalyzatId
,TanuloErtekeles.C_ERTEKELESSZOVEG ErtekelesSzoveg
,TanuloErtekeles.C_ERTEKELESSZOVEGROVIDNEV ErtekelesSzovegRovidNev
,TanuloErtekeles.C_ERTEKELESSZAZALEK ErtekelesSzazalek
,TanuloErtekeles.C_ERTEKELESMODID ErtekelesModId
,TanuloErtekeles.C_ERTEKELESTEMA ErtekelesTema
,TanuloErtekeles.C_MAGATARTASOSZTALYZATID MagatartasOsztalyzatId
,TanuloErtekeles.C_MAGATARTASSZOVEG MagatartasSzoveg
,TanuloErtekeles.C_MAGATARTASSZOVEGROVIDNEV MagatartasSzovegRovidNev
,TanuloErtekeles.C_MAGATARTASERTEKID MagatartasErtekId
,TanuloErtekeles.C_SZORGALOMOSZTALYZATID SzorgalomOsztalyzatId
,TanuloErtekeles.C_SZORGALOMSZOVEG SzorgalomSzoveg
,TanuloErtekeles.C_SZORGALOMSZOVEGROVIDNEV SzorgalomSzovegRovidNev
,TanuloErtekeles.C_SZORGALOMERTEKID SzorgalomErtekId
,TanuloErtekeles.C_ISMAGATARTASSZORGALOM IsMagatartasSzorgalom
,TanuloErtekeles.CREATED Created
,TanuloErtekeles.TOROLT Torolt
,TanuloErtekeles.C_TANULOID TanuloId
,TanariAtlagSuly.C_SULY Suly
,Felhasznalo.C_NYOMTATASINEV ErtekeloNyomtatasiNev
,Tantargy.C_TARGYKATEGORIA TantargyKategoriaId
,CASE
WHEN TanuloErtekeles.C_ERTEKELOID = @pTanarId
THEN ''T''
ELSE ''F''
END Modosithato
FROM
T_TANULOERTEKELES_OSSZES AS TanuloErtekeles
INNER JOIN
T_OSZTALYCSOPORT Osztaly ON
Osztaly.ID = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID
AND Osztaly.TOROLT = ''F''
AND Osztaly.C_INTEZMENYID = @pIntezmenyId
AND Osztaly.C_TANEVID = @pTanevId
AND Osztaly.C_EVFOLYAMTIPUSA = @evfolyamTipusId
LEFT JOIN
T_TANTARGY Tantargy ON
Tantargy.ID = TanuloErtekeles.C_TANTARGYID
'
IF @pKiiratkozottNeJelenjenMeg = 1
BEGIN
SET @sql += N'
INNER JOIN
T_TANULOCSOPORT TanuloCsoport ON TanuloCsoport.C_OSZTALYCSOPORTID = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID
AND TanuloCsoport.C_TANULOID = @pTanuloId
AND TanuloCsoport.C_BELEPESDATUM <= GETDATE()
AND (TanuloCsoport.C_KILEPESDATUM IS NULL OR TanuloCsoport.C_KILEPESDATUM >= GETDATE())
AND TanuloCsoport.TOROLT = ''F'' '
END
SET @sql += N'
INNER JOIN
T_FELHASZNALO_OSSZES AS Felhasznalo ON
Felhasznalo.TOROLT = ''F''
AND Felhasznalo.C_INTEZMENYID = @pIntezmenyId
AND Felhasznalo.C_TANEVID = @pTanevId
AND Felhasznalo.ID = TanuloErtekeles.C_ERTEKELOID
LEFT JOIN
T_TANARIATLAGSULY_OSSZES AS TanariAtlagSuly ON
TanariAtlagSuly.TOROLT = ''F''
AND TanariAtlagSuly.C_INTEZMENYID = @pIntezmenyId
AND TanariAtlagSuly.C_TANEVID = @pTanevId
AND TanuloErtekeles.C_ISMAGATARTASSZORGALOM = ''F''
AND TanariAtlagSuly.C_ERTEKELESMODID = TanuloErtekeles.C_ERTEKELESMODID
WHERE
--Ha a @pShowToroltElemek változó True, akkor a törölt elemeket is visszaadjuk!
TanuloErtekeles.TOROLT = IIF(@pShowToroltElemek = 1, TanuloErtekeles.TOROLT, ''F'')
AND TanuloErtekeles.C_INTEZMENYID = @pIntezmenyId
AND TanuloErtekeles.C_TANEVID = @pTanevId
AND TanuloErtekeles.C_TANULOID = @pTanuloId
AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NOT NULL
'
SET @sql +=
CASE
WHEN @pErtekelesMegjelenesFajtaId = @pErtekelesMegjelenesFajtaEnumTantargyId
THEN N' AND (TanuloErtekeles.C_ISMAGATARTASSZORGALOM = ''F'' AND TanuloErtekeles.C_TANTARGYID = @pTantargyId)'
WHEN @pErtekelesMegjelenesFajtaId = @pErtekelesMegjelenesFajtaEnumMagatartasSzorgalomId
THEN N' AND (TanuloErtekeles.C_ISMAGATARTASSZORGALOM = ''T'' AND TanuloErtekeles.C_TANTARGYID IS NULL)'
ELSE N' AND ((TanuloErtekeles.C_ISMAGATARTASSZORGALOM = ''F''AND TanuloErtekeles.C_TANTARGYID = @pTantargyId AND @pTantargyId IS NOT NULL) OR
(TanuloErtekeles.C_ISMAGATARTASSZORGALOM = ''T'' AND TanuloErtekeles.C_TANTARGYID IS NULL AND @pTantargyId IS NULL)) '
END
END
IF @pFeladatKategoriaId IS NULL
BEGIN
SET @sql += N'
UNION ALL '
END
IF @pFeladatKategoriaId = @pAmiKategoriaId OR @pFeladatKategoriaId IS NULL
BEGIN
-- NOTE: Ami-s értékelésnél a C_ROGZITESKORITANULOOSZTALYID null, ezeket mindig meg kell jeleníteni
SET @sql += N'
SELECT
TanuloErtekeles.ID ID
,TanuloErtekeles.C_DATUM Datum
,TanuloErtekeles.C_ROGZITESDATUM RogzitesDatum
,TanuloErtekeles.C_TIPUSID TipusId
,TanuloErtekeles.C_ISERTESITESELKULDVE IsErtesitesElkuldve
,TanuloErtekeles.C_TANORAID TanoraId
,TanuloErtekeles.C_ERTEKELESOSZTALYZATID ErtekelesOsztalyzatId
,TanuloErtekeles.C_ERTEKELESSZOVEG ErtekelesSzoveg
,TanuloErtekeles.C_ERTEKELESSZOVEGROVIDNEV ErtekelesSzovegRovidNev
,TanuloErtekeles.C_ERTEKELESSZAZALEK ErtekelesSzazalek
,TanuloErtekeles.C_ERTEKELESMODID ErtekelesModId
,TanuloErtekeles.C_ERTEKELESTEMA ErtekelesTema
,TanuloErtekeles.C_MAGATARTASOSZTALYZATID MagatartasOsztalyzatId
,TanuloErtekeles.C_MAGATARTASSZOVEG MagatartasSzoveg
,TanuloErtekeles.C_MAGATARTASSZOVEGROVIDNEV MagatartasSzovegRovidNev
,TanuloErtekeles.C_MAGATARTASERTEKID MagatartasErtekId
,TanuloErtekeles.C_SZORGALOMOSZTALYZATID SzorgalomOsztalyzatId
,TanuloErtekeles.C_SZORGALOMSZOVEG SzorgalomSzoveg
,TanuloErtekeles.C_SZORGALOMSZOVEGROVIDNEV SzorgalomSzovegRovidNev
,TanuloErtekeles.C_SZORGALOMERTEKID SzorgalomErtekId
,TanuloErtekeles.C_ISMAGATARTASSZORGALOM IsMagatartasSzorgalom
,TanuloErtekeles.CREATED Created
,TanuloErtekeles.TOROLT Torolt
,TanuloErtekeles.C_TANULOID TanuloId
,TanariAtlagSuly.C_SULY Suly
,Felhasznalo.C_NYOMTATASINEV ErtekeloNyomtatasiNev
,Tantargy.C_TARGYKATEGORIA TantargyKategoriaId
,CASE
WHEN TanuloErtekeles.C_ERTEKELOID = @pTanarId
THEN ''T''
ELSE ''F''
END Modosithato
FROM
T_TANULOERTEKELES_OSSZES AS TanuloErtekeles
INNER JOIN
T_FELHASZNALO_OSSZES AS Felhasznalo ON
Felhasznalo.TOROLT = ''F''
AND Felhasznalo.C_INTEZMENYID = @pIntezmenyId
AND Felhasznalo.C_TANEVID = @pTanevId
AND Felhasznalo.ID = TanuloErtekeles.C_ERTEKELOID
LEFT JOIN
T_TANTARGY Tantargy ON
Tantargy.ID = TanuloErtekeles.C_TANTARGYID
LEFT JOIN
T_TANARIATLAGSULY_OSSZES AS TanariAtlagSuly ON
TanariAtlagSuly.TOROLT = ''F''
AND TanariAtlagSuly.C_INTEZMENYID = @pIntezmenyId
AND TanariAtlagSuly.C_TANEVID = @pTanevId
AND TanuloErtekeles.C_ISMAGATARTASSZORGALOM = ''F''
AND TanariAtlagSuly.C_ERTEKELESMODID = TanuloErtekeles.C_ERTEKELESMODID
WHERE
--Ha a @pShowToroltElemek változó True, akkor a törölt elemeket is visszaadjuk!
TanuloErtekeles.TOROLT = IIF(@pShowToroltElemek = 1, TanuloErtekeles.TOROLT, ''F'')
AND TanuloErtekeles.C_INTEZMENYID = @pIntezmenyId
AND TanuloErtekeles.C_TANEVID = @pTanevId
AND TanuloErtekeles.C_TANULOID = @pTanuloId
AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NULL
'
SET @sql +=
CASE
WHEN @pErtekelesMegjelenesFajtaId = @pErtekelesMegjelenesFajtaEnumTantargyId
THEN N' AND (TanuloErtekeles.C_ISMAGATARTASSZORGALOM = ''F'' AND TanuloErtekeles.C_TANTARGYID = @pTantargyId)'
WHEN @pErtekelesMegjelenesFajtaId = @pErtekelesMegjelenesFajtaEnumMagatartasSzorgalomId
THEN N' AND (TanuloErtekeles.C_ISMAGATARTASSZORGALOM = ''T'' AND TanuloErtekeles.C_TANTARGYID IS NULL)'
ELSE N' AND ((TanuloErtekeles.C_ISMAGATARTASSZORGALOM = ''F''AND TanuloErtekeles.C_TANTARGYID = @pTantargyId AND @pTantargyId IS NOT NULL) OR
(TanuloErtekeles.C_ISMAGATARTASSZORGALOM = ''T'' AND TanuloErtekeles.C_TANTARGYID IS NULL AND @pTantargyId IS NULL))'
END
END
SET @sql += ' ORDER BY
Datum DESC
,RogzitesDatum DESC'
EXEC sp_executesql @sql, N'
@pIntezmenyId INT
,@pTanevId INT
,@pTanuloId INT
,@pTantargyId INT = NULL
,@pShowToroltElemek BIT
,@pTanarId INT
,@evfolyamTipusId INT'
,@pIntezmenyId = @pIntezmenyId
,@pTanevId = @pTanevId
,@pTanuloId = @pTanuloId
,@pTantargyId = @pTantargyId
,@pShowToroltElemek = @pShowToroltElemek
,@pTanarId = @pTanarId
,@evfolyamTipusId = @evfolyamTipusId
END
GO