﻿DROP PROCEDURE IF EXISTS dbo.uspGetKiiratkoztatottTanulok
GO

CREATE PROCEDURE dbo.uspGetKiiratkoztatottTanulok
   @pFeladatKategoriaId int
  ,@pTanevId int
AS
BEGIN  
  SET NOCOUNT ON;
  SELECT
     t.ID AS ID
    ,f.Nev
    ,f.NevElotagNelkul
    ,f.SzulDatum
    ,f.Neme
    ,besorolas.KilepesDatum
  FROM T_TANULO_OSSZES t
  INNER JOIN (
    SELECT
       ID
      ,C_NYOMTATASINEV + ' (' + CONVERT(nvarchar(50), C_SZULETESIDATUM, 102) + '.) ' AS Nev
      ,IIF(C_NEVSORREND = 'T',
              C_UTONEV + ' ' + C_VEZETEKNEV,
              C_VEZETEKNEV + ' ' + C_UTONEV) as 'NevElotagNelkul'
                 
      ,C_SZULETESIDATUM AS SzulDatum
      ,C_NEME AS Neme
    FROM T_FELHASZNALO_OSSZES
    WHERE T_FELHASZNALO_OSSZES.TOROLT = 'F'
      AND T_FELHASZNALO_OSSZES.C_TANEVID = @pTanevId
  ) f ON f.ID = t.ID
  INNER JOIN (
    SELECT 
       tcs.C_TANULOID AS TanuloId
      ,MAX(tcs.C_KILEPESDATUM) AS KilepesDatum
    FROM T_TANULOCSOPORT_OSSZES tcs
    INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID
      AND ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId
      AND ocs.C_TANEVID = tcs.C_TANEVID
      AND ocs.TOROLT = 'F'
    INNER JOIN T_OSZTALY_OSSZES o ON o.ID = ocs.ID
      AND o.C_ALTANEVID = ocs.C_TANEVID
      AND o.TOROLT = 'F'
    WHERE tcs.C_KILEPESDATUM IS NOT NULL
      AND tcs.C_TANEVID = @pTanevId
      AND tcs.TOROLT = 'F'
    GROUP BY tcs.C_TANULOID
  ) besorolas ON besorolas.TanuloId = f.ID
  WHERE NOT EXISTS (
    SELECT 1
    FROM T_TANULOCSOPORT_OSSZES tcs
    INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID
      AND ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId
      AND ocs.C_TANEVID = tcs.C_TANEVID
      AND ocs.TOROLT = 'F'
    INNER JOIN T_OSZTALY_OSSZES o ON o.ID = ocs.ID
      AND o.C_ALTANEVID = ocs.C_TANEVID
      AND o.TOROLT = 'F'
    WHERE tcs.C_TANULOID = t.ID
      AND GETDATE() BETWEEN tcs.C_BELEPESDATUM AND ISNULL(tcs.C_KILEPESDATUM, GETDATE())
      AND tcs.C_TANEVID = @pTanevId
      AND tcs.TOROLT = 'F'
    )
    AND t.C_ALTANEVID = @pTanevId AND t.TOROLT = 'F'
 
END 
GO
