﻿DROP PROCEDURE IF EXISTS [dbo].[uspCheck4TFelhOktAzonValidation]
GO

CREATE PROCEDURE [dbo].[uspCheck4TFelhOktAzonValidation]
	 @pCheckValidationType			int
	,@pElotag nvarchar(255) = null
	,@pVezeteknev nvarchar(255) = null
	,@pUtonev nvarchar(255) = null
	,@pAnyjaNeve nvarchar(255) = null
	,@pAnyjaVezeteknev nvarchar(255) = null
	,@pAnyjaUtonev nvarchar(255) = null
	,@pSzuletesiHely nvarchar(255) = null
	,@pSzuletesiDatum datetime = null
	,@pTanevIds nvarchar(MAX) = null
	,@pFelvetelStatuszaFelveve		int = null
	,@pFelvetelStatuszaNemFelveve	int = null
	,@pOktatasiAzonosito nvarchar(255) = null
  ,@pBejelentkezesiNev nvarchar(255) = null
AS
BEGIN
	SET NOCOUNT ON;
	DECLARE @sql nvarchar(max) = N'',  @partialSql  nvarchar(max) = N''
  IF (@pCheckValidationType = 1 OR @pCheckValidationType = 2) /* 1 - Tanuló *//* 2 - Alkalmazott */
  BEGIN
    SET @sql = N'
      SELECT 
         fb.C_BEJELENTKEZESINEV
        ,fb.C_GONDVISELOID 
        ,' + CAST(@pCheckValidationType AS char(1)) + ' As ValidationType
        ,f.*
      FROM T_FELHASZNALO_OSSZES f
      LEFT JOIN T_FELHASZNALOBELEPES_OSSZES fb on fb.C_FELHASZNALOID = f.ID AND f.TOROLT = ''F'''+
      IIF(@pCheckValidationType = 1 , ' LEFT JOIN T_TANULO_OSSZES t ON t.ID = f.ID AND t.TOROLT = ''F''','') + 
      IIF(@pCheckValidationType = 2 , ' LEFT JOIN T_ALKALMAZOTT_OSSZES a ON a.ID = f.ID AND a.TOROLT = ''F''','') + 
      'WHERE f.TOROLT = ''F'''
    IF(@pTanevIds IS NOT NULL) BEGIN SET @sql += ' AND f.C_TANEVID IN ('+ @pTanevIds + ')' END
    IF(@pBejelentkezesiNev IS NOT NULL) BEGIN SET @partialSql += IIF(LEN(@partialSql) > 0,' OR ','')+' fb.C_BEJELENTKEZESINEV = @pBejelentkezesiNev ' END
    IF(@pOktatasiAzonosito IS NOT NULL) BEGIN SET @partialSql += IIF(LEN(@partialSql) > 0,' OR ','')+' f.C_OKTATASIAZONOSITO = @pOktatasiAzonosito ' END
    IF(@pVezeteknev IS NOT NULL AND @pUtonev IS NOT NULL AND @pAnyjaNeve IS NOT NULL AND @pSzuletesiHely IS NOT NULL AND @pSzuletesiDatum IS NOT NULL)
      BEGIN
        SET @partialSql += IIF(LEN(@partialSql)  > 0, ' OR ','')+'(f.C_VEZETEKNEV = @pVezeteknev AND f.C_UTONEV = @pUtonev AND f.C_ANYJANEVE = @pAnyjaNeve
					  AND f.C_SZULETESIHELY = @pSzuletesiHely AND f.C_SZULETESIDATUM = @pSzuletesiDatum 
					  AND ISNULL(f.C_ELOTAG,'''') = ISNULL(@pElotag,'''')) '
      END
    SET @sql += 'AND ( '+ @partialSql +' )'

    EXEC sp_executesql 
    @sql,N'
     @pElotag nvarchar(255) = null
    ,@pVezeteknev nvarchar(255) = null
    ,@pUtonev nvarchar(255) = null
    ,@pAnyjaNeve nvarchar(255) = null
    ,@pAnyjaVezeteknev nvarchar(255) = null
    ,@pAnyjaUtonev nvarchar(255) = null
    ,@pSzuletesiHely nvarchar(255) = null
    ,@pSzuletesiDatum datetime = null
    ,@pOktatasiAzonosito nvarchar(255) = null
    ,@pBejelentkezesiNev nvarchar(255) = null'
    ,@pElotag = @pElotag
    ,@pVezeteknev = @pVezeteknev
    ,@pUtonev = @pUtonev
    ,@pAnyjaNeve = @pAnyjaNeve
    ,@pAnyjaVezeteknev = @pAnyjaVezeteknev
    ,@pAnyjaUtonev = @pAnyjaUtonev
    ,@pSzuletesiHely = @pSzuletesiHely
    ,@pSzuletesiDatum = @pSzuletesiDatum
    ,@pOktatasiAzonosito = @pOktatasiAzonosito
    ,@pBejelentkezesiNev = @pBejelentkezesiNev
  END
  ELSE IF (@pCheckValidationType = 3) /* Nebuló */
  BEGIN 
    SELECT 
       ID
      ,3 As ValidationType
    FROM T_NEBULO_OSSZES n
    WHERE
      n.C_TANULOCSALADINEVE = @pVezeteknev AND n.C_TANULOUTONEVE = @pUtonev
      AND n.C_EDESANYJASZULETESICSALADINEV = @pAnyjaVezeteknev AND n.C_EDESANYJASZULETESIUTONEVE = @pAnyjaUtonev
      AND n.C_SZULETESIHELY = @pSzuletesiHely AND n.C_SZULETESIIDO = @pSzuletesiDatum
      AND (n.C_FELVETELSTATUSZA = @pFelvetelStatuszaFelveve OR n.C_FELVETELSTATUSZA = @pFelvetelStatuszaNemFelveve) AND n.TOROLT = 'F'
      AND ISNULL(n.C_ELOTAG,'') = @pElotag
  END

END
GO
