﻿DROP PROCEDURE IF EXISTS uspGetDokumentumTanuloOrarendOsztalyonkent
GO

CREATE PROCEDURE uspGetDokumentumTanuloOrarendOsztalyonkent
   @tanevId int
  ,@osztalyId int
  ,@aktivTanevId int
  ,@isEgyebFoglalkozasok bit
  ,@pTanuloId int = NULL
  ,@orarendErvenyessegiDatum date
AS BEGIN
  SET NOCOUNT ON;

  DECLARE
     @feladatKategoriaId int
    ,@tanuloId int

  DECLARE @tabla TABLE (
     TanuloId int
    ,Ora int
    ,HetirendId int
    ,Hetfo nvarchar (max)
    ,Kedd nvarchar (max)
    ,Szerda nvarchar (max)
    ,Csutortok nvarchar (max)
    ,Pentek nvarchar (max)
    ,Szombat nvarchar (max)
    ,Hetirend nvarchar (max)
    ,TanuloNev nvarchar (max)
  )

  SELECT TOP 1
    @feladatKategoriaId = o.C_FELADATKATEGORIAID
  FROM T_OSZTALYCSOPORT_OSSZES o
  WHERE o.ID = @osztalyId

  SELECT
     TanuloId
    ,C_NYOMTATASINEV AS TanuloNev
  INTO #Tanulok
  FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyId, 'T') Tanulok
    INNER JOIN T_FELHASZNALO_OSSZES Felhasznalo ON Felhasznalo.Id = Tanulok.TanuloId
  WHERE @pTanuloId IS NULL
    OR @pTanuloId = TanuloId

  DECLARE kurzor CURSOR
  FOR
    SELECT
      TanuloId
    FROM #Tanulok

    OPEN kurzor

    FETCH NEXT FROM kurzor
      INTO @tanuloId

    WHILE @@FETCH_STATUS = 0
      BEGIN

        INSERT INTO @tabla
        EXEC sp_GetDokumentumTanuloOrarend
           @tanevID
          ,@tanuloId
          ,@aktivTanevId
          ,@isEgyebFoglalkozasok
          ,@orarendErvenyessegiDatum
          ,@feladatKategoriaId

        FETCH NEXT FROM kurzor INTO
          @tanuloId
      END

    CLOSE kurzor
  DEALLOCATE kurzor

   SELECT
      TanuloId
     ,TanuloNev
     ,Hetirend
   FROM #Tanulok Tanulok
     CROSS JOIN(
       SELECT DISTINCT
         Hetirend
       FROM @tabla
     ) AS Hetirend(Hetirend)
   ORDER BY
     Hetirend

   SELECT
     OsztalyokOrarendje.*
   FROM @tabla AS OsztalyokOrarendje
   ORDER BY
     Ora

END
GO
