DROP PROCEDURE IF EXISTS [dbo].[sp_GetErettsegiKerdesek]
GO

CREATE PROCEDURE [dbo].[sp_GetErettsegiKerdesek] 
  @tanuloId int,
  @kerdesSzam int,
  @erettsegiTantargyId int,
  @erettsegiSzintId int
AS
BEGIN
  SET NOCOUNT ON;
  
  DECLARE @SorokSzama INT
  DECLARE @TempErettsegi TABLE
  (
    Id int,
    Cim nvarchar(1000),
    ErettsegiSzintId int,
    ErettsegiTantargyId int,
    HelyesValasz nvarchar(1000),
    Kategoria nvarchar(10),
    Kep nvarchar(max),
    Kerdes nvarchar(1000),
    Szoveg nvarchar(2000),
    Tema nvarchar(1000),
    ValaszB nvarchar(1000),
    ValaszC nvarchar(1000),
    ValaszD nvarchar(1000),
    ValaszE nvarchar(1000),
    ValaszF nvarchar(1000),
    ValaszSzoveges nvarchar(1000)
  )
  
  IF (@kerdesSzam = 0)
  BEGIN
    SET @kerdesSzam = 50000
  END
  
  -- Új kérdesek betöltése
  INSERT @TempErettsegi (
        Id, Cim, ErettsegiSzintId, ErettsegiTantargyId,
        HelyesValasz, Kategoria, Kep, Kerdes, Szoveg, Tema,
        ValaszB, ValaszC, ValaszD, ValaszE, ValaszF, ValaszSzoveges)
  SELECT TOP (@kerdesSzam)
        [ID] as Id
        ,[C_CIM] as Cim
        ,[C_ERETTSEGISZINTID] as ErettsegiSzintId
        ,[C_ERETTSEGITANTARGYID] as ErettsegiTantargyId
        ,[C_HELYESVALASZ] as HelyesValasz
        ,[C_KATEGORIA] as Kategoria
        ,[C_KEP] as Kep
        ,[C_KERDES] as Kerdes
        ,[C_SZOVEG] as Szoveg
        ,[C_TEMA] as Tema
        ,[C_VALASZB] as ValaszB
        ,[C_VALASZC] as ValaszC
        ,[C_VALASZD] as ValaszD
        ,[C_VALASZE] as ValaszE
        ,[C_VALASZF] as ValaszF
        ,[C_VALASZSZOVEGES] as ValaszSzoveges
  FROM T_ERETTSEGIKERDES ek
  WHERE  ek.C_ERETTSEGISZINTID = @erettsegiSzintId AND 
      ek.C_ERETTSEGITANTARGYID = @erettsegiTantargyId AND
      NOT EXISTS (SELECT 1 FROM T_ERETTSEGIVALASZ tv WHERE tv.C_TANULOID = @tanuloId AND tv.C_ERETTSEGIKERDESID = ek.ID)
  ORDER BY NEWID()
  
  SELECT @SorokSzama = COUNT(1) FROM @TempErettsegi

  -- Utoljára hibás kérdések betöltése
  IF (@SorokSzama < @kerdesSzam)
  BEGIN
    INSERT @TempErettsegi (
          Id, Cim, ErettsegiSzintId, ErettsegiTantargyId,
          HelyesValasz, Kategoria, Kep, Kerdes, Szoveg, Tema,
          ValaszB, ValaszC, ValaszD, ValaszE, ValaszF, ValaszSzoveges)
    SELECT TOP (@kerdesSzam - @SorokSzama)
          [ID] as Id
          ,[C_CIM] as Cim
          ,[C_ERETTSEGISZINTID] as ErettsegiSzintId
          ,[C_ERETTSEGITANTARGYID] as ErettsegiTantargyId
          ,[C_HELYESVALASZ] as HelyesValasz
          ,[C_KATEGORIA] as Kategoria
          ,[C_KEP] as Kep
          ,[C_KERDES] as Kerdes
          ,[C_SZOVEG] as Szoveg
          ,[C_TEMA] as Tema
          ,[C_VALASZB] as ValaszB
          ,[C_VALASZC] as ValaszC
          ,[C_VALASZD] as ValaszD
          ,[C_VALASZE] as ValaszE
          ,[C_VALASZF] as ValaszF
          ,[C_VALASZSZOVEGES] as ValaszSzoveges
    FROM T_ERETTSEGIKERDES ek
    WHERE  ek.C_ERETTSEGISZINTID = @erettsegiSzintId AND 
        ek.C_ERETTSEGITANTARGYID = @erettsegiTantargyId AND
        NOT EXISTS (SELECT 1 FROM @TempErettsegi te WHERE te.Id = ek.ID) AND
        'F' = (SELECT TOP 1 C_HELYES FROM T_ERETTSEGIVALASZ tv WHERE tv.C_TANULOID = @tanuloId AND tv.C_ERETTSEGIKERDESID = ek.ID ORDER BY C_DATUM DESC)
    ORDER BY NEWID()
  END
  
  SELECT @SorokSzama = COUNT(1) FROM @TempErettsegi
  
  -- Maradék elemek véletlenszerűen
  IF (@SorokSzama < @kerdesSzam)
  BEGIN
    INSERT @TempErettsegi (
          Id, Cim, ErettsegiSzintId, ErettsegiTantargyId,
          HelyesValasz, Kategoria, Kep, Kerdes, Szoveg, Tema,
          ValaszB, ValaszC, ValaszD, ValaszE, ValaszF, ValaszSzoveges)
    SELECT TOP (@kerdesSzam - @SorokSzama)
          [ID] as Id
          ,[C_CIM] as Cim
          ,[C_ERETTSEGISZINTID] as ErettsegiSzintId
          ,[C_ERETTSEGITANTARGYID] as ErettsegiTantargyId
          ,[C_HELYESVALASZ] as HelyesValasz
          ,[C_KATEGORIA] as Kategoria
          ,[C_KEP] as Kep
          ,[C_KERDES] as Kerdes
          ,[C_SZOVEG] as Szoveg
          ,[C_TEMA] as Tema
          ,[C_VALASZB] as ValaszB
          ,[C_VALASZC] as ValaszC
          ,[C_VALASZD] as ValaszD
          ,[C_VALASZE] as ValaszE
          ,[C_VALASZF] as ValaszF
          ,[C_VALASZSZOVEGES] as ValaszSzoveges
    FROM T_ERETTSEGIKERDES ek
    WHERE  ek.C_ERETTSEGISZINTID = @erettsegiSzintId AND 
        ek.C_ERETTSEGITANTARGYID = @erettsegiTantargyId AND
        NOT EXISTS (SELECT 1 FROM @TempErettsegi te WHERE te.Id = ek.ID)
    ORDER BY NEWID()
  END

  SELECT TOP (@kerdesSzam)
         Id as Id
        ,Cim as Cim
        ,ErettsegiSzintId as ErettsegiSzintId
        ,ErettsegiTantargyId as ErettsegiTantargyId
        ,HelyesValasz as HelyesValasz
        ,Kategoria as Kategoria
        ,Kep as Kep
        ,Kerdes as Kerdes
        ,Szoveg as Szoveg
        ,Tema as Tema
        ,ValaszB as ValaszB
        ,ValaszC as ValaszC
        ,ValaszD as ValaszD
        ,ValaszE as ValaszE
        ,ValaszF as ValaszF
        ,ValaszSzoveges as ValaszSzoveges
  FROM @TempErettsegi

END
GO
