﻿DROP PROCEDURE IF EXISTS uspGetTanuloOsztalyCsoportjai
GO

CREATE PROCEDURE uspGetTanuloOsztalyCsoportjai
   @pTanuloId int
  ,@pTanevId int
  ,@pIsAktiv bit
  ,@pFeladatKategoriaId int
AS
BEGIN
  DECLARE
     @tanevNev nvarchar(30)
    ,@sql nvarchar(max)

  SELECT @tanevNev = C_NEV
  FROM T_TANEV
  WHERE ID = @pTanevId

  SET @sql = N'
  SELECT
     tcs.ID
    ,tcs.C_OSZTALYCSOPORTID OsztalyCsoportId
    ,ocs.C_NEV Nev
    ,ocs.C_EVFOLYAMTIPUSA EvfolyamTipus
    ,ocs.C_FELADATKATEGORIAID FeladatKategoriaId
    ,@tanevNev Tanev
    ,tcs.C_BELEPESDATUM ErvKezd
    ,tcs.C_KILEPESDATUM ErvVeg
    ,cs.C_TIPUSA CsoportTipus
    ,ob.C_NEV AS Osztalybontas
    ,o.C_KEPZESIFORMA AS KepzesiForma
    ,CASE WHEN o.ID IS NOT NULL THEN ''F'' ELSE ''T'' END AS IsCsoport
  FROM T_TANULOCSOPORT_OSSZES tcs
  INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID AND (ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId OR @pFeladatKategoriaId IS NULL) AND ocs.TOROLT = ''F'' AND ocs.C_TANEVID = tcs.C_TANEVID
    LEFT JOIN T_CSOPORT_OSSZES cs ON cs.ID = ocs.ID AND cs.TOROLT = ''F'' AND cs.C_ALTANEVID = tcs.C_TANEVID
    LEFT JOIN T_OSZTALYCSOPORT_OSSZES ob ON ob.ID = cs.C_OSZTALYBONTASID AND ob.TOROLT = ''F'' AND ob.C_TANEVID = tcs.C_TANEVID
    LEFT JOIN T_OSZTALY_OSSZES o ON ocs.ID = o.ID AND o.TOROLT = ''F'' AND o.C_ALTANEVID = tcs.C_TANEVID
  WHERE tcs.TOROLT = ''F''  AND tcs.C_TANEVID = @tanevId
    AND tcs.C_TANULOID = @tanuloId
    ' + IIF(@pIsAktiv = 1, 'AND tcs.C_BELEPESDATUM <= GETDATE() AND (tcs.C_KILEPESDATUM is null or tcs.C_KILEPESDATUM > GETDATE())', '')

  EXEC sp_executesql @sql, N'
     @tanuloId int
    ,@tanevNev nvarchar(30)
    ,@tanevId int
    ,@pFeladatKategoriaId int'
    ,@tanuloId = @pTanuloId
    ,@tanevNev = @tanevNev
    ,@tanevId = @pTanevId
    ,@pFeladatKategoriaId = @pFeladatKategoriaId
END
GO


