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(100) = NULL
  ,@pOraszam int = NULL
  ,@pTanuloNev nvarchar(100) = NULL
  ,@pOsztalyNev nvarchar(100) = 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 AS	ID
	  ,KozossegiSzolgalat.C_INTERVALLUMKEZDETE AS	IntervallumKezdete
	  ,KozossegiSzolgalat.C_INTERVALLUMVEGE AS IntervallumVege
	  ,KozossegiSzolgalat.C_ROGZITESDATUM AS RogzitesDatuma
	  ,KozossegiSzolgalat.C_TELJESITESIHELYE AS	TeljesitesiHelye 
	  ,KozossegiSzolgalat.C_ORASZAM AS Oraszam
	  ,KozossegiSzolgalat.C_KOZOSSEGISZOLGALATTIPUSA AS	KozossegiSzolgalatTipusa
	  ,KozossegiSzolgalat.C_MEGJEGYZES AS	Megjegyzes
	  ,KozossegiSzolgalat.TOROLT AS	Torolt
	  ,KozossegiSzolgalat.C_TANULOID AS	TanuloId
	  ,Tanulo.C_NYOMTATASINEV AS	TanuloNev
    ,ocs.C_NEV AS	OsztalyNev
	  ,KozossegiSzolgalat.C_UGYIRATSZAM AS Ugyiratszam
	  ,CASE
		 WHEN KozossegiSzolgalat.C_FELJEGYZOID = @pTanarId AND @pToroltElemek = ''T''
		   THEN ''T'' 
		 ELSE ''F'' 
	  END AS Modosithato	
	 FROM T_TANULOKOZOSSEGISZOLGALAT_OSSZES KozossegiSzolgalat
	  INNER JOIN T_FELHASZNALO_OSSZES Tanulo ON KozossegiSzolgalat.C_TANULOID = Tanulo.ID AND Tanulo.TOROLT = ''F''
    INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_TANULOID = KozossegiSzolgalat.C_TANULOID AND tcs.TOROLT = ''F''
	  INNER JOIN T_OSZTALY_OSSZES o ON tcs.C_OSZTALYCSOPORTID = o.ID AND o.TOROLT = ''F''
	  INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = o.ID	AND ocs.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 = @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

  IF @pTanuloNev IS NOT NULL BEGIN
    SET @whereSql += N' 
	  AND Tanulo.C_NYOMTATASINEV = @pTanuloNev'
  END

  IF @pOsztalyNev IS NOT NULL BEGIN
    SET @whereSql += N' 
	  AND ocs.C_NEV = @pOsztalyNev'
  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(100) = NULL
     ,@pOraszam int = NULL
     ,@pTanuloNev nvarchar(100) = NULL
     ,@pOsztalyNev nvarchar(100) = NULL
     ,@pKozossegiSzolgalatTipusa int = NULL'
     ,@pIntezmenyId = @pIntezmenyId
     ,@pTanevId = @pTanevId
     ,@pTanuloId = @pTanuloId
     ,@pTanarId = @pTanarId
     ,@pToroltElemek = @pToroltElemek
     ,@pIntervallumKezdete = @pIntervallumKezdete
     ,@pIntervallumVege = @pIntervallumVege
     ,@pTeljesitesHelye = @pTeljesitesHelye
     ,@pOraszam = @pOraszam
     ,@pTanuloNev = @pTanuloNev
     ,@pOsztalyNev = @pOsztalyNev
     ,@pKozossegiSzolgalatTipusa = @pKozossegiSzolgalatTipusa
  
END
GO