﻿DROP PROCEDURE IF EXISTS uspGetErettsegiEredmenyekKeresesData
GO

CREATE PROCEDURE [dbo].[uspGetErettsegiEredmenyekKeresesData]
   @pTanevId int
  ,@pFeladatKategoriaId int = NULL
  ,@pFeladatEllatasiHelyId int = NULL
  ,@pErettsegiEredmenyId int = NULL
  ,@pErdemjegy int = NULL
  ,@pSzazalek int = NULL
AS
BEGIN
  SET NOCOUNT ON;

  DECLARE @sql nvarchar(max)
  DECLARE @szazalekSzamitas nvarchar(250) = N'IIF((ee.C_ERETTSEGITANTARGY = 6589 AND ee.C_SZOBELIPONTSZAM IS NOT NULL ), FLOOR(ee.C_OSSZPONTSZAM*100.0/150), FLOOR(ee.C_OSSZPONTSZAM*100.0/eta.C_OSSZMAXPONTSZAM))'
  DECLARE @erdemjegySzamitas nvarchar(1000) = N'--közép
    IIF(ee.C_ERETTSEGISZINT = 6579,
      IIF(FLOOR(ee.C_OSSZPONTSZAM*100.0/eta.C_OSSZMAXPONTSZAM) <= 24, 1,
        IIF(FLOOR(ee.C_OSSZPONTSZAM*100.0/eta.C_OSSZMAXPONTSZAM) BETWEEN 25 AND 39, 2,
          IIF(FLOOR(ee.C_OSSZPONTSZAM*100.0/eta.C_OSSZMAXPONTSZAM) BETWEEN 40 AND 59, 3,
            IIF(FLOOR(ee.C_OSSZPONTSZAM*100.0/eta.C_OSSZMAXPONTSZAM) BETWEEN 60 AND 79, 4,
              IIF(ee.C_OSSZPONTSZAM IS NOT NULL, 5, NULL)
            )
          )
        )
      ),
    --emelt
      IIF(FLOOR(ee.C_OSSZPONTSZAM*100.0/eta.C_OSSZMAXPONTSZAM) <= 24, 1,
        IIF(FLOOR(ee.C_OSSZPONTSZAM*100.0/eta.C_OSSZMAXPONTSZAM) BETWEEN 25 AND 32, 2,
          IIF(FLOOR(ee.C_OSSZPONTSZAM*100.0/eta.C_OSSZMAXPONTSZAM) BETWEEN 33 AND 46, 3,
            IIF(FLOOR(ee.C_OSSZPONTSZAM*100.0/eta.C_OSSZMAXPONTSZAM) BETWEEN 47 AND 59, 4,
              IIF(ee.C_OSSZPONTSZAM IS NOT NULL, 5, NULL)
            )
          )
        )
      )
    )'

  SET @sql = N'
  SELECT DISTINCT
     ee.ID
    ,f.C_NYOMTATASINEV AS TanuloNev
    ,f.C_ANYJANEVE AS AnyjaNeve
    ,osztaly.C_NEV AS OsztalyNev
    ,osztaly.ID AS OsztalyId
    ,f.C_OKTATASIAZONOSITO AS OktatasiAzonosito
    ,ISNULL(CONVERT(nvarchar(25), f.C_SZULETESIDATUM, 102),'''') as SzuletesiDatum
    ,ee.C_ERETTSEGITANTARGY AS Tantargy
    ,ee.C_ERETTSEGISZINT AS Szint
    ,ee.C_ERETTSEGITIPUS AS Tipus
    ,ee.C_IRASBELIPONTSZAM AS IrasbeliPontszam
    ,ee.C_SZOBELIPONTSZAM AS SzobeliPontszam
    ,ee.C_GYAKORLATPONTSZAM AS GyakorlatiPontszam
    ,ee.C_MEGJEGYZES AS Megjegyzes
    ,ee.C_OSSZPONTSZAM AS OsszPontszam
    ,'
  SET @sql += @szazalekSzamitas
  SET @sql += N' AS Szazalek
    ,'
  SET @sql += @erdemjegySzamitas
  SET @sql += N' AS Erdemjegy
  FROM T_ERETTSEGIEREDMENY_OSSZES ee
    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID = ee.C_ERETTSEGITANTARGY AND d.TOROLT = ''F''
    LEFT JOIN T_ERETTSEGITANTARGYADATOK_OSSZES eta ON eta.C_ERETTSEGITANTARGY = ee.C_ERETTSEGITANTARGY AND eta.TOROLT = ''F'' AND eta.C_ERETTSEGISZINT = ee.C_ERETTSEGISZINT
    LEFT JOIN T_TANULO_OSSZES t ON t.ID = ee.C_TANULOID AND t.TOROLT = ''F''
    LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = t.ID AND t.TOROLT = ''F''
    LEFT JOIN (
      SELECT tcs.C_TANULOID, ocs.C_NEV, ocs.ID
      FROM T_TANULOCSOPORT_OSSZES tcs
        INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON tcs.C_OSZTALYCSOPORTID = ocs.ID AND ocs.TOROLT = ''F'' 
          AND (@pFeladatKategoriaId IS NULL OR ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId) 
          AND (@pFeladatEllatasiHelyId IS NULL OR ocs.C_FELADATELLATASIHELYID = @pFeladatEllatasiHelyId)
        INNER JOIN T_OSZTALY_OSSZES o ON ocs.ID = o.ID AND o.TOROLT = ''F''
      WHERE tcs.TOROLT = ''F''
    ) osztaly ON t.ID = osztaly.C_TANULOID
  WHERE ee.TOROLT = ''F''
    AND ee.C_TANEVID = @pTanevId'

  SET @sql += IIF(@pErettsegiEredmenyId IS NOT NULL, N'
    AND ee.ID = @pErettsegiEredmenyId', '')
  SET @sql += IIF(@pErdemjegy IS NOT NULL, N'
    AND ' + @erdemjegySzamitas + ' = @pErdemjegy', '')
  SET @sql += IIF(@pSzazalek IS NOT NULL, N'
    AND ' + @szazalekSzamitas + ' = @pSzazalek', '')

  EXEC sp_executesql @sql
    ,N'
       @pTanevId int
      ,@pFeladatKategoriaId int
      ,@pFeladatEllatasiHelyId int
      ,@pErdemjegy int
      ,@pSzazalek int
      ,@pErettsegiEredmenyId int
    '
    ,@pTanevId = @pTanevId
    ,@pFeladatKategoriaId = @pFeladatKategoriaId
    ,@pFeladatEllatasiHelyId = @pFeladatEllatasiHelyId
    ,@pErdemjegy = @pErdemjegy
    ,@pSzazalek = @pSzazalek
    ,@pErettsegiEredmenyId = @pErettsegiEredmenyId
END