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

195 lines
7 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS uspGetDokumentumTantargyakErtekeleshez
GO
CREATE PROCEDURE uspGetDokumentumTantargyakErtekeleshez
@intezmenyId int
,@tanevId int
,@osztalyCsoportId int
,@csakKivalasztottOsztalyCsoport bit
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@evfolyamTipusId int = (SELECT C_EVFOLYAMTIPUSA FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyCsoportId AND TOROLT = 'F')
,@elsoNap datetime
,@utolsoNap datetime
,@isCsoport bit = 0
SELECT @elsoNap = C_KEZDONAP, @utolsoNap = C_UTOLSONAP FROM T_TANEV_OSSZES WHERE ID = @tanevId AND TOROLT = 'F'
IF EXISTS (SELECT ID FROM T_CSOPORT_OSSZES WHERE ID = @osztalyCsoportId AND TOROLT = 'F')
BEGIN
SET @isCsoport = 1
END
CREATE TABLE #KapcsopodoTantargy(
ID int
,C_FOTARGYID int
,C_NEV nvarchar(255)
,C_NEVNYOMTATVANYBAN nvarchar(255)
,C_TARGYKATEGORIA int
,C_INTEZMENYID int
,C_TANEVID int
)
INSERT INTO #KapcsopodoTantargy
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 AND t.TOROLT = 'F';
-- Ö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
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 T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = Foglalkozas.C_OSZTALYCSOPORTID
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
(tcsOsztaly.C_KILEPESDATUM IS NULL OR tcsOsztaly.C_KILEPESDATUM > tcs.C_BELEPESDATUM)
AND Foglalkozas.C_INTEZMENYID = @intezmenyId
AND Foglalkozas.C_TANEVID = @tanevId
AND Foglalkozas.TOROLT = 'F'
AND (@isCsoport = 0 OR Foglalkozas.C_OSZTALYCSOPORTID = @osztalyCsoportId)
UNION
-- ttf-ben nem szereplő tárgyak
SELECT
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 T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = OrarendiOra.C_OSZTALYCSOPORTID
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
(tcsOsztaly.C_KILEPESDATUM IS NULL OR tcsOsztaly.C_KILEPESDATUM > tcs.C_BELEPESDATUM)
AND OrarendiOra.C_INTEZMENYID = @intezmenyId
AND OrarendiOra.C_TANEVID = @tanevId
AND OrarendiOra.TOROLT = 'F'
AND (@isCsoport = 0 OR OrarendiOra.C_OSZTALYCSOPORTID = @osztalyCsoportId)
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, @csakKivalasztottOsztalyCsoport, DEFAULT, DEFAULT) AS TanuloErtekeles
)
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 ALL
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 ALL
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 RENDEZ1
,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 #KapcsopodoTantargy 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