﻿DROP PROCEDURE IF EXISTS uspGetAdminDualisSzerzodesek
GO

CREATE PROCEDURE uspGetAdminDualisSzerzodesek
   @pTanevId int
  ,@pTanarId int = NULL
  ,@pNevSearch nvarchar(255) = NULL
  ,@pAnyjaNeve nvarchar(255) = NULL
  ,@pSzuletesiHely nvarchar(255) = NULL
  ,@pSzuletesiIdoTol datetime = NULL
  ,@pSzuletesiIdoIg datetime = NULL
  ,@pOktatasiAzonosito nvarchar(255) = NULL
  ,@pDualisKepzohelyNev nvarchar(255) = NULL
  ,@pDualisKepzohelyAdoszama nvarchar(255) = NULL
  ,@pFeltoltesDatumTol datetime = NULL
  ,@pFeltoltesDatumIg datetime = NULL
  ,@pStatusz int = NULL

AS
BEGIN
  SET NOCOUNT ON;
  DECLARE @sql nvarchar(max) = ''

SET @sql += 
+ N'
SELECT DISTINCT
    x.SzerzodesFileId
  ,x.Statusz
  ,x.FileId
  ,x.FileNev
  ,x.FeltoltesDatuma
  ,x.FeltoltoId
  ,fh.ID
  ,fh.C_NYOMTATASINEV AS TanuloNev
  ,fh.C_ANYJANEVE AS AnyaNev
  ,fh.C_SZULETESIHELY AS SzuletesiHelye
  ,fh.C_SZULETESIDATUM AS SzuletesiDatum
  ,fh.C_OKTATASIAZONOSITO AS OktatasiAzonosito
  ,fhAlk.ID AS TanarId
  ,fhAlk.C_NYOMTATASINEV AS TanarNev
  ,ma.C_DUALISKEPZOHELYNEVE AS DualisKepzohelyNev
  ,ma.C_DUALISKEPZOHELYADOSZAMA AS DualisKepzohelyAdoszama
FROM T_FOGLALKOZAS_OSSZES ttf
INNER JOIN T_FELHASZNALO_OSSZES fhAlk ON fhAlk.ID = ttf.C_TANARID AND fhAlk.TOROLT = ''F''
INNER JOIN T_ALKALMAZOTT alk ON alk.ID = ttf.C_TANARID AND alk.TOROLT = ''F'' 
INNER JOIN T_MUNKAUGYIADATOK_OSSZES ma ON ma.C_ALKALMAZOTTID = alk.ID AND ma.TOROLT = ''F''
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ttf.C_OSZTALYCSOPORTID = ocs.ID
    AND ocs.C_TANEVID = ttf.C_TANEVID
    AND ocs.TOROLT = ''F''
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON ocs.ID = tcs.C_OSZTALYCSOPORTID
    AND tcs.C_BELEPESDATUM <= GETDATE()
    AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > GETDATE())
    AND tcs.C_TANEVID = ttf.C_TANEVID
    AND tcs.TOROLT = ''F''
INNER JOIN T_FELHASZNALO_OSSZES fh ON tcs.C_TANULOID = fh.ID
    AND fh.C_TANEVID = ttf.C_TANEVID
    AND fh.TOROLT = ''F''
LEFT JOIN (
  SELECT 
      df.ID AS SzerzodesFileId
    ,IIF(df.ID IS NULL, 0, 1) AS Statusz
    ,f.ID AS FileId
    ,f.C_FILENEV AS FileNev
    ,f.C_FELTOLTESDATUM AS FeltoltesDatuma
    ,f.C_FELHASZNALOID AS FeltoltoId
    ,df.C_TANULOID as TanuloId
  FROM T_DUALISSZERZODESFILE_OSSZES df 
  INNER JOIN T_FILE_OSSZES f ON f.ID = df.C_FILEID AND f.TOROLT = ''F''
  WHERE df.C_ISALKALMAZOTTALTALTOROLT = ''F'' AND df.TOROLT = ''F''
  ) x ON x.FeltoltoId = ttf.C_TANARID AND x.TanuloId = fh.ID '

SET @sql += N'
  WHERE ttf.C_TANEVID = @pTanevId
    AND ttf.TOROLT = ''F''
    AND alk.C_ISSZAKOKTATASERTFELELOS = ''T''
    ' + IIF(@pTanarId IS NULL, N'', N' AND alk.ID = @pTanarId') +N'
    ' + IIF(@pNevSearch IS NULL, N'', N' AND fh.C_NYOMTATASINEV LIKE ''%'' + @pNevSearch + ''%'' ') +N'
    ' + IIF(@pAnyjaNeve IS NULL, N'', N' AND fh.C_ANYJANEVE LIKE ''%'' + @pAnyjaNeve + ''%'' ') +N'
    ' + IIF(@pSzuletesiHely IS NULL, N'', N' AND fh.C_SZULETESIHELY LIKE ''%'' + @pSzuletesiHely + ''%'' ') +N'
    ' + IIF(@pSzuletesiIdoTol IS NULL, N'', N' AND fh.C_SZULETESIDATUM >= @pSzuletesiIdoTol ') +N'
    ' + IIF(@pSzuletesiIdoIg IS NULL, N'', N' AND fh.C_SZULETESIDATUM <= @pSzuletesiIdoIg ') +N'
    ' + IIF(@pOktatasiAzonosito IS NULL, N'', N' AND fh.C_OKTATASIAZONOSITO LIKE ''%'' + @pOktatasiAzonosito + ''%'' ') +N'
    ' + IIF(@pDualisKepzohelyNev IS NULL, N'', N' AND ma.C_DUALISKEPZOHELYNEVE LIKE ''%'' + @pDualisKepzohelyNev + ''%'' ') +N'
    ' + IIF(@pDualisKepzohelyAdoszama IS NULL, N'', N' AND ma.C_DUALISKEPZOHELYADOSZAMA LIKE ''%'' + @pDualisKepzohelyAdoszama + ''%'' ') +N'
    ' + IIF(@pFeltoltesDatumTol IS NULL, N'', N' AND x.FeltoltesDatuma >= @pFeltoltesDatumTol ') +N'
    ' + IIF(@pFeltoltesDatumIg IS NULL, N'', N' AND x.FeltoltesDatuma <= @pFeltoltesDatumIg ') +N'
    ' + IIF(@pStatusz IS NULL , N'',IIF(@pStatusz = 0, N' AND x.SzerzodesFileId IS NULL ', N' AND x.SzerzodesFileId IS NOT NULL '))
 
EXEC sp_executesql @sql, N'
     @pTanevId int
    ,@pTanarId int
    ,@pNevSearch nvarchar(255)
    ,@pAnyjaNeve nvarchar(255)
    ,@pSzuletesiHely nvarchar(255)
    ,@pSzuletesiIdoTol datetime
    ,@pSzuletesiIdoIg datetime
    ,@pOktatasiAzonosito nvarchar(255)
    ,@pDualisKepzohelyNev nvarchar(255)
    ,@pDualisKepzohelyAdoszama nvarchar(255)
    ,@pFeltoltesDatumTol datetime
    ,@pFeltoltesDatumIg datetime
    ,@pStatusz int'
    ,@pTanevId = @pTanevId
    ,@pTanarId = @pTanarId
    ,@pNevSearch = @pNevSearch
    ,@pAnyjaNeve = @pAnyjaNeve
    ,@pSzuletesiHely = @pSzuletesiHely
    ,@pSzuletesiIdoTol = @pSzuletesiIdoTol
    ,@pSzuletesiIdoIg = @pSzuletesiIdoIg
    ,@pOktatasiAzonosito = @pOktatasiAzonosito
    ,@pDualisKepzohelyNev = @pDualisKepzohelyNev
    ,@pDualisKepzohelyAdoszama = @pDualisKepzohelyAdoszama
    ,@pFeltoltesDatumTol = @pFeltoltesDatumTol
    ,@pFeltoltesDatumIg = @pFeltoltesDatumIg
    ,@pStatusz = @pStatusz

END
GO
