﻿-- =============================================
-- Description:  <Előszedjük a szamonkeres elorejelzeseket a megadott paraméterek alapján>
-- =============================================
DROP PROCEDURE IF EXISTS uspGetSzamonkeresElorejelzesGrid
GO

CREATE PROCEDURE uspGetSzamonkeresElorejelzesGrid
   @pIntezmenyId int
  ,@pTanevId int
  ,@pTanuloId int = NULL
  ,@pDatumTol datetime = NULL
  ,@pDatumIg datetime = NULL
  ,@pHetNapjaSrc int = NULL
  ,@pOraszamSrc int = NULL
  ,@pSzamonkeresModSrc int = NULL
  ,@pSzamonkeresMegnevezesSrc nvarchar(1000) = NULL
  ,@pBejelentesDatumaTol datetime = NULL
  ,@pBejelentesDatumaIg datetime = NULL
  ,@pTantargySrc int = NULL
  ,@pTanarSrc int = NULL
  ,@pRegiekElrejtese BIT = 0
  ,@pCsakLegutobbi6 bit = 0
  
  
AS
BEGIN
  DECLARE 
     @sql nvarchar(max)   
     SET @sql = N''
     IF @pTanuloId IS NOT NULL
	  BEGIN
    SET @sql += N'
    CREATE TABLE #OsztalyCsoportList( ID	INT PRIMARY KEY,C_BELEPESDATUM Datetime, C_KILEPESDATUM datetime )
	    INSERT INTO #OsztalyCsoportList (ID, C_BELEPESDATUM, C_KILEPESDATUM)

  	  SELECT 
        OsztalyCsoport.ID,ISNULL(tcs.C_BELEPESDATUM,GETDATE()),ISNULL(tcs.C_KILEPESDATUM,GETDATE())
	    FROM T_TANULOCSOPORT tcs
	    INNER JOIN T_OSZTALYCSOPORT OsztalyCsoport ON OsztalyCsoport.C_INTEZMENYID	= tcs.C_INTEZMENYID
			  AND OsztalyCsoport.C_TANEVID = tcs.C_TANEVID AND OsztalyCsoport.TOROLT = ''F'' AND OsztalyCsoport.ID = tcs.C_OSZTALYCSOPORTID
	    WHERE tcs.C_INTEZMENYID = @pIntezmenyId AND tcs.C_TANEVID = @pTanevId
		    AND tcs.C_TANULOID = @pTanuloId AND	tcs.C_BELEPESDATUM <= GETDATE() AND tcs.TOROLT = ''F''  
        AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= GETDATE()) '
		END
  
  SET @sql += N'
  SELECT '+IIF(@pCsakLegutobbi6 = 1,' TOP 6 WITH TIES ','') + '
    sze.ID as ID
    ,sze.C_SZAMONKERESDATUMA as SzamonkeresDatuma
	  ,oo.C_HETNAPJA as HetNapja
    ,oo.C_ORASZAM as Oraszam
    ,ISNULL(helyettestanar.C_NYOMTATASINEV, tanar.C_NYOMTATASINEV) as TanarNev
	  ,targy.C_NEV as TargyNev
	  ,dib.C_NAME as ErtekelesModNev
    ,sze.C_SZAMONKERESMEGNEVEZES as SzamonkeresMegnevezes
    ,sze.C_ROGZITESDATUMA as BejelentesDatuma
	  ,rogzito.C_NYOMTATASINEV as RogzitoTanar
	  ,ocs.C_NEV as OsztalyNev
	  ,IIF(GETDATE() < sze.C_SZAMONKERESDATUMA, ''T'', ''F'') as Torolheto
	FROM T_SZAMONKERESELOREJELZES sze
    INNER JOIN T_ORARENDIORA oo ON oo.C_ORARENDIORAGROUPID = sze.C_ORARENDIORAGROUPID AND sze.C_SZAMONKERESDATUMA between oo.C_ORAERVENYESSEGKEZDETE AND oo.C_ORAERVENYESSEGVEGE AND oo.TOROLT = ''F'''
  IF @pTanuloId IS NOT NULL
	  BEGIN
    SET @sql += N'
    INNER JOIN #OsztalyCsoportList ocsl ON ocsl.ID = oo.C_OSZTALYCSOPORTID '
    END
  SET @sql += N'
    INNER JOIN T_TANTARGY targy ON targy.ID = oo.C_TANTARGYID AND targy.TOROLT = ''F''
    INNER JOIN T_FELHASZNALO tanar ON tanar.ID = oo.C_TANARID AND tanar.TOROLT = ''F''
    INNER JOIN T_FELHASZNALO rogzito ON rogzito.ID = sze.C_ROGZITOID AND rogzito.TOROLT = ''F''
    INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = oo.C_OSZTALYCSOPORTID AND ocs.TOROLT = ''F''
    INNER JOIN T_DICTIONARYITEMBASE dib ON dib.ID = sze.C_SZAMONKERESMODID AND dib.C_INTEZMENYID = sze.C_INTEZMENYID AND dib.C_TANEVID = sze.C_TANEVID AND dib.C_TYPE = ''ErtekelesMod''
    LEFT JOIN T_HELYETTESITESIIDOSZAK helyettes ON helyettes.C_HELYETTESITETTORARENDID = oo.ID AND helyettes.C_HELYETTESITESNAPJA = sze.C_SZAMONKERESDATUMA AND helyettes.TOROLT = ''F''
    LEFT JOIN T_FELHASZNALO helyettestanar ON helyettestanar.ID = helyettes.C_HELYETTESTANAROKID AND helyettestanar.TOROLT = ''F''
	WHERE sze.C_INTEZMENYID = @pIntezmenyId AND sze.C_TANEVID = @pTanevId
    '
  IF @pDatumTol IS NOT NULL BEGIN  SET @sql += N' AND sze.C_SZAMONKERESDATUMA >= @pDatumTol ' END
  IF @pDatumIg IS NOT NULL BEGIN  SET @sql += N' AND sze.C_SZAMONKERESDATUMA <= @pDatumIg ' END
  IF @pHetNapjaSrc IS NOT NULL BEGIN  SET @sql += N' AND oo.C_HETNAPJA = @pHetNapjaSrc ' END
  IF @pOraszamSrc IS NOT NULL BEGIN  SET @sql += N' AND oo.C_ORASZAM = @pOraszamSrc ' END
  IF @pSzamonkeresModSrc IS NOT NULL BEGIN  SET @sql += N' AND sze.C_SZAMONKERESMODID = @pSzamonkeresModSrc ' END
  IF @pSzamonkeresMegnevezesSrc IS NOT NULL BEGIN  SET @sql += N' AND sze.C_SZAMONKERESMEGNEVEZES LIKE ''%'' + @pSzamonkeresMegnevezesSrc + ''%''' END
  IF @pBejelentesDatumaTol IS NOT NULL BEGIN  SET @sql += N' AND sze.C_ROGZITESDATUMA >= @pBejelentesDatumaTol ' END
  IF @pBejelentesDatumaIg IS NOT NULL BEGIN  SET @sql += N' AND sze.C_ROGZITESDATUMA <= @pBejelentesDatumaIg ' END
  IF @pTantargySrc IS NOT NULL BEGIN  SET @sql += N' AND oo.C_TANTARGYID = @pTantargySrc ' END
  IF @pTanarSrc IS NOT NULL BEGIN  SET @sql += N' AND oo.C_TANARID = @pTanarSrc ' END
  IF (@pRegiekElrejtese IS NOT NULL AND @pRegiekElrejtese = 1) BEGIN  SET @sql += N' AND sze.C_SZAMONKERESDATUMA >= DATEADD(day, -1,GETDATE()) ' END
  IF (@pCsakLegutobbi6 = 1)  BEGIN  SET @sql += N' ORDER BY sze.C_ROGZITESDATUMA ' END
   
  EXEC sp_executesql @sql, N'
    @pIntezmenyId int
    ,@pTanevId int
    ,@pTanuloId int = NULL
    ,@pDatumTol datetime = NULL
    ,@pDatumIg datetime = NULL
    ,@pHetNapjaSrc int = NULL
    ,@pOraszamSrc int = NULL
    ,@pSzamonkeresModSrc int = NULL
    ,@pSzamonkeresMegnevezesSrc nvarchar(1000) = NULL
    ,@pBejelentesDatumaTol datetime = NULL
    ,@pBejelentesDatumaIg datetime = NULL
    ,@pTantargySrc int = NULL
    ,@pTanarSrc int = NULL
	,@pRegiekElrejtese bit = 0'
    ,@pIntezmenyId = @pIntezmenyId
    ,@pTanevId = @pTanevId
    ,@pTanuloId = @pTanuloId
    ,@pDatumTol = @pDatumTol
    ,@pDatumIg = @pDatumIg
    ,@pHetNapjaSrc = @pHetNapjaSrc
    ,@pOraszamSrc = @pOraszamSrc
    ,@pSzamonkeresModSrc = @pSzamonkeresModSrc
    ,@pSzamonkeresMegnevezesSrc = @pSzamonkeresMegnevezesSrc
    ,@pBejelentesDatumaTol = @pBejelentesDatumaTol
    ,@pBejelentesDatumaIg = @pBejelentesDatumaIg
    ,@pTantargySrc = @pTantargySrc
    ,@pTanarSrc = @pTanarSrc
	,@pRegiekElrejtese = @pRegiekElrejtese
    
END
