kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20190719103047_KRETA2_466/uspGetDokumentumTantargyakErtekeleshez.sql
2024-03-13 00:33:46 +01:00

268 lines
8.9 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS uspGetDokumentumTantargyakErtekeleshez
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE uspGetDokumentumTantargyakErtekeleshez
@intezmenyId int,
@tanevId int,
@osztalyCsoportId int
AS
BEGIN
SET NOCOUNT ON;
DECLARE @evfolyamTipusId INT = (SELECT C_EVFOLYAMTIPUSA FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyCsoportId AND TOROLT = 'F')
CREATE TABLE #KapcsopodoTantargyak(
ID INT
,C_FOTARGYID INT
,C_NEV NVARCHAR(255)
,C_NEVNYOMTATVANYBAN NVARCHAR(255)
,C_TARGYKATEGORIA INT
,C_INTEZMENYID INT
,C_TANEVID INT
)
INSERT INTO
#KapcsopodoTantargyak
SELECT
kt.ID
,kt.C_FOTARGYID
,kt.C_NEV
,t.C_NEVNYOMTATVANYBAN
,kt.C_TARGYKATEGORIA
,kt.C_INTEZMENYID
,kt.C_TANEVID
FROM
dbo.fnGetKapcsolodoTantargyak(@intezmenyId, @tanevId, NULL) AS kt
INNER JOIN T_TANTARGY_OSSZES AS t ON t.ID = kt.ID
-- Összeszedjük az osztályhoz kapcsolódó csoportokat
CREATE TABLE #OsztalyCsoportIdList(
ID INT PRIMARY KEY
)
IF EXISTS (SELECT ID FROM T_OSZTALY_OSSZES WHERE ID = @osztalyCsoportId)
BEGIN
INSERT INTO
#OsztalyCsoportIdList (ID)
SELECT ID
FROM fnGetKapcsolodoOsztalycsoportok(@osztalyCsoportId, 7553)
-- Nem tanórai célú csoportok eltávolítása
DELETE ocsl
FROM #OsztalyCsoportIdList ocsl
LEFT JOIN T_CSOPORT_OSSZES cs
ON cs.ID = ocsl.ID
WHERE cs.C_TIPUSA NOT IN (SELECT ID from fnGetTanoraiCeluCsoportTipusok(@tanevId))
END
ELSE
BEGIN
-- Csoport esetén csak a keresett csoport kell legyen tagja
INSERT INTO #OsztalyCsoportIdList (ID)
SELECT @osztalyCsoportId
END;
-- Összeszedjük minden tanuló-tanulócsoporthoz a tárgyakat
WITH tantargy_CTE (C_TANTARGYID, C_FOTARGYID, C_TANULOID, C_TANULOCSOPORTID, C_INTEZMENYID, C_TANEVID)
AS (
-- TTF-es tárgyak
SELECT DISTINCT
Foglalkozas.C_TANTARGYID,
Tantargy.C_FOTARGYID,
f.ID as c_tanuloid,
tcsOsztaly.ID as c_tanulocsoportid,
Tantargy.C_INTEZMENYID,
Tantargy.C_TANEVID
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
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON
tcs.C_OSZTALYCSOPORTID = OsztalyCsoport.ID
AND tcs.TOROLT = 'F'
INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID AND f.TOROLT = 'F'
INNER JOIN
T_TANULOCSOPORT_OSSZES tcsOsztaly ON
tcsOsztaly.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND tcsOsztaly.C_TANULOID = f.ID
AND tcsOsztaly.TOROLT = 'F'
WHERE
Foglalkozas.C_INTEZMENYID = @intezmenyId
AND Foglalkozas.C_TANEVID = @tanevId
AND Foglalkozas.TOROLT = 'F'
UNION
-- ttf-ben nem szereplő tárgyak
SELECT DISTINCT
OrarendiOra.C_TANTARGYID,
Tantargy.C_FOTARGYID,
f.ID as c_tanuloid,
tcsOsztaly.ID as c_tanulocsoportid,
Tantargy.C_INTEZMENYID,
Tantargy.C_TANEVID
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
INNER JOIN
T_TANULOCSOPORT_OSSZES tcs ON
tcs.C_OSZTALYCSOPORTID = OsztalyCsoport.ID
AND (tcs.C_BELEPESDATUM < OrarendiOra.C_ORAERVENYESSEGVEGE AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= OrarendiOra.C_ORAERVENYESSEGKEZDETE))
AND tcs.TOROLT = 'F'
INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID AND f.TOROLT = 'F'
INNER JOIN
T_TANULOCSOPORT_OSSZES tcsOsztaly ON
tcsOsztaly.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND (tcsOsztaly.C_BELEPESDATUM < OrarendiOra.C_ORAERVENYESSEGVEGE AND (tcsOsztaly.C_KILEPESDATUM IS NULL OR tcsOsztaly.C_KILEPESDATUM >= OrarendiOra.C_ORAERVENYESSEGKEZDETE))
AND tcsOsztaly.C_TANULOID = f.ID
AND tcsOsztaly.TOROLT = 'F'
WHERE
OrarendiOra.C_INTEZMENYID = @intezmenyId
AND OrarendiOra.C_TANEVID = @tanevId
AND OrarendiOra.TOROLT = 'F'
UNION
-- Értékelést kapott tárgyak
SELECT DISTINCT
TanuloErtekeles.TantargyId,
TanuloErtekeles.FotargyId,
TanuloErtekeles.TanuloId,
TanuloErtekeles.TanuloCsoportId as C_TANULOCSOPORTID,
@intezmenyId,
@tanevId
FROM
fnGetDokumentumErtekelesekOsztalyonkent(@tanevId, @osztalyCsoportId, DEFAULT, DEFAULT, 1, DEFAULT, DEFAULT) AS TanuloErtekeles
-- UNION ALL
-- -- AMI-s értékelés
---- összevonható-e az alap értékeléssel
-- SELECT DISTINCT
-- TanuloErtekeles.C_TANTARGYID,
-- Tantargy.C_FOTARGYID,
-- TanuloErtekeles.C_TANULOID,
-- tcs.ID as C_TANULOCSOPORTID,
-- Tantargy.C_INTEZMENYID,
-- Tantargy.C_TANEVID
-- FROM
---- helyett az fnGetDokumentumErtekelesekOsztalyonkent
-- 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 tcs ON
-- tcs.C_OSZTALYCSOPORTID = Osztaly.ID
-- AND tcs.C_TANULOID = TanuloErtekeles.C_TANULOID
---- and ertekels-datum between tcs.belépés and tcs. kilépés
-- WHERE
-- TanuloErtekeles.C_INTEZMENYID = @intezmenyId
-- AND TanuloErtekeles.C_TANEVID = @tanevId
-- AND TanuloErtekeles.TOROLT = 'F'
-- AND TanuloErtekeles.C_TANTARGYID IS NOT NULL
-- AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NULL
)
SELECT
NULL,
NULL,
'Magatartás',
'',
0,
f.ID,
tcs.ID
,0
,''
,0
,0
,''
,@intezmenyId
,@tanevId
FROM T_TANULOCSOPORT_OSSZES tcs
LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID AND f.TOROLT = 'F'
WHERE tcs.C_OSZTALYCSOPORTID = @osztalyCsoportId AND tcs.TOROLT = 'F'
UNION
SELECT
NULL,
NULL,
'Szorgalom',
'',
0,
f.ID,
tcs.ID
,1
,''
,0
,0
,''
,@intezmenyId
,@tanevId
FROM T_TANULOCSOPORT_OSSZES tcs
LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID AND f.TOROLT = 'F'
WHERE tcs.C_OSZTALYCSOPORTID = @osztalyCsoportId AND tcs.TOROLT = 'F'
UNION
SELECT DISTINCT
KapcsopodoTantargy.ID,
KapcsopodoTantargy.C_FOTARGYID,
KapcsopodoTantargy.C_NEV,
KapcsopodoTantargy.C_NEVNYOMTATVANYBAN,
KapcsopodoTantargy.C_TARGYKATEGORIA,
tantargy_CTE.c_tanuloId,
tantargy_CTE.c_tanulocsoportid
,CASE WHEN KapcsopodoTantargy.C_FOTARGYID IS NULL THEN ISNULL(TargyKategoriaDictionary.C_ORDER, 10000) ELSE ISNULL(FotargyKategoriaDictionary.C_ORDER, 10000) END
,ISNULL(ISNULL(Fotargy.C_NEVNYOMTATVANYBAN, Fotargy.C_NEV), ISNULL(KapcsopodoTantargy.C_NEVNYOMTATVANYBAN, KapcsopodoTantargy.C_NEV)) AS RENDEZ2
,ISNULL(KapcsopodoTantargy.C_FOTARGYID, KapcsopodoTantargy.ID) AS RENDEZ3
,KapcsopodoTantargy.C_FOTARGYID AS RENDEZ4
,ISNULL(KapcsopodoTantargy.C_NEVNYOMTATVANYBAN, KapcsopodoTantargy.C_NEV) AS RENDEZ5
,KapcsopodoTantargy.C_INTEZMENYID
,KapcsopodoTantargy.C_TANEVID
FROM tantargy_CTE
INNER JOIN
#KapcsopodoTantargyak KapcsopodoTantargy ON
tantargy_CTE.C_TANTARGYID = KapcsopodoTantargy.ID
OR tantargy_CTE.C_FOTARGYID = KapcsopodoTantargy.ID
LEFT JOIN
T_TANTARGY_OSSZES Fotargy ON
Fotargy.C_INTEZMENYID = tantargy_CTE.C_INTEZMENYID
AND Fotargy.C_TANEVID = tantargy_CTE.C_TANEVID
AND Fotargy.TOROLT = 'F'
AND Fotargy.ID = tantargy_CTE.C_FOTARGYID
LEFT JOIN
T_DICTIONARYITEMBASE_OSSZES TargyKategoriaDictionary ON
TargyKategoriaDictionary.Id = KapcsopodoTantargy.C_TARGYKATEGORIA
AND TargyKategoriaDictionary.TOROLT = 'F'
AND TargyKategoriaDictionary.C_TANEVID = @tanevId
LEFT JOIN
T_DICTIONARYITEMBASE_OSSZES FotargyKategoriaDictionary ON
FotargyKategoriaDictionary.ID = Fotargy.C_TARGYKATEGORIA
AND FotargyKategoriaDictionary.TOROLT = 'F'
AND FotargyKategoriaDictionary.C_TANEVID = Fotargy.C_TANEVID
END
GO