﻿DROP PROCEDURE IF EXISTS uspGetKapcsolodoOsztalycsoportokByTanar
GO

CREATE PROCEDURE uspGetKapcsolodoOsztalycsoportokByTanar
   @pTanarId int
  ,@pMuveszetiAg int = NULL
  ,@pTipusId int
  ,@pTanevId int
  ,@pOsztalyKell bit = 1
  ,@pCsoportKell bit = 0
  ,@pTartottOraKell bit = 1
  ,@pOsztalyGroupName nvarchar(100) = NULL
  ,@pCsoportGroupName nvarchar(100) = NULL
AS
BEGIN
  SET NOCOUNT ON;
  
  DECLARE @feladatKategoriaId int = 7555
    ,@defaultEvfolyamId int
  CREATE TABLE #kapcsolodoOsztalyCsoportok (ID int)

  SELECT @defaultEvfolyamId = (SELECT TOP 1 ID FROM T_DICTIONARYITEMBASE_OSSZES WHERE C_DICTIONARYTYPEID = @pTipusId AND C_VALUE = 1 AND TOROLT = 'F')

  INSERT INTO #kapcsolodoOsztalyCsoportok (ID)
  EXEC uspGetDokumentumTanarKapcsolodoOsztalyai
     @pTanarId = @pTanarId
    ,@pTanevId = @pTanevId
    ,@pOsztalyKell = @pOsztalyKell
    ,@pCsoportKell = @pCsoportKell
    ,@pTartottOraKell = @pTartottOraKell
    ,@pFeladatKategoriaId = @feladatKategoriaId

  SELECT DISTINCT
     CASE WHEN ocs.C_NEV NOT LIKE '%[^0-9]%' THEN CAST(LEFT(ocs.C_NEV, 9) AS int) 
      ELSE 2147483647 
      END AS NumberOrder
    ,CASE WHEN LEFT(ocs.C_NEV, 1) BETWEEN '0' AND '9' AND ocs.C_NEV LIKE '%[^0-9]%' THEN CAST(LEFT(SUBSTRING(ocs.C_NEV, 1, PATINDEX('%[^0-9]%', ocs.C_NEV) - 1),9) AS int) 
      ELSE 2147483647 
      END AS NumberAndTextOrder
    ,ocs.ID AS ID
    ,ocs.C_NEV AS Nev
    ,ocs.C_EVFOLYAMTIPUSA AS Evfolyam
    ,CASE WHEN @pOsztalyGroupName IS NOT NULL AND @pCsoportGroupName IS NOT NULL THEN
      CASE WHEN o.ID IS NOT NULL THEN @pOsztalyGroupName 
        ELSE @pCsoportGroupName 
        END
      ELSE 
        dib2.C_NAME
      END AS GroupName
  FROM T_OSZTALYCSOPORT_OSSZES ocs
    INNER JOIN #kapcsolodoOsztalyCsoportok kocs ON kocs.ID = ocs.ID
    INNER JOIN T_DICTIONARYITEMBASE_OSSZES dib ON dib.ID = ISNULL(ocs.C_EVFOLYAMTIPUSA, @defaultEvfolyamId) 
      AND dib.TOROLT = 'F' 
      AND dib.C_TANEVID = ocs.C_TANEVID
    LEFT JOIN T_OSZTALY_OSSZES o ON o.ID = ocs.ID 
      AND o.TOROLT = 'F' 
      AND o.C_ALTANEVID = ocs.C_TANEVID
    INNER JOIN T_DICTIONARYITEMBASE_OSSZES dib2 ON dib2.ID = ocs.C_MUVESZETIAGID 
      AND dib2.C_TANEVID = ocs.C_TANEVID 
      AND dib2.TOROLT='F'
  WHERE ocs.TOROLT = 'F'
    AND ocs.C_TANEVID = @pTanevId
    AND ocs.C_FELADATKATEGORIAID = @feladatKategoriaId
    AND (@pMuveszetiAg IS NULL OR ocs.C_MUVESZETIAGID = @pMuveszetiAg)
  ORDER BY
     GroupName DESC
    ,NumberOrder ASC
    ,NumberAndTextOrder ASC
    ,Nev ASC
END
GO
