DROP PROCEDURE IF EXISTS uspTanuloKeresesForSzervezet
GO

CREATE PROCEDURE [dbo].[uspTanuloKeresesForSzervezet]
   @pDatum DATETIME = NULL
  ,@pIntezmenyId INT
  ,@pTanevId INT
  ,@pTanuloNeve NVARCHAR(255) = NULL
  ,@pSzuletesiIdoKezdet DATETIME = NULL
  ,@pSzuletesiIdoVeg DATETIME = NULL
  ,@pSzuletesiHely NVARCHAR(50) = NULL
  ,@pOktatasiAzonosito NVARCHAR(20) = NULL
  ,@pOsztalyCsoportId INT = NULL
  ,@pAnyjaNeve NVARCHAR(64) = NULL
  ,@pSzervezetId INT = NULL
  ,@pSzervezetNev NVARCHAR(250) = NULL
  ,@pSzervezetAzonosito NVARCHAR(250) = NULL
  ,@pSzervezetekHalmaza INT

AS BEGIN
SET NOCOUNT ON
DECLARE @sql nvarchar(max);
SET @sql = N'
SELECT 
   fh.ID AS TanuloId
  ,fh.C_NYOMTATASINEV AS TanuloNeve
  ,fh.C_SZULETESIHELY AS SzuletesiHely
  ,fh.C_SZULETESIDATUM AS SzuletesiIdo
  ,tcs.C_OSZTALYCSOPORTID AS OsztalyCsoportId
  ,sz.C_NEV AS SzervezetNev
  ,sz.C_AZONOSITO AS SzervezetAzonosito
  ,IIF(fh.C_NEVSORREND = ''T'',
    fh.C_UTONEV + '' '' + fh.C_VEZETEKNEV,
    fh.C_VEZETEKNEV + '' '' + fh.C_UTONEV) AS TanuloNeveElotagNelkul
  ,fh.c_anyjaneve AS AnyjaNeve
  ,fh.C_OKTATASIAZONOSITO AS OktatasiAzonosito
  ,STUFF((SELECT '','' + ocs2.C_NEV
    FROM T_OSZTALYCSOPORT_OSSZES ocs2
    INNER JOIN T_TANULOCSOPORT_OSSZES tcs2 ON tcs2.C_OSZTALYCSOPORTID=ocs2.ID AND tcs.C_TANULOID = tcs2.C_TANULOID AND tcs2.TOROLT = ''F''
    INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = ocs2.ID AND cs.C_SZERVEZETID = tta.C_SZERVEZETID AND cs.TOROLT = ''F''
    WHERE ocs2.TOROLT = ''F''' + IIF(@pOsztalyCsoportId IS NOT NULL , N' AND ocs2.ID = @pOsztalyCsoportId ', '') + 
N'  FOR XML PATH(''''), TYPE).value(''.'', ''varchar(max)''),1,1,'''') as Osztaly
FROM T_TANULOTANUGYIADATOK_OSSZES tta
INNER JOIN (
  T_SZERVEZET_OSSZES sz
  INNER JOIN (
    SELECT ID FROM dbo.fnGetLathatoSzervezetek(@pIntezmenyId, @pTanevId, @pSzervezetId, @pSzervezetekHalmaza)
  ) AS lathato ON lathato.ID = sz.ID
) ON sz.ID = tta.C_SZERVEZETID AND sz.C_TANEVID = tta.C_TANEVID AND sz.TOROLT = ''F''
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tta.C_TANULOCSOPORTID = tcs.ID AND tcs.C_TANEVID = tta.C_TANEVID AND tcs.TOROLT = ''F''
INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ID = tcs.C_TANULOID AND fh.C_TANEVID = tcs.C_TANEVID AND fh.TOROLT = ''F''
WHERE tta.C_TANEVID = @pTanevId AND tta.TOROLT = ''F'''
+ IIF(@pTanuloNeve <> '', ' AND fh.C_NYOMTATASINEV LIKE ''%'' + @pTanuloNeve + ''%'' ', '') + 
+ IIF(@pSzuletesiIdoKezdet IS NOT NULL, ' AND fh.C_SZULETESIDATUM >= @pSzuletesiIdoKezdet ', '') + 
+ IIF(@pSzuletesiIdoVeg IS NOT NULL, ' AND fh.C_SZULETESIDATUM <= @pSzuletesiIdoVeg ', '') +
+ IIF(@pSzervezetNev <> '', ' AND sz.C_NEV LIKE ''%'' + @pSzervezetNev + ''%'' ', '') +
+ IIF(@pSzervezetAzonosito  <> '', ' AND sz.C_AZONOSITO LIKE ''%'' + @pSzervezetAzonosito + ''%'' ', '') +
+ IIF(@pAnyjaNeve <> '', ' AND fh.C_ANYJANEVE LIKE ''%'' + @pAnyjaNeve + ''%'' ', '') + 
+ IIF(@pSzuletesiHely <> '', ' AND fh.C_SZULETESIHELY LIKE ''%'' + @pSzuletesiHely + ''%'' ', '') + 
+ IIF(@pOktatasiAzonosito <> '',' AND fh.C_OKTATASIAZONOSITO LIKE ''%'' + @pOktatasiAzonosito + ''%'' ', '')

EXEC sp_executesql @sql, N'
     @pTanevId INT
    ,@pTanuloNeve NVARCHAR(255) = NULL
    ,@pSzuletesiIdoKezdet DATETIME = NULL
    ,@pSzuletesiIdoVeg DATETIME = NULL
    ,@pSzuletesiHely NVARCHAR(50) = NULL
    ,@pOktatasiAzonosito NVARCHAR(20) = NULL
    ,@pOsztalyCsoportId INT = NULL
    ,@pAnyjaNeve NVARCHAR(64) = NULL
    ,@pSzervezetId INT = NULL
    ,@pSzervezetNev NVARCHAR(250) = NULL
    ,@pSzervezetAzonosito NVARCHAR(250) = NULL
    ,@pSzervezetekHalmaza INT
    ,@pIntezmenyId INT'
    ,@pTanevId = @pTanevId
    ,@pTanuloNeve = @pTanuloNeve
    ,@pSzuletesiIdoKezdet = @pSzuletesiIdoKezdet
    ,@pSzuletesiIdoVeg = @pSzuletesiIdoVeg
    ,@pSzuletesiHely = @pSzuletesiHely
    ,@pOktatasiAzonosito = @pOktatasiAzonosito
    ,@pOsztalyCsoportId  = @pOsztalyCsoportId
    ,@pAnyjaNeve = @pAnyjaNeve
    ,@pSzervezetId = @pSzervezetId
    ,@pSzervezetNev = @pSzervezetNev
    ,@pSzervezetAzonosito = @pSzervezetAzonosito
    ,@pSzervezetekHalmaza = @pSzervezetekHalmaza
    ,@pIntezmenyId = @pIntezmenyId

END
GO