﻿DROP PROCEDURE IF EXISTS uspGetTanuloOsztalyDataSetByOsztalyCsoportId
GO

CREATE PROCEDURE uspGetTanuloOsztalyDataSetByOsztalyCsoportId
   @pTanevId int
  ,@pOsztalyCsoportId int
AS BEGIN
  SET NOCOUNT ON;

  SELECT
     fh.ID AS TanuloId
    ,ocs.ID AS OsztalyCsoportId
    ,ocs.C_NEV AS OsztalyCsoportNev
    ,ocs.C_EVFOLYAMTIPUSA AS OsztalyCsoportEvfolyamTipusId
    ,oocs.ID AS TanuloOsztalyId
    ,oocs.C_NEV AS TanuloOsztalyNev
    ,oocs.C_EVFOLYAMTIPUSA AS TanuloOsztalyEvfolyamTipusId
  --NOTE: Előszedjük a bejövő osztalycsoport-hoz tartozó tanulókat!
  FROM T_FELHASZNALO_OSSZES fh
    INNER JOIN T_TANULO_OSSZES dk ON dk.ID = fh.ID AND dk.C_ALTANEVID = fh.C_TANEVID AND dk.TOROLT = 'F'
    INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = @pOsztalyCsoportId AND tcs.C_TANULOID = dk.ID AND tcs.C_TANEVID = fh.C_TANEVID AND tcs.TOROLT = 'F'
      AND (tcs.C_BELEPESDATUM <= GETDATE() AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > GETDATE()))
    INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID AND ocs.C_TANEVID = fh.C_TANEVID AND ocs.TOROLT = 'F'
    --NOTE: Előszedjük a tanulókhoz tartozó aktuális osztályukat!
    INNER JOIN T_TANULOCSOPORT_OSSZES otcs ON otcs.C_TANULOID = dk.ID AND otcs.C_TANEVID = fh.C_TANEVID AND otcs.TOROLT = 'F'    
      AND otcs.C_BELEPESDATUM <= GETDATE() AND (otcs.C_KILEPESDATUM IS NULL OR otcs.C_KILEPESDATUM > GETDATE())
    INNER JOIN T_OSZTALY_OSSZES o ON o.ID  = otcs.C_OSZTALYCSOPORTID AND o.C_ALTANEVID = otcs.C_TANEVID AND o.TOROLT = 'F'
    INNER JOIN T_OSZTALYCSOPORT_OSSZES oocs ON oocs.ID = o.ID AND oocs.C_TANEVID = otcs.C_TANEVID AND oocs.TOROLT  = 'F'
      AND (oocs.C_FELADATKATEGORIAID = ocs.C_FELADATKATEGORIAID)
    WHERE fh.TOROLT = 'F'
      AND fh.C_TANEVID = @pTanevId
END

GO

