kreta/Kreta.DataAccess.Migrations/DBScripts/Database/dbo/Stored procedures/uspGetTanuloErtekelesDataSetByFotargyAltargy.sql
2024-03-13 00:33:46 +01:00

332 lines
13 KiB
Transact-SQL

-- =============================================
-- Description: <Előszedjük a tanuló értékeléseket főtárgy/altárgy alapján>
-- =============================================
DROP PROCEDURE IF EXISTS [dbo].[uspGetTanuloErtekelesDataSetByFotargyAltargy]
GO
CREATE PROCEDURE [dbo].[uspGetTanuloErtekelesDataSetByFotargyAltargy]
@pIntezmenyId INT
,@pTanevId INT
,@pTanarId INT
,@pTanuloId INT
,@pFotargyAltargyId INT
,@pDatum DATE = NULL
,@pFeladatKategoriaId INT
,@pAmiKategoriaId INT
AS
BEGIN
SET NOCOUNT ON;
IF @pDatum IS NULL
SET @pDatum = CONVERT(DATE, GETDATE())
DECLARE
@evfolyamTipusId INT
SELECT TOP (1)
@evfolyamTipusId = tanuloOsztaly.EvfolyamTipusId
FROM
fnGetTanuloOsztaly(@pTanuloId, @pDatum, @pFeladatKategoriaId, 0, DEFAULT) tanuloOsztaly
ORDER BY
tanuloOsztaly.BelepesDatuma DESC
CREATE TABLE #KapcsopodoTantargyak (
ID INT
,C_FOTARGYID INT
,C_NEV NVARCHAR(255)
,C_TARGYKATEGORIA INT
,C_INTEZMENYID INT
,C_TANEVID INT
,C_ISTANULMANYIATLAGBANEMSZAMIT CHAR(1)
)
INSERT INTO
#KapcsopodoTantargyak
SELECT
ID
,C_FOTARGYID
,C_NEV
,C_TARGYKATEGORIA
,C_INTEZMENYID
,C_TANEVID
,C_ISTANULMANYIATLAGBANEMSZAMIT
FROM
fnGetKapcsolodoTantargyak(@pIntezmenyId, @pTanevId, @pFotargyAltargyId)
CREATE TABLE #OsztalyCsoportIdList (
ID INT PRIMARY KEY
)
INSERT INTO #OsztalyCsoportIdList (
ID
)
SELECT
OsztalyCsoport.ID
FROM
T_TANULOCSOPORT_OSSZES TanuloCsoport
INNER JOIN
T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON
OsztalyCsoport.C_INTEZMENYID = TanuloCsoport.C_INTEZMENYID
AND OsztalyCsoport.C_TANEVID = TanuloCsoport.C_TANEVID
AND OsztalyCsoport.TOROLT = 'F'
AND OsztalyCsoport.ID = TanuloCsoport.C_OSZTALYCSOPORTID
AND (OsztalyCsoport.C_FELADATKATEGORIAID = @pFeladatKategoriaId OR @pFeladatKategoriaId IS NULL)
WHERE
TanuloCsoport.C_INTEZMENYID = @pIntezmenyId
AND TanuloCsoport.C_TANEVID = @pTanevId
AND TanuloCsoport.TOROLT = 'F'
AND TanuloCsoport.C_TANULOID = @pTanuloId
AND TanuloCsoport.C_BELEPESDATUM <= @pDatum
AND (TanuloCsoport.C_KILEPESDATUM > @pDatum OR TanuloCsoport.C_KILEPESDATUM IS NULL)
CREATE TABLE #Tantargyak (
ID INT
,C_FOTARGYID INT
,C_NEV NVARCHAR(255)
,C_TARGYKATEGORIA INT
,C_INTEZMENYID INT
,C_TANEVID INT
,C_ISTANULMANYIATLAGBANEMSZAMIT CHAR(1)
);
WITH tantargy_CTE (C_TANTARGYID, C_FOTARGYID, C_INTEZMENYID, C_TANEVID, C_ISTANULMANYIATLAGBANEMSZAMIT)
AS (
SELECT DISTINCT
Foglalkozas.C_TANTARGYID,
Tantargy.C_FOTARGYID,
Tantargy.C_INTEZMENYID,
Tantargy.C_TANEVID,
Tantargy.C_ISTANULMANYIATLAGBANEMSZAMIT
FROM
T_FOGLALKOZAS_OSSZES Foglalkozas
INNER JOIN
T_TANTARGY_OSSZES Tantargy ON
Tantargy.C_INTEZMENYID = Foglalkozas.C_INTEZMENYID
AND Tantargy.C_TANEVID = Foglalkozas.C_TANEVID
AND Tantargy.TOROLT = 'F'
AND Tantargy.ID = Foglalkozas.C_TANTARGYID
INNER JOIN
#OsztalyCsoportIdList OsztalyCsoport ON
OsztalyCsoport.ID = Foglalkozas.C_OSZTALYCSOPORTID
WHERE
Foglalkozas.C_INTEZMENYID = @pIntezmenyId
AND Foglalkozas.C_TANEVID = @pTanevId
AND Foglalkozas.TOROLT = 'F'
UNION
SELECT DISTINCT
OrarendiOra.C_TANTARGYID,
Tantargy.C_FOTARGYID,
Tantargy.C_INTEZMENYID,
Tantargy.C_TANEVID,
Tantargy.C_ISTANULMANYIATLAGBANEMSZAMIT
FROM
T_ORARENDIORA_OSSZES OrarendiOra
INNER JOIN
T_TANTARGY_OSSZES Tantargy ON
Tantargy.C_INTEZMENYID = OrarendiOra.C_INTEZMENYID
AND Tantargy.C_TANEVID = OrarendiOra.C_TANEVID
AND Tantargy.TOROLT = 'F'
AND Tantargy.ID = OrarendiOra.C_TANTARGYID
INNER JOIN
#OsztalyCsoportIdList OsztalyCsoport ON
OsztalyCsoport.ID = OrarendiOra.C_OSZTALYCSOPORTID
WHERE
OrarendiOra.C_INTEZMENYID = @pIntezmenyId
AND OrarendiOra.C_TANEVID = @pTanevId
AND OrarendiOra.TOROLT = 'F'
UNION
SELECT DISTINCT
TanuloErtekeles.C_TANTARGYID,
Tantargy.C_FOTARGYID,
Tantargy.C_INTEZMENYID,
Tantargy.C_TANEVID,
Tantargy.C_ISTANULMANYIATLAGBANEMSZAMIT
FROM
T_TANULOERTEKELES_OSSZES TanuloErtekeles
INNER JOIN
T_TANTARGY_OSSZES Tantargy ON
Tantargy.C_INTEZMENYID = TanuloErtekeles.C_INTEZMENYID
AND Tantargy.C_TANEVID = TanuloErtekeles.C_TANEVID
AND Tantargy.TOROLT = 'F'
AND Tantargy.ID = TanuloErtekeles.C_TANTARGYID
INNER JOIN
T_OSZTALYCSOPORT_OSSZES Osztaly ON
Osztaly.C_INTEZMENYID = TanuloErtekeles.C_INTEZMENYID
AND Osztaly.C_TANEVID = TanuloErtekeles.C_TANEVID
AND Osztaly.TOROLT = 'F'
AND Osztaly.ID = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID
AND Osztaly.C_EVFOLYAMTIPUSA = @evfolyamTipusId
INNER JOIN
T_TANULOCSOPORT_OSSZES TanuloCsoport ON
TanuloCsoport.C_INTEZMENYID = TanuloErtekeles.C_INTEZMENYID
AND TanuloCsoport.C_TANEVID = TanuloErtekeles.C_TANEVID
AND TanuloCsoport.TOROLT = 'F'
AND TanuloCsoport.C_OSZTALYCSOPORTID = Osztaly.ID
AND TanuloCsoport.C_TANULOID = TanuloErtekeles.C_TANULOID
AND TanuloCsoport.C_BELEPESDATUM <= @pDatum
WHERE
TanuloErtekeles.C_INTEZMENYID = @pIntezmenyId
AND TanuloErtekeles.C_TANEVID = @pTanevId
AND TanuloErtekeles.TOROLT = 'F'
AND TanuloErtekeles.C_TANULOID = @pTanuloId
AND TanuloErtekeles.C_TANTARGYID IS NOT NULL
UNION ALL
SELECT DISTINCT
TanuloErtekeles.C_TANTARGYID,
Tantargy.C_FOTARGYID,
Tantargy.C_INTEZMENYID,
Tantargy.C_TANEVID,
Tantargy.C_ISTANULMANYIATLAGBANEMSZAMIT
FROM
T_TANULOERTEKELES_OSSZES TanuloErtekeles
INNER JOIN
T_TANTARGY_OSSZES Tantargy ON
Tantargy.C_INTEZMENYID = TanuloErtekeles.C_INTEZMENYID
AND Tantargy.C_TANEVID = TanuloErtekeles.C_TANEVID
AND Tantargy.TOROLT = 'F'
AND Tantargy.ID = TanuloErtekeles.C_TANTARGYID
WHERE
TanuloErtekeles.C_INTEZMENYID = @pIntezmenyId
AND TanuloErtekeles.C_TANEVID = @pTanevId
AND TanuloErtekeles.TOROLT = 'F'
AND TanuloErtekeles.C_TANULOID = @pTanuloId
AND TanuloErtekeles.C_TANTARGYID IS NOT NULL
AND @pFeladatKategoriaId = @pAmiKategoriaId
)
INSERT INTO
#Tantargyak (ID, C_FOTARGYID, C_NEV, C_TARGYKATEGORIA, C_INTEZMENYID, C_TANEVID, C_ISTANULMANYIATLAGBANEMSZAMIT)
SELECT DISTINCT
KapcsopodoTantargy.ID,
KapcsopodoTantargy.C_FOTARGYID,
KapcsopodoTantargy.C_NEV,
KapcsopodoTantargy.C_TARGYKATEGORIA,
KapcsopodoTantargy.C_INTEZMENYID,
KapcsopodoTantargy.C_TANEVID,
KapcsopodoTantargy.C_ISTANULMANYIATLAGBANEMSZAMIT
FROM
tantargy_CTE
INNER JOIN
#KapcsopodoTantargyak KapcsopodoTantargy ON
tantargy_CTE.C_TANTARGYID = KapcsopodoTantargy.ID
OR tantargy_CTE.C_FOTARGYID = KapcsopodoTantargy.ID
WHERE
(KapcsopodoTantargy.ID <> @pFotargyAltargyId)
--NOTE: Azért kell a DISTINCT, ha ugyanoda ki-/besorolgatják a tanulót!
SELECT DISTINCT
@pTanuloId TanuloId
,Tantargy.ID TantargyId
,Tantargy.C_NEV TantargyNev
,TanuloErtekeles.ID ID
,TanuloErtekeles.C_DATUM Datum
,TanuloErtekeles.C_ROGZITESDATUM RogzitesDatum
,TanuloErtekeles.C_TIPUSID TipusId
,FelhasznaloErtekelo.C_NYOMTATASINEV ErtekeloNyomtatasiNev
,IIF(TanuloErtekeles.ID IS NULL,
NULL,
CASE
WHEN TanuloErtekeles.C_ERTEKELOID = @pTanarId
THEN 'T'
ELSE 'F'
END
) Modosithato
,TanuloErtekeles.CREATED Created
,TanuloErtekeles.C_ISMAGATARTASSZORGALOM IsMagatartasSzorgalom
,TanuloErtekeles.C_ISERTESITESELKULDVE IsErtesitesElkuldve
,TanuloErtekeles.C_ERTEKELESOSZTALYZATID ErtekelesOsztalyzatId
,em.C_SULY Suly
,TanuloErtekeles.C_ERTEKELESSZOVEG ErtekelesSzoveg
,TanuloErtekeles.C_ERTEKELESSZOVEGROVIDNEV ErtekelesSzovegRovidNev
,TanuloErtekeles.C_ERTEKELESSZAZALEK ErtekelesSzazalek
,TanuloErtekeles.C_ERTEKELESMODID ErtekelesModId
,TanuloErtekeles.C_ERTEKELESTEMA ErtekelesTema
,Tantargy.C_TARGYKATEGORIA TantargyKategoriaId
,Fotargy.ID FotargyId
,Fotargy.C_NEV FotargyNev
,Fotargy.C_TARGYKATEGORIA FotargyTantargyKategoriaId
,Tantargy.C_ISTANULMANYIATLAGBANEMSZAMIT IsTanulmanyiAtlagbaNemSzamit
FROM
#Tantargyak Tantargy
LEFT JOIN(
SELECT
TanuloErtekeles.*
FROM
T_TANULOERTEKELES_OSSZES TanuloErtekeles
INNER JOIN
T_OSZTALYCSOPORT_OSSZES Osztaly ON
Osztaly.C_INTEZMENYID = TanuloErtekeles.C_INTEZMENYID
AND Osztaly.C_TANEVID = TanuloErtekeles.C_TANEVID
AND Osztaly.TOROLT = 'F'
AND Osztaly.ID = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID
AND Osztaly.C_EVFOLYAMTIPUSA = @evfolyamTipusId
AND Osztaly.C_FELADATKATEGORIAID = @pFeladatKategoriaId
INNER JOIN
T_TANULOCSOPORT_OSSZES TanuloCsoport ON
TanuloCsoport.C_TANEVID = TanuloErtekeles.C_TANEVID
AND TanuloCsoport.TOROLT = 'F'
AND TanuloCsoport.C_OSZTALYCSOPORTID = Osztaly.ID
AND TanuloCsoport.C_TANULOID = TanuloErtekeles.C_TANULOID
AND TanuloCsoport.C_BELEPESDATUM <= @pDatum
WHERE
TanuloErtekeles.C_INTEZMENYID = @pIntezmenyId
AND TanuloErtekeles.C_TANEVID = @pTanevId
AND TanuloErtekeles.TOROLT = 'F'
AND TanuloErtekeles.C_TANULOID = @pTanuloId
AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NOT NULL
AND TanuloErtekeles.C_ISMAGATARTASSZORGALOM = 'F'
UNION ALL
SELECT
TanuloErtekeles.*
FROM
T_TANULOERTEKELES_OSSZES TanuloErtekeles
INNER JOIN
T_OSZTALYCSOPORT_OSSZES Osztaly ON
Osztaly.C_INTEZMENYID = TanuloErtekeles.C_INTEZMENYID
AND Osztaly.C_TANEVID = TanuloErtekeles.C_TANEVID
AND Osztaly.TOROLT = 'F'
AND Osztaly.ID = TanuloErtekeles.C_OSZTALYCSOPORTID
AND Osztaly.C_FELADATKATEGORIAID = @pFeladatKategoriaId
WHERE
TanuloErtekeles.C_INTEZMENYID = @pIntezmenyId
AND TanuloErtekeles.C_TANEVID = @pTanevId
AND TanuloErtekeles.TOROLT = 'F'
AND TanuloErtekeles.C_TANULOID = @pTanuloId
AND @pFeladatKategoriaId = @pAmiKategoriaId
AND TanuloErtekeles.C_ISMAGATARTASSZORGALOM = 'F'
) AS TanuloErtekeles ON
TanuloErtekeles.C_TANTARGYID = Tantargy.ID
LEFT JOIN
T_FELHASZNALO_OSSZES FelhasznaloErtekelo ON
FelhasznaloErtekelo.C_INTEZMENYID = Tantargy.C_INTEZMENYID
AND FelhasznaloErtekelo.C_TANEVID = Tantargy.C_TANEVID
AND FelhasznaloErtekelo.TOROLT = 'F'
AND FelhasznaloErtekelo.ID = TanuloErtekeles.C_ERTEKELOID
LEFT JOIN
T_ERTEKELESMOD_OSSZES em ON
em.C_ALINTEZMENYID = Tantargy.C_INTEZMENYID
AND em.C_ALTANEVID = Tantargy.C_TANEVID
AND em.TOROLT = 'F'
AND em.ID = TanuloErtekeles.C_ERTEKELESMODID
AND TanuloErtekeles.C_ISMAGATARTASSZORGALOM = 'F'
AND TanuloErtekeles.C_ERTEKELESOSZTALYZATID IS NOT NULL
LEFT JOIN
T_TANTARGY_OSSZES Fotargy ON
Fotargy.C_INTEZMENYID = Tantargy.C_INTEZMENYID
AND Fotargy.C_TANEVID = Tantargy.C_TANEVID
AND Fotargy.TOROLT = 'F'
AND Fotargy.ID = Tantargy.C_FOTARGYID
END
GO