SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

DROP PROCEDURE IF EXISTS [dbo].[sp_GetKozossegiSzolgalatokReszletek]
GO

-- =============================================
-- Description:	<Előszedjük a tanuló közösségi szolgálatait részletesen>
-- =============================================
CREATE PROCEDURE [dbo].[sp_GetKozossegiSzolgalatokReszletek]
   @pIntezmenyId INT
  ,@pTanevId INT
  ,@pTanuloId INT = NULL
  ,@pTanarId INT = NULL
  ,@pToroltElemek CHAR = 'F'
  ,@pIntervallumKezdete DATETIME = NULL
  ,@pIntervallumVege DATETIME = NULL
  ,@pTeljesitesHelye NVARCHAR = NULL
  ,@pOraszam INT = NULL
  ,@pKozossegiSzolgalatTipusa INT = NULL
AS
BEGIN

	SET NOCOUNT ON;

   DECLARE 
     @sql nvarchar(max)
    ,@selectSql nvarchar(max)
    ,@whereSql nvarchar(max)
    ,@orderSql nvarchar(max)


  SET @selectSql = N'
  SELECT
	 KozossegiSzolgalat.ID								ID
	,KozossegiSzolgalat.C_INTERVALLUMKEZDETE			IntervallumKezdete
	,KozossegiSzolgalat.C_INTERVALLUMVEGE   			IntervallumVege
	,KozossegiSzolgalat.C_ROGZITESDATUM     			RogzitesDatuma
	,KozossegiSzolgalat.C_TELJESITESIHELYE				TeljesitesiHelye 
	,KozossegiSzolgalat.C_ORASZAM						Oraszam
	,KozossegiSzolgalat.C_KOZOSSEGISZOLGALATTIPUSA		KozossegiSzolgalatTipusa
	,KozossegiSzolgalat.C_MEGJEGYZES					Megjegyzes
	,KozossegiSzolgalat.TOROLT							Torolt
	,KozossegiSzolgalat.C_TANULOID						TanuloId
	,Tanulo.C_NYOMTATASINEV						        TanuloNev
	,KozossegiSzolgalat.C_UGYIRATSZAM					Ugyiratszam
	,CASE
		WHEN KozossegiSzolgalat.C_FELJEGYZOID = @pTanarId AND @pToroltElemek = ''T''
			THEN ''T'' 
			ELSE ''F'' 
	END												    Modosithato	
	FROM T_TANULOKOZOSSEGISZOLGALAT_OSSZES KozossegiSzolgalat
	  INNER JOIN T_FELHASZNALO_OSSZES Tanulo ON KozossegiSzolgalat.C_TANULOID = Tanulo.ID AND Tanulo.TOROLT = ''F''			
	'

  SET @whereSql = N'
    WHERE
          KozossegiSzolgalat.C_INTEZMENYID = @pIntezmenyId
      AND	KozossegiSzolgalat.TOROLT = IIF(@pToroltElemek = ''T'', KozossegiSzolgalat.TOROLT, ''F'')'

  IF @pTanuloId IS NOT NULL BEGIN
     SET @whereSql = N'
      AND KozossegiSzolgalat.C_TANULOID = @pTanuloId'
  END

  IF @pIntervallumKezdete IS NOT NULL BEGIN
     SET @whereSql = N'
      AND KozossegiSzolgalat.C_INTERVALLUMKEZDETE = @pIntervallumKezdete'
  END

  IF @pIntervallumVege IS NOT NULL BEGIN
     SET @whereSql = N'
      AND KozossegiSzolgalat.C_INTERVALLUMVEGE = @pIntervallumVege'
  END

  IF @pTeljesitesHelye IS NOT NULL BEGIN
     SET @whereSql = N'
      AND KozossegiSzolgalat.C_TELJESITESIHELYE LIKE ''%''+ @pTeljesitesHelye +''%'''
  END

  IF @pOraszam IS NOT NULL BEGIN
     SET @whereSql = N'
      AND KozossegiSzolgalat.C_ORASZAM = @pOraszam'
  END

  IF @pKozossegiSzolgalatTipusa IS NOT NULL BEGIN
     SET @whereSql = N'
      AND KozossegiSzolgalat.C_KOZOSSEGISZOLGALATTIPUSA = @pKozossegiSzolgalatTipusa'
  END


  SET @orderSql = N'
    ORDER BY 
		  KozossegiSzolgalat.C_INTERVALLUMKEZDETE DESC'


  SET @sql = @selectSql + @whereSql + @orderSql


  EXEC sp_executesql @sql, N'
     @pIntezmenyId INT
    ,@pTanevId INT
    ,@pTanuloId INT = NULL
    ,@pTanarId INT = NULL
    ,@pToroltElemek CHAR
    ,@pIntervallumKezdete DATETIME = NULL
    ,@pIntervallumVege DATETIME = NULL
    ,@pTeljesitesHelye NVARCHAR = NULL
    ,@pOraszam INT = NULL
    ,@pKozossegiSzolgalatTipusa INT = NULL'
    ,@pIntezmenyId = @pIntezmenyId
    ,@pTanevId = @pTanevId
    ,@pTanuloId = @pTanuloId
    ,@pTanarId = @pTanarId
    ,@pToroltElemek = @pToroltElemek
    ,@pIntervallumKezdete = @pIntervallumKezdete
    ,@pIntervallumVege = @pIntervallumVege
    ,@pTeljesitesHelye = @pTeljesitesHelye
    ,@pOraszam = @pOraszam
    ,@pKozossegiSzolgalatTipusa = @pKozossegiSzolgalatTipusa

END