This commit is contained in:
skidoodle 2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View file

@ -0,0 +1,63 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_CheckTanuloEgyszerAdhatoTanuloErtekelesValidation]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_CheckTanuloEgyszerAdhatoTanuloErtekelesValidation]
END
GO
-- =============================================
-- Description: <Ellenőrizzuk, hogy a tanulónak van-e már egyszer adható tanuló értékelése, ha nincs akkor true, ha van akkor false>
-- =============================================
CREATE PROCEDURE [dbo].[sp_CheckTanuloEgyszerAdhatoTanuloErtekelesValidation]
@pId INT
,@pTipusId INT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets frominterfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @TanuloId INT
DECLARE @TantargyId INT
SELECT
@TanuloId = T_TANULOERTEKELES_OSSZES.C_TANULOID
,@TantargyId = T_TANULOERTEKELES_OSSZES.C_TANTARGYID
FROM
T_TANULOERTEKELES_OSSZES
WHERE
T_TANULOERTEKELES_OSSZES.ID = @pId
SET @TanuloId = (
SELECT
T_TANULOERTEKELES_OSSZES.C_TANULOID
FROM
T_TANULOERTEKELES_OSSZES
WHERE
T_TANULOERTEKELES_OSSZES.ID = @pId
)
IF EXISTS (
SELECT 1
FROM
T_TANULOERTEKELES_OSSZES
WHERE
T_TANULOERTEKELES_OSSZES.TOROLT = 'F'
AND T_TANULOERTEKELES_OSSZES.C_TIPUSID = @pTipusId
AND T_TANULOERTEKELES_OSSZES.C_TANULOID = @TanuloId
AND ((@TantargyId IS NOT NULL AND T_TANULOERTEKELES_OSSZES.C_TANTARGYID = @TantargyId) OR (@TantargyId IS NULL AND T_TANULOERTEKELES_OSSZES.C_TANTARGYID IS NULL))
AND T_TANULOERTEKELES_OSSZES.ID != @pId
)
SELECT 1
ELSE
SELECT 0
END
GO

View file

@ -0,0 +1,248 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_GenerateErtekelesekTempTabla]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_GenerateErtekelesekTempTabla]
END
GO
-- =============================================
-- Description: <Előszedi a tanuló értékeléseket, havi bontásban tantárgy és osztálycsoport alapján>
-- NOTE: EZT A HÁROM TÁROLT ELJÁRÁST EGYBEN KELL KEZELNI, HA MÓDOSÍTJUK!!!
-- - sp_GenerateErtekelesekTempTabla
-- - sp_GenerateErtekelesekMagatartasSzorgalomTempTabla
-- - sp_GenerateErtekelesekTempTablaByTanulo
-- =============================================
CREATE PROCEDURE [dbo].[sp_GenerateErtekelesekTempTabla]
@pTantargyId INT
,@pOsztalyCsoportId INT
,@pFelevVegeDatum DATE
,@pErtekelesTipusEvkozi INT
,@pErtekelesTipusFelevi INT
,@pErtekelesTipusEvvegi INT
,@pDatum DATE = NULL
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 = GETDATE()
DECLARE @TempDictionaryItem TABLE (
ID INT PRIMARY KEY
,C_VALUE INT
,C_ORDER INT
,C_INTEZMENYID INT
,C_TANEVID INT
)
INSERT INTO @TempDictionaryItem
SELECT
ID
,C_VALUE
,C_ORDER
,C_INTEZMENYID
,C_TANEVID
FROM
T_DICTIONARYITEMBASE
WHERE
C_TYPE IN ('OsztalyzatTipus')
AND TOROLT = 'F'
DECLARE @TempTanuloErtekeles TABLE (
ID INT
,Datum NVARCHAR(255)
,TipusId INT
,Honap NVARCHAR(2)
,TanuloId INT
,Nev NVARCHAR(255)
,ErtekelesOsztalyzat INT
,ErtekelesSzoveg NVARCHAR(MAX)
,ErtekelesSzovegRovidNev NVARCHAR(3)
,ErtekelesSzazalek INT
,Suly INT
)
INSERT INTO @TempTanuloErtekeles
SELECT DISTINCT *
FROM (
SELECT DISTINCT
tanuloErtekeles.ID ID
,tanuloErtekeles.C_DATUM Datum
,tanuloErtekeles.C_TIPUSID TipusId
,CASE WHEN tanuloErtekeles.C_TIPUSID = @pErtekelesTipusFelevi
THEN 'I'
WHEN tanuloErtekeles.C_TIPUSID = @pErtekelesTipusEvvegi
THEN 'II'
ELSE
CASE
WHEN CAST(tanuloErtekeles.C_DATUM AS DATE) > @pFelevVegeDatum
THEN CAST(MONTH(tanuloErtekeles.C_DATUM) + 1 AS NVARCHAR(2))
ELSE CAST(MONTH(tanuloErtekeles.C_DATUM) AS NVARCHAR(2))
END
END Honap
,tanuloCsoport.C_TANULOID TanuloId
,felhasznalo.C_NYOMTATASINEV Nev
,ertekelesOsztalyzat.C_VALUE ErtekelesOsztalyzat
,tanuloErtekeles.C_ERTEKELESSZOVEG ErtekelesSzoveg
,tanuloErtekeles.C_ERTEKELESSZOVEGROVIDNEV ErtekelesSzovegRovidNev
,tanuloErtekeles.C_ERTEKELESSZAZALEK ErtekelesSzazalek
,tanariAtlagSuly.C_SULY Suly
FROM (
SELECT
C_TANULOID
FROM
T_TANULOCSOPORT
WHERE
TOROLT = 'F'
AND C_BELEPESDATUM <= @pDatum
AND (C_KILEPESDATUM IS NULL OR C_KILEPESDATUM >= @pDatum)
AND C_OSZTALYCSOPORTID = @pOsztalyCsoportId
) AS tanuloCsoport
INNER JOIN (
SELECT
ID
,C_NYOMTATASINEV
FROM
T_FELHASZNALO
WHERE
TOROLT = 'F'
) AS felhasznalo ON
felhasznalo.ID = tanuloCsoport.C_TANULOID
LEFT JOIN (
SELECT
ID
,C_DATUM
,C_TIPUSID
,C_TANULOID
,C_ERTEKELESOSZTALYZATID
,C_ERTEKELESSZOVEG
,C_ERTEKELESSZOVEGROVIDNEV
,C_ERTEKELESSZAZALEK
,C_ERTEKELESMODID
FROM
T_TANULOERTEKELES
WHERE
TOROLT = 'F'
AND C_TANTARGYID = @pTantargyId
) AS tanuloErtekeles ON
tanuloErtekeles.C_TANULOID = tanuloCsoport.C_TANULOID
LEFT JOIN @TempDictionaryItem AS ertekelesOsztalyzat ON ertekelesOsztalyzat.ID = tanuloErtekeles.C_ERTEKELESOSZTALYZATID
LEFT JOIN T_TANARIATLAGSULY tanariAtlagSuly ON
tanariAtlagSuly.C_ERTEKELESMODID = tanuloErtekeles.C_ERTEKELESMODID
AND tanuloErtekeles.C_ERTEKELESOSZTALYZATID IS NOT NULL
AND tanariAtlagSuly.TOROLT = 'F'
) AS temp
SELECT
result.*
,result2.ErtkelesMentesseg
,result2.SzovegesenErtekelheto
FROM (
SELECT
pivotErtekelesek.TanuloId ID
,Nev Nev
,[9] [09]
,[10] [10]
,[11] [11]
,[12] [12]
,[1] [01I]
,[2] [01II]
,[3] [02]
,[4] [03]
,[5] [04]
,[6] [05]
,[7] [06]
,[I] [I]
,[II] [II]
,atlag.Jegy Atlag
,@pTantargyId TantargyId
FROM (
SELECT DISTINCT
tempErtekeles1.Nev
,STUFF (
(SELECT
','
+ ISNULL(CAST(tempErtekeles2.ErtekelesOsztalyzat AS VARCHAR(1)), '')
+ ISNULL(CAST(
CASE
WHEN tempErtekeles2.ErtekelesSzoveg IS NULL OR LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(tempErtekeles2.ErtekelesSzoveg, CHAR(9), ''), CHAR(10), ''), CHAR(13), ''))) = ''
THEN NULL
ELSE
ISNULL(tempErtekeles2.ErtekelesSzovegRovidNev, 'sz')
END AS VARCHAR(3)), '')
+ ISNULL(CAST(tempErtekeles2.ErtekelesSzazalek AS VARCHAR(3)), '')
FROM
@TempTanuloErtekeles tempErtekeles2
WHERE
tempErtekeles1.TanuloId = tempErtekeles2.TanuloId AND
tempErtekeles1.Honap = tempErtekeles2.Honap
FOR XML PATH ('')
), 1, 1, ''
) TanuloErtekelesList
,tempErtekeles1.Honap
,tempErtekeles1.TanuloId
FROM
@TempTanuloErtekeles tempErtekeles1
) AS erdemjegyek
PIVOT (
MAX(TanuloErtekelesList)
FOR Honap
IN ([I], [II], [9] ,[10] ,[11] ,[12] ,[1] ,[2] ,[3] ,[4] ,[5] ,[6], [7])
) AS pivotErtekelesek
LEFT JOIN (
SELECT
TanuloId TanuloId
,ROUND (
SUM(CAST(ErtekelesOsztalyzat AS FLOAT) * CAST(ISNULL(Suly, 100) AS FLOAT) / 100) / SUM(CAST(ISNULL(Suly, 100) AS FLOAT) / 100), 2
) Jegy
FROM
@TempTanuloErtekeles
WHERE
TipusId = @pErtekelesTipusEvkozi
AND ErtekelesOsztalyzat IS NOT NULL
GROUP BY
TanuloId
) AS atlag ON
pivotErtekelesek.TanuloId = atlag.TanuloId
) AS result
INNER JOIN (
SELECT DISTINCT
felhasznalo.ID ID
,tanuloMentesseg.C_ERTEKELESMENTESITES ErtkelesMentesseg
,tanuloMentesseg.C_SZOVEGESENERTEKELHETO SzovegesenErtekelheto
FROM
T_TANULOCSOPORT AS tanuloCsoport
INNER JOIN T_FELHASZNALO felhasznalo ON
felhasznalo.ID = tanuloCsoport.C_TANULOID
LEFT JOIN T_TANULOMENTESSEG tanuloMentesseg ON
tanuloMentesseg.C_TANULOID = felhasznalo.ID
AND tanuloMentesseg.TOROLT = 'F'
AND tanuloMentesseg.C_TANTARGYID = @pTantargyId
AND (tanuloMentesseg.C_KEZDETE IS NULL OR tanuloMentesseg.C_KEZDETE <= @pDatum)
AND (tanuloMentesseg.C_VEGE IS NULL OR tanuloMentesseg.C_VEGE >= @pDatum)
WHERE
tanuloCsoport.TOROLT = 'F'
AND tanuloCsoport.C_OSZTALYCSOPORTID = @pOsztalyCsoportId
AND tanuloCsoport.C_BELEPESDATUM <= @pDatum
AND (tanuloCsoport.C_KILEPESDATUM IS NULL OR tanuloCsoport.C_KILEPESDATUM >= @pDatum)
) AS result2 ON
result2.ID = result.ID
ORDER BY
result.Nev
IF OBJECT_ID('tempdb..#TempDictionaryItem') IS NOT NULL DROP TABLE #TempDictionaryItem
IF OBJECT_ID('tempdb..#TempTanuloErtekeles') IS NOT NULL DROP TABLE #TempTanuloErtekeles
END
GO

View file

@ -0,0 +1,361 @@
IF OBJECT_ID('[dbo].[sp_GenerateErtekelesekTempTablaByTanulo]') IS NOT NULL BEGIN
DROP PROCEDURE [dbo].[sp_GenerateErtekelesekTempTablaByTanulo]
END
GO
-- =============================================
-- Description: <Előszedi a tanulú értékeléseket, havi bontásban tanuló alapján>
-- NOTE: EZT A HÁROM TÁROLT ELJÁRÁST EGYBEN KELL KEZELNI, HA MÓDOSÍTJUK!!!
-- - sp_GenerateErtekelesekTempTabla
-- - sp_GenerateErtekelesekMagatartasSzorgalomTempTabla
-- - sp_GenerateErtekelesekTempTablaByTanulo
-- =============================================
CREATE PROCEDURE [dbo].[sp_GenerateErtekelesekTempTablaByTanulo]
@pTanuloId INT
,@pFotargyAltargyId INT = NULL
,@pFelevVegeDatum DATE
,@pErtekelesTipusEvkozi INT
,@pErtekelesTipusFelevi INT
,@pErtekelesTipusEvvegi INT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @TempDictionaryItem TABLE (
ID INT PRIMARY KEY
,C_VALUE INT
,C_ORDER INT
,C_INTEZMENYID INT
,C_TANEVID INT
)
INSERT INTO @TempDictionaryItem
SELECT
ID
,C_VALUE
,C_ORDER
,C_INTEZMENYID
,C_TANEVID
FROM
T_DICTIONARYITEMBASE
WHERE
C_TYPE IN ('OsztalyzatTipus', 'MagatartasErtekelesTipus', 'SzorgalomErtekelesTipus', 'TargyKategoriaTipus')
AND TOROLT = 'F'
DECLARE @TempTanuloErtekeles TABLE (
ID INT
,Datum NVARCHAR(255)
,TipusId INT
,Honap NVARCHAR(2)
,TanuloId INT
,Nev NVARCHAR(255)
,ErtekelesOsztalyzat INT
,ErtekelesSzoveg NVARCHAR(MAX)
,ErtekelesSzovegRovidNev NVARCHAR(3)
,ErtekelesSzazalek INT
,MagatartasOsztalyzat INT
,MagatartasSzoveg NVARCHAR(MAX)
,MagatartasSzovegRovidNev NVARCHAR(3)
,MagatartasErtek INT
,SzorgalomOsztalyzat INT
,SzorgalomSzoveg NVARCHAR(MAX)
,SzorgalomSzovegRovidNev NVARCHAR(3)
,SzorgalomErtek INT
,Suly INT
,TantargyId INT
,TantargyKategoria INT
,FotargyId INT
)
INSERT INTO @TempTanuloErtekeles (
ID
,Datum
,TipusId
,Honap
,TanuloId
,Nev
,ErtekelesOsztalyzat
,ErtekelesSzoveg
,ErtekelesSzovegRovidNev
,ErtekelesSzazalek
,MagatartasOsztalyzat
,MagatartasSzoveg
,MagatartasSzovegRovidNev
,MagatartasErtek
,SzorgalomOsztalyzat
,SzorgalomSzoveg
,SzorgalomSzovegRovidNev
,SzorgalomErtek
,Suly
,TantargyId
,TantargyKategoria
,FotargyId
)
SELECT DISTINCT *
FROM (
SELECT DISTINCT
tanuloErtekeles.ID ID
,tanuloErtekeles.C_DATUM Datum
,tanuloErtekeles.C_TIPUSID TipusId
,CASE
WHEN tanuloErtekeles.C_TIPUSID = @pErtekelesTipusFelevi
THEN 'I'
WHEN tanuloErtekeles.C_TIPUSID = @pErtekelesTipusEvvegi
THEN 'II'
ELSE
CASE
WHEN CAST(tanuloErtekeles.C_DATUM AS DATE) > @pFelevVegeDatum
THEN CAST(MONTH(tanuloErtekeles.C_DATUM) + 1 AS NVARCHAR(2))
ELSE CAST(MONTH(tanuloErtekeles.C_DATUM) AS NVARCHAR(2))
END
END Honap
,tanuloCsoport.C_TANULOID TanuloId
,tantargy.C_NEV Nev
,ertekelesOsztalyzat.C_VALUE ErtekelesOsztalyzat
,tanuloErtekeles.C_ERTEKELESSZOVEG ErtekelesSzoveg
,tanuloErtekeles.C_ERTEKELESSZOVEGROVIDNEV ErtekelesSzovegRovidNev
,tanuloErtekeles.C_ERTEKELESSZAZALEK ErtekelesSzazalek
,NULL AS MagatartasOsztalyzat
,NULL AS MagatartasSzoveg
,NULL AS MagatartasSzovegRovidNev
,NULL AS MagatartasErtek
,NULL AS SzorgalomOsztalyzat
,NULL AS SzorgalomSzoveg
,NULL AS SzorgalomSzovegRovidNev
,NULL AS SzorgalomErtek
,tanariAtlagSuly.C_SULY Suly
,tantargy.ID TantargyId
,tantargyKategoria.C_ORDER TantargyKategoria
,tantargy.C_FOTARGYID FotargyId
FROM T_TANULOCSOPORT AS tanuloCsoport
INNER JOIN T_ORARENDIORA orarendiOra ON orarendiOra.C_OSZTALYCSOPORTID = tanulocsoport.C_OSZTALYCSOPORTID AND orarendiOra.TOROLT = 'F'
INNER JOIN dbo.fnGetKapcsolodoTantargyak(@pFotargyAltargyId) AS tantargy ON
(@pFotargyAltargyId IS NULL AND tantargy.ID = orarendiOra.C_TANTARGYID)
OR (@pFotargyAltargyId IS NOT NULL AND tantargy.ID <> @pFotargyAltargyId)
OR (tantargy.ID IN (
SELECT
C_FOTARGYID
FROM
T_TANTARGY
WHERE
ID = orarendiOra.C_TANTARGYID
AND @pFotargyAltargyId IS NULL
AND TOROLT = 'F'
)
)
LEFT JOIN @TempDictionaryItem AS tantargyKategoria ON tantargyKategoria.ID = tantargy.C_TARGYKATEGORIA
LEFT JOIN T_TANULOERTEKELES tanuloErtekeles
ON tanuloErtekeles.C_TANULOID = @pTanuloId
AND tanuloErtekeles.C_TANTARGYID = tantargy.ID
AND tanuloErtekeles.TOROLT = 'F'
AND tanuloErtekeles.C_ISMAGATARTASSZORGALOM = 'F'
LEFT JOIN @TempDictionaryItem AS ertekelesOsztalyzat ON ertekelesOsztalyzat.ID = tanuloErtekeles.C_ERTEKELESOSZTALYZATID
LEFT JOIN T_TANARIATLAGSULY tanariAtlagSuly
ON tanariAtlagSuly.C_ERTEKELESMODID = tanuloErtekeles.C_ERTEKELESMODID
AND tanuloErtekeles.C_ERTEKELESOSZTALYZATID IS NOT NULL
AND tanariAtlagSuly.TOROLT = 'F'
WHERE tanuloCsoport.TOROLT = 'F'
AND tanuloCsoport.C_TANULOID = @pTanuloId
) AS temp
IF @pFotargyAltargyId IS NULL BEGIN
INSERT INTO @TempTanuloErtekeles (
ID
,Datum
,TipusId
,Honap
,TanuloId
,Nev
,ErtekelesOsztalyzat
,ErtekelesSzoveg
,ErtekelesSzovegRovidNev
,ErtekelesSzazalek
,MagatartasOsztalyzat
,MagatartasSzoveg
,MagatartasSzovegRovidNev
,MagatartasErtek
,SzorgalomOsztalyzat
,SzorgalomSzoveg
,SzorgalomSzovegRovidNev
,SzorgalomErtek
,Suly
,TantargyId
,TantargyKategoria
,FotargyId
)
SELECT DISTINCT
tanuloErtekeles.ID ID
,tanuloErtekeles.C_DATUM Datum
,tanuloErtekeles.C_TIPUSID TipusId
,CASE
WHEN tanuloErtekeles.C_TIPUSID = @pErtekelesTipusFelevi
THEN 'I'
WHEN tanuloErtekeles.C_TIPUSID = @pErtekelesTipusEvvegi
THEN 'II'
ELSE
CASE
WHEN CAST(tanuloErtekeles.C_DATUM AS DATE) > @pFelevVegeDatum
THEN CAST(MONTH(tanuloErtekeles.C_DATUM) + 1 AS NVARCHAR(2))
ELSE CAST(MONTH(tanuloErtekeles.C_DATUM) AS NVARCHAR(2))
END
END Honap
,tanuloErtekeles.C_TANULOID TanuloId
,'Magatartás/Szorgalom' Nev
,NULL AS ErtekelesOsztalyzat
,NULL AS ErtekelesSzoveg
,NULL AS ErtekelesSzovegRovidNev
,NULL AS ErtekelesSzazalek
,magatartasOsztalyzat.C_VALUE AS MagatartasOsztalyzat
,tanuloErtekeles.C_MAGATARTASSZOVEG AS MagatartasSzoveg
,tanuloErtekeles.C_MAGATARTASSZOVEGROVIDNEV AS MagatartasSzovegRovidNev
,magatartasErtek.C_VALUE AS MagatartasErtek
,szorgalomOsztalyzat.C_VALUE AS SzorgalomOsztalyzat
,tanuloErtekeles.C_SZORGALOMSZOVEG AS SzorgalomSzoveg
,tanuloErtekeles.C_SZORGALOMSZOVEGROVIDNEV AS SzorgalomSzovegRovidNev
,szorgalomErtek.C_VALUE AS SzorgalomErtek
,100 AS Suly
,0 AS TantargyId
,0 AS TantargyKategoria
,NULL AS FotargyId
FROM T_TANULOERTEKELES tanuloErtekeles
LEFT JOIN @TempDictionaryItem AS magatartasOsztalyzat ON magatartasOsztalyzat.ID = tanuloErtekeles.C_MAGATARTASOSZTALYZATID
LEFT JOIN @TempDictionaryItem AS szorgalomOsztalyzat ON szorgalomOsztalyzat.ID = tanuloErtekeles.C_SZORGALOMOSZTALYZATID
LEFT JOIN @TempDictionaryItem AS magatartasErtek ON magatartasErtek.ID = tanuloErtekeles.C_MAGATARTASERTEKID
LEFT JOIN @TempDictionaryItem AS szorgalomErtek ON szorgalomErtek.ID = tanuloErtekeles.C_SZORGALOMERTEKID
WHERE tanuloErtekeles.C_TANULOID = @pTanuloId
AND tanuloErtekeles.TOROLT = 'F'
AND tanuloErtekeles.C_ISMAGATARTASSZORGALOM = 'T'
END
SELECT
result.ID
,Nev
,[09]
,[10]
,[11]
,[12]
,[01I]
,[01II]
,[02]
,[03]
,[04]
,[05]
,[06]
,[I]
,[II]
,Atlag
,TantargyKategoria
,FotargyId
FROM (
SELECT
pivotErtekelesek.TantargyId ID
,Nev Nev
,[9] [09]
,[10] [10]
,[11] [11]
,[12] [12]
,[1] [01I]
,[2] [01II]
,[3] [02]
,[4] [03]
,[5] [04]
,[6] [05]
,[7] [06]
,[I] [I]
,[II] [II]
,atlag.Jegy Atlag
,pivotErtekelesek.TantargyKategoria TantargyKategoria
,pivotErtekelesek.FotargyId FotargyId
FROM (
SELECT DISTINCT
tempErtekeles1.Nev
,STUFF (
(SELECT
','
+ ISNULL(CAST(tempErtekeles2.ErtekelesOsztalyzat AS VARCHAR(1)), '')
+ ISNULL(CAST(
CASE
WHEN tempErtekeles2.ErtekelesSzoveg IS NULL OR LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(tempErtekeles2.ErtekelesSzoveg, CHAR(9), ''), CHAR(10), ''), CHAR(13), ''))) = ''
THEN NULL
ELSE
ISNULL(tempErtekeles2.ErtekelesSzovegRovidNev, 'sz')
END AS VARCHAR(3)), '')
+ ISNULL(CAST(tempErtekeles2.ErtekelesSzazalek AS VARCHAR(3)), '')
+ ISNULL(CAST(tempErtekeles2.MagatartasOsztalyzat AS VARCHAR(1)), '') + ','
+ ISNULL(CAST(tempErtekeles2.SzorgalomOsztalyzat AS VARCHAR(1)), '')
+ ISNULL(CAST(
CASE
WHEN tempErtekeles2.MagatartasSzoveg IS NULL OR LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(tempErtekeles2.MagatartasSzoveg, CHAR(9), ''), CHAR(10), ''), CHAR(13), ''))) = ''
THEN NULL
ELSE
ISNULL(tempErtekeles2.MagatartasSzovegRovidNev, 'sz')
END AS VARCHAR(3)), '') + ','
+ ISNULL(CAST(
CASE
WHEN tempErtekeles2.SzorgalomSzoveg IS NULL OR LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(tempErtekeles2.SzorgalomSzoveg, CHAR(9), ''), CHAR(10), ''), CHAR(13), ''))) = ''
THEN NULL
ELSE
ISNULL(tempErtekeles2.SzorgalomSzovegRovidNev, 'sz')
END AS VARCHAR(3)), '')
+ ISNULL(CAST(tempErtekeles2.MagatartasErtek AS VARCHAR(1)), '') + ','
+ ISNULL(CAST(tempErtekeles2.SzorgalomErtek AS VARCHAR(1)), '')
FROM @TempTanuloErtekeles tempErtekeles2
WHERE tempErtekeles1.TantargyId = tempErtekeles2.TantargyId
AND tempErtekeles1.Honap = tempErtekeles2.Honap
FOR XML PATH ('')
), 1, 1, ''
) TanuloErtekelesList
,tempErtekeles1.Honap
,tempErtekeles1.TanuloId
,tempErtekeles1.TantargyId
,tempErtekeles1.TantargyKategoria
,tempErtekeles1.FotargyId
FROM @TempTanuloErtekeles tempErtekeles1
) AS erdemjegyek
PIVOT (
MAX(TanuloErtekelesList)
FOR Honap
IN ([I], [II], [9] ,[10] ,[11] ,[12] ,[1] ,[2] ,[3] ,[4] ,[5] ,[6], [7])
) AS pivotErtekelesek
LEFT JOIN (
SELECT
TantargyId TantargyId
,ROUND (
SUM(CAST(ErtekelesOsztalyzat AS FLOAT) * CAST(ISNULL(Suly, 100) AS FLOAT) / 100) / SUM(CAST(ISNULL(Suly, 100) AS FLOAT) / 100), 2
) Jegy
FROM
@TempTanuloErtekeles
WHERE
TipusId = @pErtekelesTipusEvkozi
AND ErtekelesOsztalyzat IS NOT NULL
GROUP BY
TantargyId
) AS atlag ON
pivotErtekelesek.TantargyId = atlag.TantargyId
) AS result
LEFT JOIN
T_TANTARGY fotargy ON
result.FotargyId = fotargy.ID
LEFT JOIN @TempDictionaryItem targykategoria
ON targykategoria.ID = fotargy.C_TARGYKATEGORIA
AND targykategoria.C_INTEZMENYID = fotargy.C_INTEZMENYID
AND targykategoria.C_TANEVID = fotargy.C_TANEVID
ORDER BY
CASE WHEN result.FotargyId IS NULL THEN result.TantargyKategoria ELSE ISNULL(targykategoria.C_ORDER, 10000) END
,ISNULL(fotargy.C_NEV, result.Nev)
,ISNULL(result.FotargyId, result.ID)
,result.FotargyId
,result.Nev
IF OBJECT_ID('tempdb..#TempDictionaryItem') IS NOT NULL DROP TABLE #TempDictionaryItem
IF OBJECT_ID('tempdb..#TempTanuloErtekeles') IS NOT NULL DROP TABLE #TempTanuloErtekeles
END
GO

View file

@ -0,0 +1,222 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_GenerateMagatartasSzorgalomTempTabla]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_GenerateMagatartasSzorgalomTempTabla]
END
GO
-- =============================================
-- Description: <Előszedi a magatartás/szorgalom tanuló értékeléseket, havi bontásban osztálycsoport alapján>
-- NOTE: EZT A HÁROM TÁROLT ELJÁRÁST EGYBEN KELL KEZELNI, HA MÓDOSÍTJUK!!!
-- - sp_GenerateErtekelesekTempTabla
-- - sp_GenerateErtekelesekMagatartasSzorgalomTempTabla
-- - sp_GenerateErtekelesekTempTablaByTanulo
-- =============================================
CREATE PROCEDURE [dbo].[sp_GenerateMagatartasSzorgalomTempTabla]
@pOsztalyCsoportId INT
,@pFelevVegeDatum DATE
,@pErtekelesTipusEvkozi INT
,@pErtekelesTipusFelevi INT
,@pErtekelesTipusEvvegi INT
,@pDatum DATE = NULL
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 = GETDATE()
DECLARE @TempDictionaryItem TABLE (
ID INT PRIMARY KEY
,C_VALUE INT
,C_ORDER INT
,C_INTEZMENYID INT
,C_TANEVID INT
)
INSERT INTO @TempDictionaryItem
SELECT
ID
,C_VALUE
,C_ORDER
,C_INTEZMENYID
,C_TANEVID
FROM
T_DICTIONARYITEMBASE
WHERE
C_TYPE IN ('OsztalyzatTipus', 'MagatartasErtekelesTipus', 'SzorgalomErtekelesTipus')
AND TOROLT = 'F'
DECLARE @TempTanuloErtekeles TABLE (
ID INT
,Datum NVARCHAR(255)
,TipusId INT
,Honap NVARCHAR(2)
,TanuloId INT
,Nev NVARCHAR(255)
,MagatartasOsztalyzat INT
,MagatartasSzoveg NVARCHAR(MAX)
,MagatartasSzovegRovidNev NVARCHAR(3)
,MagatartasErtek INT
,SzorgalomOsztalyzat INT
,SzorgalomSzoveg NVARCHAR(MAX)
,SzorgalomSzovegRovidNev NVARCHAR(3)
,SzorgalomErtek INT
)
INSERT INTO @TempTanuloErtekeles
SELECT DISTINCT *
FROM (
SELECT DISTINCT
tanuloErtekeles.ID ID
,tanuloErtekeles.C_DATUM Datum
,tanuloErtekeles.C_TIPUSID TipusId
,CASE WHEN tanuloErtekeles.C_TIPUSID = @pErtekelesTipusFelevi
THEN 'I'
WHEN tanuloErtekeles.C_TIPUSID = @pErtekelesTipusEvvegi
THEN 'II'
ELSE
CASE
WHEN CAST(tanuloErtekeles.C_DATUM AS DATE) > @pFelevVegeDatum
THEN CAST(MONTH(tanuloErtekeles.C_DATUM) + 1 AS NVARCHAR(2))
ELSE CAST(MONTH(tanuloErtekeles.C_DATUM) AS NVARCHAR(2))
END
END Honap
,tanuloCsoport.C_TANULOID TanuloId
,felhasznalo.C_NYOMTATASINEV Nev
,magatartasOsztalyzat.C_VALUE MagatartasOsztalyzat
,tanuloErtekeles.C_MAGATARTASSZOVEG MagatartasSzoveg
,tanuloErtekeles.C_MAGATARTASSZOVEGROVIDNEV MagatartasSzovegRovidNev
,magatartasErtek.C_VALUE MagatartasErtek
,szorgalomOsztalyzat.C_VALUE SzorgalomOsztalyzat
,tanuloErtekeles.C_SZORGALOMSZOVEG SzorgalomSzoveg
,tanuloErtekeles.C_SZORGALOMSZOVEGROVIDNEV SzorgalomSzovegRovidNev
,szorgalomErtek.C_VALUE SzorgalomErtek
FROM (
SELECT
C_TANULOID
FROM
T_TANULOCSOPORT
WHERE
TOROLT = 'F'
AND C_BELEPESDATUM <= @pDatum
AND (C_KILEPESDATUM IS NULL OR C_KILEPESDATUM >= @pDatum)
AND C_OSZTALYCSOPORTID = @pOsztalyCsoportId
) AS tanuloCsoport
INNER JOIN (
SELECT
ID
,C_NYOMTATASINEV
FROM
T_FELHASZNALO
WHERE
TOROLT = 'F'
) AS felhasznalo ON
felhasznalo.ID = tanuloCsoport.C_TANULOID
LEFT JOIN (
SELECT
ID
,C_DATUM
,C_TIPUSID
,C_TANULOID
,C_MAGATARTASOSZTALYZATID
,C_MAGATARTASSZOVEG
,C_MAGATARTASSZOVEGROVIDNEV
,C_MAGATARTASERTEKID
,C_SZORGALOMOSZTALYZATID
,C_SZORGALOMSZOVEG
,C_SZORGALOMSZOVEGROVIDNEV
,C_SZORGALOMERTEKID
FROM
T_TANULOERTEKELES
WHERE
TOROLT = 'F'
AND C_TANTARGYID IS NULL
) AS tanuloErtekeles ON
tanuloErtekeles.C_TANULOID = tanuloCsoport.C_TANULOID
LEFT JOIN @TempDictionaryItem AS magatartasOsztalyzat ON magatartasOsztalyzat.ID = tanuloErtekeles.C_MAGATARTASOSZTALYZATID
LEFT JOIN @TempDictionaryItem AS szorgalomOsztalyzat ON szorgalomOsztalyzat.ID = tanuloErtekeles.C_SZORGALOMOSZTALYZATID
LEFT JOIN @TempDictionaryItem AS magatartasErtek ON magatartasErtek.ID = tanuloErtekeles.C_MAGATARTASERTEKID
LEFT JOIN @TempDictionaryItem AS szorgalomErtek ON szorgalomErtek.ID = tanuloErtekeles.C_SZORGALOMERTEKID
) AS temp
SELECT *
FROM (
SELECT
pivotErtekelesek.TanuloId ID
,Nev Nev
,[9] [09]
,[10] [10]
,[11] [11]
,[12] [12]
,[1] [01I]
,[2] [01II]
,[3] [02]
,[4] [03]
,[5] [04]
,[6] [05]
,[7] [06]
,[I] [I]
,[II] [II]
FROM (
SELECT DISTINCT
tempErtekeles1.Nev
,STUFF (
(SELECT
','
+ ISNULL(CAST(tempErtekeles2.MagatartasOsztalyzat AS VARCHAR(1)), '') + ','
+ ISNULL(CAST(tempErtekeles2.SzorgalomOsztalyzat AS varchar(1)), '')
+ ISNULL(CAST(
CASE
WHEN tempErtekeles2.MagatartasSzoveg IS NULL OR LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(tempErtekeles2.MagatartasSzoveg, CHAR(9), ''), CHAR(10), ''), CHAR(13), ''))) = ''
THEN NULL
ELSE
ISNULL(tempErtekeles2.MagatartasSzovegRovidNev, 'sz')
END AS VARCHAR(3)), '') + ','
+ ISNULL(CAST(
CASE
WHEN tempErtekeles2.SzorgalomSzoveg IS NULL OR LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(tempErtekeles2.SzorgalomSzoveg, CHAR(9), ''), CHAR(10), ''), CHAR(13), ''))) = ''
THEN NULL
ELSE
ISNULL(tempErtekeles2.SzorgalomSzovegRovidNev, 'sz')
END AS VARCHAR(3)), '')
+ ISNULL(CAST(tempErtekeles2.MagatartasErtek AS varchar(1)), '') + ','
+ ISNULL(CAST(tempErtekeles2.SzorgalomErtek AS varchar(1)), '')
FROM
@TempTanuloErtekeles tempErtekeles2
WHERE
tempErtekeles1.TanuloId = tempErtekeles2.TanuloId AND
tempErtekeles1.Honap = tempErtekeles2.Honap
FOR XML PATH ('')
), 1, 1, ''
) TanuloErtekelesList
,tempErtekeles1.Honap
,tempErtekeles1.TanuloId
FROM
@TempTanuloErtekeles tempErtekeles1
) AS erdemjegyek
PIVOT (
MAX(TanuloErtekelesList)
FOR Honap
IN ([I], [II], [9] ,[10] ,[11] ,[12] ,[1] ,[2] ,[3] ,[4] ,[5] ,[6], [7])
) AS pivotErtekelesek
) AS result
ORDER BY
result.Nev
IF OBJECT_ID('tempdb..#TempDictionaryItem') IS NOT NULL DROP TABLE #TempDictionaryItem
IF OBJECT_ID('tempdb..#TempTanuloErtekeles') IS NOT NULL DROP TABLE #TempTanuloErtekeles
END
GO

View file

@ -0,0 +1,143 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_GetTanuloErtekelesDetailDataSet]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_GetTanuloErtekelesDetailDataSet]
END
GO
-- =============================================
-- Description: <Előszedjük a tanuló értékeléseket részletesen>
-- =============================================
CREATE PROCEDURE [dbo].[sp_GetTanuloErtekelesDetailDataSet]
@pIntezmenyId INT
,@pTanevId INT
,@pTanuloId INT
,@pTantargyId INT = NULL
,@pShowToroltElemek BIT
,@pIsFotargyAltargyLekerdezes BIT
,@pTanarId INT
,@pErtekelesMegjelenesFajtaEnumTantargyId INT
,@pErtekelesMegjelenesFajtaEnumMagatartasSzorgalomId INT
,@pErtekelesMegjelenesFajtaEnumTanuloId INT
,@pErtekelesMegjelenesFajtaId INT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.
SET NOCOUNT ON;
SELECT
TanuloErtekeles.ID ID
,TanuloErtekeles.C_DATUM Datum
,TanuloErtekeles.C_TIPUSID TipusId
,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.TOROLT Torolt
,TanuloCsoport.C_TANULOID TanuloId
,TanariAtlagSuly.C_SULY Suly
,Felhasznalo.C_NYOMTATASINEV ErtekeloNyomtatasiNev
,CASE
WHEN TanuloErtekeles.C_ERTEKELOID = @pTanarId
THEN 'T'
ELSE 'F'
END Modosithato
FROM (
SELECT DISTINCT
C_TANULOID
FROM
T_TANULOCSOPORT
WHERE
TOROLT = 'F'
AND C_TANULOID = @pTanuloId
AND C_INTEZMENYID = @pIntezmenyId
AND C_TANEVID = @pTanevId
) AS TanuloCsoport
INNER JOIN (
SELECT
ID
,C_DATUM
,C_TIPUSID
,C_ERTEKELESOSZTALYZATID
,C_ERTEKELESSZOVEG
,C_ERTEKELESSZOVEGROVIDNEV
,C_ERTEKELESSZAZALEK
,C_ERTEKELESMODID
,C_ERTEKELESTEMA
,C_MAGATARTASOSZTALYZATID
,C_MAGATARTASSZOVEG
,C_MAGATARTASSZOVEGROVIDNEV
,C_MAGATARTASERTEKID
,C_SZORGALOMOSZTALYZATID
,C_SZORGALOMSZOVEG
,C_SZORGALOMSZOVEGROVIDNEV
,C_SZORGALOMERTEKID
,C_ISMAGATARTASSZORGALOM
,C_TANULOID
,C_ERTEKELOID
,C_TANORAID
,TOROLT
,CREATOR
FROM
T_TANULOERTEKELES_OSSZES
WHERE
(
(@pErtekelesMegjelenesFajtaId = @pErtekelesMegjelenesFajtaEnumTantargyId AND C_ISMAGATARTASSZORGALOM = 'F' AND C_TANTARGYID = @pTantargyId) OR
(@pErtekelesMegjelenesFajtaId = @pErtekelesMegjelenesFajtaEnumMagatartasSzorgalomId AND C_ISMAGATARTASSZORGALOM = 'T' AND C_TANTARGYID IS NULL) OR
(@pErtekelesMegjelenesFajtaId = @pErtekelesMegjelenesFajtaEnumTanuloId AND (C_ISMAGATARTASSZORGALOM = 'F' AND @pTantargyId IS NOT NULL AND C_TANTARGYID = @pTantargyId) OR (C_ISMAGATARTASSZORGALOM = 'T' AND C_TANTARGYID IS NULL AND @pTantargyId IS NULL))
)
--Ha a @pShowToroltElemek változó True, akkor a törölt elemeket is visszaadjuk!
AND TOROLT = IIF(@pShowToroltElemek = 1, TOROLT, 'F')
AND C_INTEZMENYID = @pIntezmenyId
AND C_TANEVID = @pTanevId
) AS TanuloErtekeles
ON TanuloCsoport.C_TANULOID = TanuloErtekeles.C_TANULOID
INNER JOIN (
SELECT
ID
,C_NYOMTATASINEV
FROM
T_FELHASZNALO
WHERE
TOROLT = 'F'
AND C_INTEZMENYID = @pIntezmenyId
AND C_TANEVID = @pTanevId
) AS Felhasznalo
ON Felhasznalo.ID = TanuloErtekeles.C_ERTEKELOID
LEFT JOIN (
SELECT
C_SULY
,C_ERTEKELESMODID
FROM
T_TANARIATLAGSULY_OSSZES
WHERE
TOROLT = 'F'
AND C_INTEZMENYID = @pIntezmenyId
AND C_TANEVID = @pTanevId
) AS TanariAtlagSuly ON
TanuloErtekeles.C_ISMAGATARTASSZORGALOM = 'F'
AND TanariAtlagSuly.C_ERTEKELESMODID = TanuloErtekeles.C_ERTEKELESMODID
END
GO