﻿DROP PROCEDURE IF EXISTS uspGetFaliujsagBejegyzesekData
GO

CREATE PROCEDURE dbo.uspGetFaliujsagBejegyzesekData
   @pTanevId int
  ,@pOktNevKatTipus int = NULL
  ,@pFeladatEllatasiHelyId int = NULL
  ,@pOsztalyCsoportId int = NULL
  ,@pIsKellKapcsolodoCsoportok bit
  ,@pFeljegyzoId int = NULL
  ,@pDatumTol datetime = NULL
  ,@pDatumIg datetime = NULL
  ,@pTipus int
AS BEGIN
  SET NOCOUNT ON;

  DECLARE @sql nvarchar(max)

  SET @sql = N'
  SELECT DISTINCT
     te.ID AS ID
    ,te.C_ESEMENYDATUMA AS Datum
    ,te.C_MEGJEGYZES AS Megjegyzes
    ,te.C_TARTALOM AS Tartalom
    ,te.C_TIPUS AS Tipus
    ,te.C_FELJEGYZOID AS FeljegyzoId
    ,te.C_TANTARGYID AS TantargyId
    ,FELJEGYZO.C_NYOMTATASINEV AS FeljegyzoNev
    ,IIF(FELJEGYZO.C_NEVSORREND = ''T'', 
      FELJEGYZO.C_UTONEV + '' '' + FELJEGYZO.C_VEZETEKNEV, 
      FELJEGYZO.C_VEZETEKNEV + '' '' + FELJEGYZO.C_UTONEV) AS FeljegyzoNevElotagNelkul
    ,ocs.ID AS OsztalyCsoportId
    ,ocs.C_NEV AS OsztalyCsoport
    ,ocs.C_FELADATKATEGORIAID AS OktNevKategoriaTipusId
    ,ocs.C_FELADATELLATASIHELYID AS FeladatEllatasiHelyId
    ,te.C_KEZDETE AS Kezdete
    ,te.C_TARGY AS Cim
    ,te.C_FALIUJSAGMEGJELENES AS FaliujsagMegjelenes
    ,te.C_MINDENKINEK AS Mindenkinek
    ,te.C_VEGE AS Vege
    ,targy.C_NEV AS TantargyNev
  FROM T_TANULOESEMENY_OSSZES te
    INNER JOIN T_OSZTALYCSOPORT_TANULOESEMENY ON T_OSZTALYCSOPORT_TANULOESEMENY.C_TANULOESEMENYID = te.ID
    INNER JOIN T_FELHASZNALO_OSSZES FELJEGYZO ON FELJEGYZO.ID = te.C_FELJEGYZOID AND FELJEGYZO.TOROLT = ''F''
    LEFT JOIN T_TANTARGY_OSSZES targy ON targy.ID = te.C_TANTARGYID AND targy.TOROLT = ''F''
    INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = T_OSZTALYCSOPORT_TANULOESEMENY.C_OSZTALYCSOPORTID
      AND ocs.TOROLT = ''F'''
  SET @sql += IIF(@pOktNevKatTipus IS NOT NULL, N'
      AND ocs.C_FELADATKATEGORIAID = @pOktNevKatTipus', '')
  SET @sql += IIF(@pFeladatEllatasiHelyId IS NOT NULL, N'
      AND ocs.C_FELADATELLATASIHELYID = @pFeladatEllatasiHelyId', '')
  IF @pOsztalyCsoportId IS NOT NULL BEGIN
    SET @sql += IIF(@pIsKellKapcsolodoCsoportok = 1, N'
      AND ocs.ID IN (SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(@pOsztalyCsoportId))', N'
      AND ocs.ID = @pOsztalyCsoportId')
  END

  SET @sql += N'
  WHERE te.TOROLT = ''F''
    AND te.C_TANEVID = @pTanevId
  '
  SET @sql += IIF(@pFeljegyzoId IS NOT NULL, N'
    AND te.C_FELJEGYZOID = @pFeljegyzoId', '')
  SET @sql += IIF(@pDatumTol IS NOT NULL, N'
    AND te.C_ESEMENYDATUMA >= @pDatumTol', '')
  SET @sql += IIF(@pDatumIg IS NOT NULL, N'
    AND te.C_ESEMENYDATUMA <= @pDatumIg', '')
  SET @sql += N'
    AND te.C_TIPUS = @pTipus'

  EXEC sp_executesql @sql
    ,N'
       @pOktNevKatTipus int
      ,@pFeladatEllatasiHelyId int
      ,@pOsztalyCsoportId int
      ,@pTanevId int
      ,@pFeljegyzoId int
      ,@pDatumTol datetime
      ,@pDatumIg datetime
      ,@pTipus int
    '
    ,@pOktNevKatTipus = @pOktNevKatTipus
    ,@pFeladatEllatasiHelyId = @pFeladatEllatasiHelyId
    ,@pOsztalyCsoportId = @pOsztalyCsoportId
    ,@pTanevId = @pTanevId
    ,@pFeljegyzoId = @pFeljegyzoId
    ,@pDatumTol = @pDatumTol
    ,@pDatumIg = @pDatumIg
    ,@pTipus = @pTipus
END