﻿DROP PROCEDURE IF EXISTS dbo.uspOsztondijTanuloAdatok
GO

CREATE PROCEDURE dbo.uspOsztondijTanuloAdatok(
    @IntezmenyGUID uniqueidentifier,
    @TanevSorszam int,
    @TanuloIDP uniqueidentifier = NULL,
    @VizsgaltHonap int = NULL,
    @JuttatasTipus int = 7888
)
AS
SET NOCOUNT ON;
DECLARE @IntezmenyId int, 
        @TanevId int, 
        @TanuloId int, 
        @ZaroDatum datetime;

SELECT @IntezmenyId = ID
FROM T_INTEZMENY
WHERE C_GUID = @IntezmenyGUID;

SELECT @TanevId = ID
FROM T_TANEV
WHERE C_INTEZMENYID = @IntezmenyId
AND C_SORSZAM = @TanevSorszam;

SELECT @TanuloId = f.ID
FROM T_FELHASZNALO f
INNER JOIN T_TANULO t on t.ID = f.ID
WHERE f.TOROLT = 'F'
AND t.TOROLT = 'F'
AND f.C_INTEZMENYID = @IntezmenyId
AND f.C_TANEVID = @TanevId
AND f.C_IDPEGYEDIAZONOSITO = @TanuloIDP;

IF @IntezmenyId IS NULL
    THROW 60000, N'Intézmény nem található', 1;

IF @TanevId IS NULL
    THROW 60000, N'Tanév nem található', 1;

IF @TanuloId IS NULL AND @TanuloIDP IS NOT NULL
    THROW 60000, N'Tanuló nem található', 1;

SELECT
    j.C_TANULOID AS TanuloId,
    f.C_IDPEGYEDIAZONOSITO AS TanuloIDP,
    f.C_NYOMTATASINEV AS TanuloNeve,
    f.C_OKTATASIAZONOSITO AS OktatasiAzonosito,
    f.C_SZULETESIDATUM AS SzuletesiIdo,
    ocs.C_NEV AS Osztaly,
    d.C_NAME AS [Evfolyam],
    CASE WHEN j.C_ISJOGOSULT = 'T' THEN 'Igen' ELSE 'Nem' END AS [Jogosultsag],
    j.C_ELUTASITASOKA AS [ElutasitasOkok],
    STUFF(
        CASE WHEN j.C_ELUTASITASOKA & 1 = 1 THEN N'|Nem tanulói jogviszonnyal rendelkezik' ELSE '' END + 
        CASE WHEN j.C_ELUTASITASOKA & 2 = 2 THEN N'|A vizsgált hónapban nem volt tanulói jogviszonya' ELSE '' END + 
        CASE WHEN j.C_ELUTASITASOKA & 4 = 4 THEN N'|' ELSE '' END + 
        CASE WHEN j.C_ELUTASITASOKA & 8 = 8 THEN N'|Második vagy többes szakmát szerző ' ELSE '' END + 
        CASE WHEN j.C_ELUTASITASOKA & 16 = 16 THEN N'|Évismétlő' ELSE '' END + 
        CASE WHEN j.C_ELUTASITASOKA & 32 = 32 THEN N'|Igazolatlan mulasztások száma meghaladja a megengedett maximálist' ELSE '' END + 
        CASE WHEN j.C_ELUTASITASOKA & 64 = 64 THEN N'|Duális képzésben vesz részt' ELSE '' END + 
        CASE WHEN j.C_ELUTASITASOKA & 128 = 128 THEN N'|Átlag minimum alatt' ELSE '' END + 
        CASE WHEN j.C_ELUTASITASOKA & 256 = 256 THEN N'|Technikai osztály tagja' ELSE '' END + 
        CASE WHEN j.C_ELUTASITASOKA & 512 = 512 THEN N'|Vendégtanuló' ELSE '' END + 
        CASE WHEN j.C_ELUTASITASOKA & 1024 = 1024 THEN N'|Jogviszony szünetelése' ELSE '' END + 
        CASE WHEN j.C_ELUTASITASOKA & 2048 = 2048 THEN N'|Keresztféléves osztály tagja' ELSE '' END + 
        CASE WHEN j.C_ELUTASITASOKA & 4096 = 4096 THEN N'|Ösztöndíjból kizárva' ELSE '' END + 
        CASE WHEN j.C_ELUTASITASOKA & 8192 = 8192 THEN N'|Véglegesen kizárt, mert elérte a maximális igazolatlan hiányzások számát' ELSE '' END + 
        CASE WHEN j.C_ELUTASITASOKA & 16384 = 16384 THEN N'|Nem Szakmajegyzék szerinti képzés van megadva' ELSE '' END + 
        CASE WHEN j.C_ELUTASITASOKA & 32768 = 32768 THEN N'|Nem állam által ingyenesen biztosított képzésben résztvevő' ELSE '' END
        , 1, 1, '') AS [NemJogosultagOka],
    j.C_OSSZEG AS [JuttatasOsszege],
    j.C_GENERALTHONAP AS [VizsgaltHonap]
FROM T_JUTTATAS_OSSZES j
INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = j.C_TANULOID
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_TANULOID = j.C_TANULOID AND tcs.C_TANEVID = j.C_TANEVID AND tcs.TOROLT = 'F'
INNER JOIN T_OSZTALY_OSSZES o ON o.ID = tcs.C_OSZTALYCSOPORTID
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs on ocs.ID = tcs.C_OSZTALYCSOPORTID
INNER JOIN T_DICTIONARYITEMBASE_OSSZES d on d.ID = ocs.C_EVFOLYAMTIPUSA AND d.C_TANEVID = ocs.C_TANEVID AND d.TOROLT = 'F' AND d.C_TYPE = 'EvfolyamTipus'
WHERE j.C_INTEZMENYID = @IntezmenyId
AND j.C_TANEVID = @TanevId
AND j.C_TANULOID = CASE WHEN @TanuloId > 0 THEN @TanuloId ELSE j.C_TANULOID END
AND j.C_GENERALTHONAP = CASE WHEN @VizsgaltHonap > 0 THEN @VizsgaltHonap ELSE j.C_GENERALTHONAP END
AND j.TOROLT = 'F'
AND j.C_JUTTATASTIPUSID = CASE WHEN @JuttatasTipus > 0 THEN @JuttatasTipus ELSE j.C_JUTTATASTIPUSID END
--AND j.C_ISAKTIV = 'T' -- ??? így nincs eredmény
--AND j.C_ELUTASITASOKA > 0 -- ??? csak azok kellenek, ahol van elutasítás?
ORDER BY j.C_GENERALTHONAP
GO

