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

170 lines
7 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS uspGetTanuloErtekelesDetailDataSet
GO
CREATE PROCEDURE uspGetTanuloErtekelesDetailDataSet
@pTanevId int
,@pTanuloId int
,@pTantargyId int = NULL
,@pShowToroltElemek bit
,@pTanarId int
,@pErtekelesMegjelenesFajtaEnumTantargyId int
,@pErtekelesMegjelenesFajtaEnumMagatartasSzorgalomId int
,@pErtekelesMegjelenesFajtaId int
,@pDatum date = NULL
,@pAmiKategoriaId int
,@pFeladatKategoriaId int = NULL
,@pKiiratkozottNeJelenjenMeg bit = 1
,@pOsztalyCsoportId int = NULL
AS BEGIN
SET NOCOUNT ON;
DECLARE
@evfolyamTipusId int
,@sql nvarchar (max)
IF @pDatum IS NULL
SET @pDatum = CONVERT(date, GETDATE())
IF @pOsztalyCsoportId IS NULL
SELECT TOP (1)
@evfolyamTipusId = tanuloOsztaly.EvfolyamTipusId
FROM fnGetTanuloOsztaly(@pTanuloId, @pDatum, @pFeladatKategoriaId, @pKiiratkozottNeJelenjenMeg) tanuloOsztaly
ORDER BY tanuloOsztaly.BelepesDatuma DESC
ELSE
SELECT
@pFeladatKategoriaId = o.C_FELADATKATEGORIAID
,@evfolyamTipusId = o.C_EVFOLYAMTIPUSA
FROM T_OSZTALYCSOPORT_OSSZES o
WHERE ID = @pOsztalyCsoportId
SET @sql = N'
SELECT DISTINCT
TanuloErtekeles.ID AS ID
,TanuloErtekeles.C_DATUM AS Datum
,TanuloErtekeles.C_ROGZITESDATUM AS RogzitesDatum
,TanuloErtekeles.C_TIPUSID AS TipusId
,TanuloErtekeles.C_ISERTESITESELKULDVE AS IsErtesitesElkuldve
,TanuloErtekeles.C_TANORAID AS TanoraId
,TanuloErtekeles.C_ERTEKELESOSZTALYZATID AS ErtekelesOsztalyzatId
,TanuloErtekeles.C_ERTEKELESSZOVEG AS ErtekelesSzoveg
,TanuloErtekeles.C_ERTEKELESSZOVEGROVIDNEV AS ErtekelesSzovegRovidNev
,TanuloErtekeles.C_ERTEKELESSZAZALEK AS ErtekelesSzazalek
,TanuloErtekeles.C_ERTEKELESMODID AS ErtekelesModId
,TanuloErtekeles.C_ERTEKELESTEMA AS ErtekelesTema
,TanuloErtekeles.C_MAGATARTASOSZTALYZATID AS MagatartasOsztalyzatId
,TanuloErtekeles.C_MAGATARTASSZOVEG AS MagatartasSzoveg
,TanuloErtekeles.C_MAGATARTASSZOVEGROVIDNEV AS MagatartasSzovegRovidNev
,TanuloErtekeles.C_MAGATARTASERTEKID AS MagatartasErtekId
,TanuloErtekeles.C_SZORGALOMOSZTALYZATID AS SzorgalomOsztalyzatId
,TanuloErtekeles.C_SZORGALOMSZOVEG AS SzorgalomSzoveg
,TanuloErtekeles.C_SZORGALOMSZOVEGROVIDNEV AS SzorgalomSzovegRovidNev
,TanuloErtekeles.C_SZORGALOMERTEKID AS SzorgalomErtekId
,TanuloErtekeles.C_ISMAGATARTASSZORGALOM AS IsMagatartasSzorgalom
,TanuloErtekeles.CREATED AS Created
,TanuloErtekeles.TOROLT AS Torolt
,TanuloErtekeles.C_TANULOID AS TanuloId
,TanariAtlagSuly.C_SULY AS Suly
,Felhasznalo.C_NYOMTATASINEV AS ErtekeloNyomtatasiNev
,Tantargy.C_TARGYKATEGORIA AS TantargyKategoriaId
,CASE WHEN TanuloErtekeles.C_ERTEKELOID = @pTanarId THEN ''T'' ELSE ''F'' END AS Modosithato
FROM T_TANULOERTEKELES_OSSZES TanuloErtekeles
'
IF @pFeladatKategoriaId IS NOT NULL
BEGIN
IF @pFeladatKategoriaId <> @pAmiKategoriaId
BEGIN
SET @sql += N'
INNER JOIN T_OSZTALYCSOPORT_OSSZES Osztaly ON Osztaly.ID = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID AND Osztaly.TOROLT = IIF(@pShowToroltElemek = 1, TanuloErtekeles.TOROLT, ''F'')
AND Osztaly.C_TANEVID = TanuloErtekeles.C_TANEVID
AND Osztaly.C_EVFOLYAMTIPUSA = @evfolyamTipusId
AND Osztaly.C_FELADATKATEGORIAID = @pFeladatKategoriaId
INNER JOIN T_TANEV_OSSZES Tanev ON Tanev.ID = TanuloErtekeles.C_TANEVID AND Tanev.TOROLT = IIF(@pShowToroltElemek = 1, TanuloErtekeles.TOROLT, ''F'')
INNER JOIN T_TANULOCSOPORT_OSSZES TanuloCsoport ON TanuloCsoport.C_OSZTALYCSOPORTID = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID AND TanuloCsoport.C_TANULOID = @pTanuloId
AND TanuloCsoport.C_TANEVID = TanuloErtekeles.C_TANEVID
AND TanuloCsoport.C_BELEPESDATUM <= @pDatum
AND TanuloCsoport.TOROLT = IIF(@pShowToroltElemek = 1, TanuloErtekeles.TOROLT, ''F'')
'
IF @pKiiratkozottNeJelenjenMeg = 1
SET @sql += N'
AND (TanuloCsoport.C_KILEPESDATUM > @pDatum OR TanuloCsoport.C_KILEPESDATUM IS NULL OR TanuloCsoport.C_KILEPESDATUM >= Tanev.C_UTOLSOTANITASINAP)
'
END
ELSE
SET @sql += N'
INNER JOIN T_OSZTALYCSOPORT_OSSZES Osztaly ON Osztaly.ID = TanuloErtekeles.C_OSZTALYCSOPORTID AND Osztaly.TOROLT = IIF(@pShowToroltElemek = 1, TanuloErtekeles.TOROLT, ''F'')
AND Osztaly.C_TANEVID = TanuloErtekeles.C_TANEVID
AND Osztaly.C_EVFOLYAMTIPUSA = @evfolyamTipusId
AND Osztaly.C_FELADATKATEGORIAID = @pFeladatKategoriaId
'
END
SET @sql += N'
LEFT JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.C_TANEVID = TanuloErtekeles.C_TANEVID AND Tantargy.TOROLT = IIF(@pShowToroltElemek = 1, TanuloErtekeles.TOROLT, ''F'')
AND Tantargy.ID = TanuloErtekeles.C_TANTARGYID
INNER JOIN T_FELHASZNALO_OSSZES AS Felhasznalo ON Felhasznalo.TOROLT = IIF(@pShowToroltElemek = 1, TanuloErtekeles.TOROLT, ''F'') AND Felhasznalo.C_TANEVID = TanuloErtekeles.C_TANEVID
AND Felhasznalo.ID = TanuloErtekeles.C_ERTEKELOID
LEFT JOIN T_TANARIATLAGSULY_OSSZES AS TanariAtlagSuly ON TanariAtlagSuly.TOROLT = IIF(@pShowToroltElemek = 1, TanuloErtekeles.TOROLT, ''F'') AND TanariAtlagSuly.C_TANEVID = TanuloErtekeles.C_TANEVID
AND TanariAtlagSuly.C_ERTEKELESMODID = TanuloErtekeles.C_ERTEKELESMODID
AND TanuloErtekeles.C_ERTEKELESOSZTALYZATID IS NOT NULL
WHERE TanuloErtekeles.TOROLT = IIF(@pShowToroltElemek = 1, TanuloErtekeles.TOROLT, ''F'')
AND TanuloErtekeles.C_TANEVID = @pTanevId
AND TanuloErtekeles.C_TANULOID = @pTanuloId'
IF @pFeladatKategoriaId IS NOT NULL
BEGIN
IF @pFeladatKategoriaId = @pAmiKategoriaId
SET @sql += N'
AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NULL
'
ELSE
SET @sql += N'
AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NOT NULL
'
END
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
SET @sql += N'
ORDER BY
Datum DESC
,RogzitesDatum DESC'
EXEC sp_executesql @sql, N'
@pTanevId int
,@pTanuloId int
,@pTantargyId int
,@pShowToroltElemek bit
,@pTanarId int
,@evfolyamTipusId int
,@pFeladatKategoriaId int
,@pDatum date
'
,@pTanevId = @pTanevId
,@pTanuloId = @pTanuloId
,@pTantargyId = @pTantargyId
,@pShowToroltElemek = @pShowToroltElemek
,@pTanarId = @pTanarId
,@evfolyamTipusId = @evfolyamTipusId
,@pFeladatKategoriaId= @pFeladatKategoriaId
,@pDatum = @pDatum
END
GO