kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20180502163116_KRETA_5590/fnGetDokumentumErtekelesekOsztalyonkent.sql
2024-03-13 00:33:46 +01:00

228 lines
9.6 KiB
Transact-SQL

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('fnGetDokumentumErtekelesekOsztalyonkent') IS NOT NULL
BEGIN
DROP FUNCTION fnGetDokumentumErtekelesekOsztalyonkent
END
GO
CREATE FUNCTION fnGetDokumentumErtekelesekOsztalyonkent (@tanevId INT, @osztalyCsoportId INT, @ertekelesTipusa INT = NULL, @csakTanorai BIT = 1, @csakKivlasztottOsztalyCsoport BIT = 0, @atsoroltTanuloErtekelesek INT = 0)
RETURNS @retTanuloErtekeles TABLE
(
ErtekelesId INT NOT NULL,
Datum DATE,
TipusId INT,
ErtekelesSzoveg NVARCHAR(MAX),
ErtekelesSzovegRovidNev NVARCHAR(3),
ErtekelesOsztalyzatId INT,
ErtekelesOsztalyzatValue INT,
ErtekelesOsztalyzatNev NVARCHAR(MAX),
ErtekelesSzazalek NVARCHAR(MAX),
MagatartasOsztalyzatId INT,
MagatartasOsztalyzatValue INT,
MagatartasOsztalyzatNev NVARCHAR(MAX),
MagatartasSzoveg NVARCHAR(MAX),
MagatartasSzovegRovidNev NVARCHAR(3),
MagatartasErtekId INT,
MagatartasErtek NVARCHAR(MAX),
MagatartasErtekOsztalyzatkent INT,
SzorgalomOsztalyzatId INT,
SzorgalomOsztalyzatValue INT,
SzorgalomOsztalyzatNev NVARCHAR(MAX),
SzorgalomSzoveg NVARCHAR(MAX),
SzorgalomSzovegRovidNev NVARCHAR(3),
SzorgalomErtekId INT,
SzorgalomErtek NVARCHAR(MAX),
SzorgalomErtekOsztalyzatkent INT,
TanuloId INT,
TanuloCsoportId INT,
OsztalyCsoportId INT,
TantargyId INT,
TantargyNevZarojellel NVARCHAR(MAX),
TantargyNevNyomtatvanyban NVARCHAR(MAX),
TantargyNev NVARCHAR(MAX),
TargyKategoriaId INT,
FotargyE CHAR(1),
Altantargy CHAR(1),
FotargyId INT,
ErtekelesTema NVARCHAR(MAX),
ErtekeloId INT,
ErtekelesModjaId INT,
IsMagatartasSzorgalom CHAR(1),
Jeloles NVARCHAR(MAX),
JelolesAndErtekelesTema NVARCHAR(MAX)
)
AS
BEGIN
INSERT INTO @retTanuloErtekeles
SELECT DISTINCT
[tanuloErtekeles].[ID] [ErtekelesId],
[tanuloErtekeles].[C_DATUM] [Datum],
[tanuloErtekeles].[C_TIPUSID] [TipusId],
[tanuloErtekeles].[C_ERTEKELESSZOVEG] [ErtekelesSzoveg],
[tanuloErtekeles].[C_ERTEKELESSZOVEGROVIDNEV] [ErtekelesSzovegRovidNev],
[tanuloErtekeles].[C_ERTEKELESOSZTALYZATID] [ErtekelesOsztalyzatId],
[ertekelesOsztalyzat].[C_VALUE] [ErtekelesOsztalyzatValue],
[ertekelesOsztalyzat].[C_NAME] [ErtekelesOsztalyzatNev],
IIF([tanuloErtekeles].[C_ERTEKELESSZAZALEK] IS NOT NULL --
, CONVERT(NVARCHAR(3), [tanuloErtekeles].[C_ERTEKELESSZAZALEK])+'%' --
, NULL) [ErtekelesSzazalek],
[tanuloErtekeles].[C_MAGATARTASOSZTALYZATID] [MagatartasOsztalyzatId],
[magatartasOsztalyzat].[C_VALUE] [MagatartasOsztalyzatValue],
[magatartasOsztalyzat].[C_NAME] [MagatartasOsztalyzatNev],
[tanuloErtekeles].[C_MAGATARTASSZOVEG] [MagatartasSzoveg],
[tanuloErtekeles].[C_MAGATARTASSZOVEGROVIDNEV] [MagatartasSzovegRovidNev],
[tanuloErtekeles].[C_MAGATARTASERTEKID] [MagatartasErtekId],
[magatartasErtek].[C_NAME] [MagatartasErtek],
[magatartasErtek].[C_VALUE] + 1 [MagatartasErtekOsztalyzatkent],
[tanuloErtekeles].[C_SZORGALOMOSZTALYZATID] [SzorgalomOsztalyzatId],
[szorgalomOsztalyzat].[C_VALUE] [SzorgalomOsztalyzatValue],
[szorgalomOsztalyzat].[C_NAME] [SzorgalomOsztalyzatNev],
[tanuloErtekeles].[C_SZORGALOMSZOVEG] [SzorgalomSzoveg],
[tanuloErtekeles].[C_SZORGALOMSZOVEGROVIDNEV] [SzorgalomSzovegRovidNev],
[tanuloErtekeles].[C_SZORGALOMERTEKID] [SzorgalomErtekId],
[szorgalomErtek].[C_NAME] [SzorgalomErtek],
[szorgalomErtek].[C_VALUE] + 1 [SzorgalomErtekOsztalyzatkent],
[tanuloErtekeles].[C_TANULOID] [TanuloId],
TanuloCsoportId,
[tanuloErtekeles].[C_OSZTALYCSOPORTID] [OsztalyCsoportId],
[tanuloErtekeles].[C_TANTARGYID] [TantargyId],
IIF([tantargy].[C_NEV] <> [tantargy].[C_NEVNYOMTATVANYBAN]
AND [tantargy].[C_NEVNYOMTATVANYBAN] IS NOT NULL --
, [C_NEVNYOMTATVANYBAN]+' ('+[tantargy].[C_NEV]+')' --
, [tantargy].[C_NEV]) [TantargyNevZarojellel],
[tantargy].[C_NEVNYOMTATVANYBAN] [TantargyNevNyomtatvanyban],
[tantargy].[C_NEV] [TantargyNev],
[tantargy].[C_TARGYKATEGORIA] [TargyKategoriaId],
[tantargy].[C_FOTARGYE] [FotargyE],
[tantargy].[C_ALTANTARGYKENTNYOMTATVANYBAN] [Altantargy],
[tantargy].[C_FOTARGYID] [FotargyId],
[tanuloErtekeles].[C_ERTEKELESTEMA] [ErtekelesTema],
[tanuloErtekeles].[C_ERTEKELOID] [ErtekeloId],
[tanuloErtekeles].[C_ERTEKELESMODID] [ErtekelesModjaId],
[tanuloErtekeles].[C_ISMAGATARTASSZORGALOM] [IsMagatartasSzorgalom],
IIF( --
[tanuloErtekeles].[C_ERTEKELESTEMA] IS NOT NULL
AND [tanuloErtekeles].[C_TIPUSID] IN(1519, 1520), '<i>('+CAST(CHAR(ROW_NUMBER() OVER(PARTITION BY [tanuloErtekeles].[C_TANULOID],
[tanuloErtekeles].[C_TIPUSID],
IIF([tanuloErtekeles].[C_ERTEKELESTEMA] IS NOT NULL, 1, 0) ORDER BY [tanuloErtekeles].[C_DATUM])+96) AS NVARCHAR(10))+')</i>', '') [Jeloles],
IIF( --
[tanuloErtekeles].[C_ERTEKELESTEMA] IS NOT NULL
AND [tanuloErtekeles].[C_TIPUSID] IN(1519, 1520), '<i>('+CAST(CHAR(ROW_NUMBER() OVER(PARTITION BY [tanuloErtekeles].[C_TANULOID],
[tanuloErtekeles].[C_TIPUSID],
IIF([tanuloErtekeles].[C_ERTEKELESTEMA] IS NOT NULL, 1, 0) ORDER BY [tanuloErtekeles].[C_DATUM])+96) AS NVARCHAR(10))+')</i>: '+[tanuloErtekeles].[C_ERTEKELESTEMA], '') [JelolesAndErtekelesTema]
FROM
[T_TANULOERTEKELES_OSSZES] [tanuloErtekeles]
INNER JOIN
[fnGetDokumentumOsztalyokCsoportokTanuloi](@tanevId, @osztalyCsoportId, 'T') [tanulo] ON [tanulo].[TanuloId] = [tanuloErtekeles].[C_TANULOID]
INNER JOIN
[T_TANULOCSOPORT_OSSZES] [TanuloCsoport] ON [TanuloCsoport].[C_TANULOID] = [tanuloErtekeles].[C_TANULOID]
AND [TanuloCsoport].[C_OSZTALYCSOPORTID] = [tanuloErtekeles].[C_OSZTALYCSOPORTID]
AND [tanuloErtekeles].[C_DATUM] BETWEEN [TanuloCsoport].[C_BELEPESDATUM] AND ISNULL([TanuloCsoport].[C_KILEPESDATUM], GETDATE())
AND [TanuloCsoport].[TOROLT] = 'F'
LEFT JOIN
[T_TANTARGY_OSSZES] [tantargy] ON [tantargy].[Id] = [tanuloErtekeles].[C_TANTARGYID]
AND ([tantargy].[C_TARGYKATEGORIA] <> 1248
OR [tantargy].[C_TARGYKATEGORIA] IS NULL)
LEFT JOIN
[T_DICTIONARYITEMBASE_OSSZES] [ertekelesOsztalyzat] ON [ertekelesOsztalyzat].[ID] = [tanuloErtekeles].[C_ERTEKELESOSZTALYZATID]
AND [ertekelesOsztalyzat].[C_TANEVID] = @tanevId
AND [ertekelesOsztalyzat].[C_TYPE] LIKE 'OsztalyzatTipus'
LEFT JOIN
[T_DICTIONARYITEMBASE_OSSZES] [magatartasOsztalyzat] ON [magatartasOsztalyzat].[ID] = [tanuloErtekeles].[C_MAGATARTASOSZTALYZATID]
AND [magatartasOsztalyzat].[C_TANEVID] = @tanevId
AND [magatartasOsztalyzat].[C_TYPE] LIKE 'OsztalyzatTipus'
LEFT JOIN
[T_DICTIONARYITEMBASE_OSSZES] [szorgalomOsztalyzat] ON [szorgalomOsztalyzat].[ID] = [tanuloErtekeles].[C_SZORGALOMOSZTALYZATID]
AND [szorgalomOsztalyzat].[C_TANEVID] = @tanevId
AND [szorgalomOsztalyzat].[C_TYPE] LIKE 'OsztalyzatTipus'
LEFT JOIN
[T_DICTIONARYITEMBASE_OSSZES] [magatartasErtek] ON [magatartasErtek].[ID] = [tanuloErtekeles].[C_MAGATARTASERTEKID]
AND [magatartasErtek].[C_TANEVID] = @tanevId
AND [magatartasErtek].[C_TYPE] LIKE 'MagatartasErtekelesTipus'
LEFT JOIN
[T_DICTIONARYITEMBASE_OSSZES] [szorgalomErtek] ON [szorgalomErtek].[ID] = [tanuloErtekeles].[C_SZORGALOMERTEKID]
AND [szorgalomErtek].[C_TANEVID] = @tanevId
AND [szorgalomErtek].[C_TYPE] LIKE 'SzorgalomErtekelesTipus'
INNER JOIN
[T_OSZTALYCSOPORT_OSSZES] [osztalyCsoport] ON [osztalyCsoport].[ID] = [tanuloErtekeles].[C_OSZTALYCSOPORTID]
AND [osztalyCsoport].[TOROLT] = 'F'
LEFT JOIN
[T_CSOPORT_OSSZES] [csoport] ON [csoport].[ID] = [tanuloErtekeles].[C_OSZTALYCSOPORTID]
LEFT JOIN
[T_OSZTALY_OSSZES] [osztaly] ON [osztaly].[ID] = [tanuloErtekeles].[C_OSZTALYCSOPORTID]
WHERE [tanuloErtekeles].[Torolt] = 'F'
AND (@atsoroltTanuloErtekelesek > 0
OR ([tanuloErtekeles].[C_OSZTALYCSOPORTID] IN
(
SELECT
[ID]
FROM
[fnGetDokumentumKapcsolodoOsztalycsoportok](@osztalyCsoportId, @tanevId)
)))
AND (@ertekelesTipusa IS NULL
OR [C_TIPUSID] = @ertekelesTipusa)
AND (@csakKivlasztottOsztalyCsoport = 0
OR [tanuloErtekeles].[C_OSZTALYCSOPORTID] = @osztalyCsoportId)
AND (@csakTanorai = 0
OR [osztaly].[ID] IS NOT NULL
OR ([csoport].[ID] IS NOT NULL
AND [csoport].[C_TIPUSA] IN
(
SELECT
[ID]
FROM
[fnGetTanoraiCeluCsoportTipusok](@tanevId)
)))
option (recompile);
IF @atsoroltTanuloErtekelesek = 1
BEGIN
DECLARE @osztalyTantargyak TABLE
(
[TantargyId] INT
);
INSERT INTO @osztalyTantargyak
SELECT DISTINCT
[TantargyId]
FROM
@retTanuloErtekeles
WHERE [OsztalyCsoportId] IN
(
SELECT
[ID]
FROM
[fnGetDokumentumKapcsolodoOsztalycsoportok](@osztalyCsoportId, @tanevId)
)
UNION
SELECT DISTINCT
[C_TANTARGYID]
FROM
[T_FOGLALKOZAS_OSSZES]
INNER JOIN
[fnGetDokumentumKapcsolodoOsztalycsoportok](@osztalyCsoportId, @tanevId) AS [OSZTALYCSOPORT] ON [OSZTALYCSOPORT].[ID] = [T_FOGLALKOZAS_OSSZES].[C_OSZTALYCSOPORTID]
WHERE [T_FOGLALKOZAS_OSSZES].[TOROLT] = 'F';
DELETE FROM @retTanuloErtekeles
WHERE
[ErtekelesId] NOT IN
(
SELECT
[ErtekelesId]
FROM
@retTanuloErtekeles
WHERE [TantargyId] IS NULL
OR [TantargyId] IN
(
SELECT
[TantargyId]
FROM
@osztalyTantargyak
)
);
END
RETURN
END;
GO