﻿DROP PROCEDURE IF EXISTS uspGetUjSzktSzakmajegyzekOsszerendelesData
GO

CREATE PROCEDURE uspGetUjSzktSzakmajegyzekOsszerendelesData
   @pTanevId int
  ,@pIdsJson nvarchar(max) = NULL
AS
BEGIN

  SET NOCOUNT ON;

  DECLARE
     @SzakmaTipusNa int = 7946
    ,@SzakmairanyTipusNa int = 8122

  SELECT
     szor.ID AS Id
    ,szor.C_OKTATASINEVELESIFELADATID AS OktatasiNevelesiFeladatId
    ,szor.C_AGAZATUJSZKTTIPUSID AS AgazatUjSzktTipusId
    ,aut.C_AGAZATIBESOROLAS AS AgazatiBesorolas
    ,szor.C_SZAKMATIPUSID AS SzakmaTipusId
    ,szt.C_SZAKKEPESITESAZONOSITOSZAM AS SzakkepesitesAzonositoszam
    ,szor.C_SZAKMAIRANYTIPUSID AS SzakmaIranyTipusId
    ,ISNULL(oszt.JelenlegKepzettTanulokSzama, 0) AS JelenlegKepzettTanulokSzama
    ,szor.C_KEPZESREFOGADHATOTANULOKSZAM AS KepzesreFogadhatoTanulokSzama
    ,szor.C_FILEID AS FileId
    ,fl.C_FILENEV AS FileNev
    ,fl.C_EXTENSION AS FileExtension
    ,fl.C_FELTOLTESDATUM AS FeltoltesDatum
    ,szor.C_ESZKOZALLOMANYAVULTSAGA AS EszkozallomanyAvultsaga
    ,szor.C_ESZKOZOKDARABSZAMA AS EszkozokDarabszama
    ,szor.C_EGYEBESZKOZALLOMANYINFORMACI AS EgyebEszkozallomanyInformacio
    ,szor.C_TANMUHELYEKSZAMA AS TanmuhelyekSzama
  FROM T_UJSZKTSZAKMAJEGYZEKOSSZEREND_OSSZES szor
    INNER JOIN T_AGAZATUJSZKTTIPUS_OSSZES aut ON aut.ID = szor.C_AGAZATUJSZKTTIPUSID AND aut.C_ALTANEVID = szor.C_TANEVID AND aut.TOROLT = 'F'
    INNER JOIN T_SZAKMATIPUS_OSSZES szt ON szt.ID = szor.C_SZAKMATIPUSID AND szt.C_ALTANEVID = szor.C_TANEVID AND szt.TOROLT = 'F'
    LEFT JOIN T_FILE fl ON fl.ID = szor.C_FILEID AND fl.C_TANEVID = szor.C_TANEVID AND fl.TOROLT = 'F'
    LEFT JOIN (
      SELECT
         tta.C_TANEVID
        ,feh.C_OKTATASINEVELESIFELADATTIPUS
        ,tta.C_AGAZATUJSZKTTIPUSID
        ,tta.C_SZAKMATIPUSID
        ,tta.C_SZAKMAIRANYTIPUSID
        ,COUNT(*) AS JelenlegKepzettTanulokSzama
      FROM T_TANULOTANUGYIADATOK_OSSZES tta
        INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.ID = tta.C_TANULOCSOPORTID AND tcs.C_TANEVID = tta.C_TANEVID AND tcs.TOROLT = 'F'
        INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID AND ocs.C_TANEVID = tta.C_TANEVID AND ocs.TOROLT = 'F'
        INNER JOIN T_FELADATELLATASIHELY_OSSZES feh ON feh.ID = ocs.C_FELADATELLATASIHELYID AND feh.C_TANEVID = tta.C_TANEVID AND feh.TOROLT = 'F'
      WHERE tta.TOROLT = 'F'
        AND tcs.C_BELEPESDATUM <= GETDATE()
        AND (tcs.C_KILEPESDATUM > GETDATE() OR tcs.C_KILEPESDATUM IS NULL)
      GROUP BY tta.C_TANEVID, feh.C_OKTATASINEVELESIFELADATTIPUS, tta.C_AGAZATUJSZKTTIPUSID, tta.C_SZAKMATIPUSID,tta.C_SZAKMAIRANYTIPUSID) AS oszt ON
            oszt.C_TANEVID = szor.C_TANEVID
        AND oszt.C_OKTATASINEVELESIFELADATTIPUS = szor.C_OKTATASINEVELESIFELADATID
        AND oszt.C_AGAZATUJSZKTTIPUSID = szor.C_AGAZATUJSZKTTIPUSID
        AND (oszt.C_SZAKMATIPUSID = szor.C_SZAKMATIPUSID OR -- True-nak kell lennie, ha megyeznek vagy,...
            (oszt.C_SZAKMATIPUSID IS NULL AND szor.C_SZAKMATIPUSID IS NULL) OR -- ha mindkettő NULL vagy,...
            (oszt.C_SZAKMATIPUSID = @SzakmaTipusNa AND szor.C_SZAKMATIPUSID IS NULL)) -- ha tanuló értéke Na és az UjSzktSzakmajegyzekOsszerendeles-nél NULL!
        AND (oszt.C_SZAKMAIRANYTIPUSID = szor.C_SZAKMAIRANYTIPUSID OR -- True-nak kell lennie, ha megyeznek vagy,...
            (oszt.C_SZAKMAIRANYTIPUSID IS NULL AND szor.C_SZAKMAIRANYTIPUSID IS NULL) OR -- ha mindkettő NULL vagy,...
            (oszt.C_SZAKMAIRANYTIPUSID = @SzakmairanyTipusNa AND szor.C_SZAKMAIRANYTIPUSID IS NULL)) -- ha tanuló értéke Na és az UjSzktSzakmajegyzekOsszerendeles-nél NULL!
  WHERE szor.C_TANEVID = @pTanevId
    AND szor.TOROLT = 'F'
    AND (@pIdsJson IS NULL OR szor.ID IN (SELECT list.Id FROM OPENJSON(@pIdsJson) WITH (id INT 'strict $.Id') AS list))

END

GO

