﻿DROP PROCEDURE IF EXISTS uspGetZaradekok
GO

CREATE PROCEDURE uspGetZaradekok
   @tanevId int
  ,@intezmenyId int
  ,@tanuloCsoportId int
  ,@nemzetiDokumentumNyelvek nvarchar(max) = NULL
  ,@tanuloId int = NULL
AS
BEGIN
  SET NOCOUNT ON;
  DECLARE @feladatKategoriaId int = (SELECT ocs.C_FELADATKATEGORIAID FROM T_OSZTALYCSOPORT_OSSZES ocs INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = ocs.ID AND tcs.ID = @tanuloCsoportId)
  CREATE TABLE #TempTorolhetoZaradekok (ID INT)

  INSERT INTO #TempTorolhetoZaradekok
  SELECT 
   z.ID
   FROM T_ZARADEK_OSSZES z 
    INNER JOIN T_ZARADEK_OSSZES kiAtZaradek ON  kiAtZaradek.C_TANULOCSOPORTID = z.C_TANULOCSOPORTID  AND kiAtZaradek.TOROLT = 'F'
    INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.ID = z.C_TANULOCSOPORTID
    WHERE  
          kiAtZaradek.C_ISKIVAGYATSOROLASIZARADEK = 'T' 
      AND z.C_ISKIVAGYATSOROLASIZARADEK = 'T'
      AND kiAtZaradek.TOROLT = 'F' 
      AND kiAtZaradek.ID <> z.ID
      AND tcs.C_KILEPESDATUM IS NOT NULL  
      AND z.C_TANEVID = @tanevId 
      AND z.C_INTEZMENYID = @intezmenyId 
      AND (tcs.C_TANULOID = @tanuloId or tcs.ID = @tanuloCsoportId)
   GROUP BY z.ID

  SELECT 
   tcs.ID AS TanuloId
  ,tcs.ID AS TanuloCsoportId
  ,z.ID AS ID
  ,z.C_KELTEZESDATUMA AS KeltezesDatuma
  ,z.C_KELTEZESHELYE AS KeltezesHelye
  ,z.C_ROGZITESDATUMA AS RogzitesDatuma
  ,z.C_ROGZITOID AS RogzitoId
  ,z.C_SZOVEG AS Szoveg
  ,ocs.C_NEV AS OsztalyNev
  ,IIF(tcs.ID = @tanuloCsoportId, 'T', 'F') AS IsKapcsolodo
  ,z.C_SZOVEG + ISNULL(STUFF((
      SELECT ' <br /> '+ISNULL(zny.C_SZOVEG,'')
      FROM T_ZARADEKNYELV_OSSZES zny
        INNER JOIN string_split(@nemzetiDokumentumNyelvek, ',') nyelvek ON nyelvek.value = zny.C_NYELVID
      WHERE zny.C_ZARADEKID = z.ID AND zny.TOROLT = 'F'
      FOR XML PATH('')),1,1,''),'') AS IdegenNyelvSzovegek
  ,z.C_ISKIVAGYATSOROLASIZARADEK AS IsKiVagyAtsorolasiZaradek
  -- NOTE: akkor törölhető, ha nincs kisorolva az adott osztály/csoport-ból, vagy szerepel egy másik ki/átsorolási záradék
 ,IIF(torolhetoZ.ID IS NOT NULL OR tcs.C_KILEPESDATUM IS NULL,'T' ,'F') AS IsTorolheto
 ,IIF(oszt.ID IS NULL, 'F', 'T') AS IsOsztaly
FROM T_ZARADEK_OSSZES z
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.ID = z.C_TANULOCSOPORTID 
  and tcs.C_TANEVID = z.C_TANEVID 
  and tcs.TOROLT = 'F'
  -- NOTE: alábbi feltétel fontos ebben a sorrendben, ha van tanuloid csak arra kell szűrni, ha nincs, akkor a tanulocsoportId-ra
  and (tcs.C_TANULOID = @tanuloId or tcs.ID = @tanuloCsoportId)
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID
LEFT JOIN T_OSZTALY_OSSZES oszt ON oszt.ID = ocs.ID AND oszt.Torolt = 'F'
LEFT JOIN #TempTorolhetoZaradekok torolhetoZ ON torolhetoZ.ID = z.ID
WHERE z.TOROLT = 'F'
  and z.C_TANEVID = @tanevId 
  and z.C_INTEZMENYID = @intezmenyId 
  and ocs.C_FELADATKATEGORIAID = @feladatKategoriaId 
    
DROP TABLE #TempTorolhetoZaradekok
END
GO
