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

CREATE PROCEDURE [dbo].[sp_TeremKapacitasTullepesVizsgalat]
  @teremIdArray nvarchar(max),
  @tervezettKapacitas int
AS
BEGIN
  SET NOCOUNT ON;
SELECT DISTINCT
  tanulok.ocsopId
 ,tanulok.letszam
 ,ocsop.C_NEV AS ocsopNev
 ,felh.C_NYOMTATASINEV AS tanarNev
 ,ISNULL(targy.C_ROVIDNEV, targy.C_NEV) TargyNev
 ,terem.C_NEV AS teremNev
FROM T_ORARENDIORA AS orarendiora
INNER JOIN T_OSZTALYCSOPORT AS ocsop ON orarendiora.C_OSZTALYCSOPORTID = ocsop.ID
INNER JOIN T_FELHASZNALO AS felh ON orarendiora.C_TANARID = felh.ID
INNER JOIN T_TANTARGY AS targy ON orarendiora.C_TANTARGYID = targy.ID
INNER JOIN T_TEREM AS terem ON orarendiora.C_TEREMID = terem.ID
LEFT JOIN(
  SELECT 
    C_OSZTALYCSOPORTID AS ocsopId
   ,COUNT(1) AS letszam
  FROM T_TANULOCSOPORT
    JOIN T_TANEV tanev ON tanev.ID = T_TANULOCSOPORT.C_TANEVID AND tanev.C_INTEZMENYID = T_TANULOCSOPORT.C_INTEZMENYID
  WHERE T_TANULOCSOPORT.TOROLT = 'F' 
    AND T_TANULOCSOPORT.C_BELEPESDATUM <= GETDATE() AND (T_TANULOCSOPORT.C_KILEPESDATUM IS NULL OR T_TANULOCSOPORT.C_KILEPESDATUM > GETDATE()) AND tanev.C_AKTIV = 'T'
  GROUP BY C_OSZTALYCSOPORTID
) tanulok ON tanulok.ocsopId = ocsop.ID

WHERE
  orarendiora.C_ORAERVENYESSEGKEZDETE < GETDATE() AND
  orarendiora.C_ORAERVENYESSEGVEGE > GETDATE() AND
  orarendiora.C_TEREMID IN (SELECT value FROM STRING_SPLIT(@teremIdArray, ',')) AND
  tanulok.letszam > @tervezettKapacitas AND
  ocsop.TOROLT = 'F' AND
  orarendiora.TOROLT = 'F' AND
  felh.TOROLT = 'F' AND
  targy.TOROLT = 'F' AND
  terem.TOROLT = 'F'
END
GO
