﻿-- =============================================
-- Description:  <Felhasználóhoz köthető osztályok foglalkozások alapján az értékelések szűréséhez>
-- =============================================

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

CREATE PROCEDURE [dbo].[sp_GetFelhasznaloOsztalyaiByFoglalkozas]
   @felhasznaloId INT
  ,@osztaly VARCHAR(32)
  ,@csoport VARCHAR(32)
AS
BEGIN

  -- SET NOCOUNT ON added to prevent extra result sets from
  -- interfering with SELECT statements.
  SET NOCOUNT ON;
  
  SELECT DISTINCT
     CASE WHEN osztalyCsoport.C_NEV NOT LIKE '%[^0-9]%' THEN CAST(LEFT(osztalyCsoport.C_NEV,9) AS INT) ELSE 2147483647 END AS NumberOrder
    ,CASE WHEN LEFT(osztalyCsoport.C_NEV, 1) BETWEEN '0' AND '9' AND osztalyCsoport.C_NEV LIKE '%[^0-9]%' THEN CAST(LEFT(SUBSTRING(osztalyCsoport.C_NEV, 1, PATINDEX('%[^0-9]%', osztalyCsoport.C_NEV) - 1),9) AS INT) ELSE 2147483647 END AS NumberAndTextOrder
    ,osztalyCsoport.ID AS ID
    ,osztalyCsoport.C_NEV AS Nev
    ,CASE WHEN Osztaly IS  NOT NULL THEN @osztaly ELSE @csoport END AS Tipus
    ,osztalyCsoport.C_EVFOLYAMTIPUSA AS Evfolyam
    ,feladatellatasiHely.C_OKTATASINEVELESIFELADATTIPUS AS EllatottFeladatTipusId
    ,csoport.C_TIPUSA  AS CsoportTipusId
  FROM 
    T_FOGLALKOZAS foglalkozas
    LEFT JOIN T_OSZTALYCSOPORT osztalyCsoport
      ON osztalyCsoport.ID = foglalkozas.C_OSZTALYCSOPORTID
    LEFT JOIN
      T_CSOPORT csoport ON
          csoport.ID = foglalkozas.C_OSZTALYCSOPORTID
        AND csoport.TOROLT = 'F'
    LEFT JOIN T_TANTARGY tantargy
      ON tantargy.ID = foglalkozas.C_TANTARGYID
    LEFT JOIN T_FELHASZNALO felhasznalo
      ON felhasznalo.ID = foglalkozas.C_TANARID
    LEFT JOIN (SELECT ID, 'T' AS Osztaly FROM T_OSZTALY_OSSZES) AS o
      ON o.ID = osztalyCsoport.ID
        LEFT JOIN (SELECT ID, C_TIPUSA FROM T_CSOPORT_OSSZES WHERE TOROLT = 'F') AS cs
      ON cs.ID = osztalyCsoport.ID
    INNER JOIN T_FELADATELLATASIHELY feladatellatasiHely
      ON osztalyCsoport.C_FELADATELLATASIHELYID = feladatellatasiHely.ID
  WHERE 
    foglalkozas.TOROLT = 'F' AND 
    foglalkozas.C_TANARID = @felhasznaloId  
  ORDER BY 
    NumberOrder ASC, NumberAndTextOrder ASC, osztalyCsoport.C_NEV ASC  

END
GO