USP_SIMPLEDATALIST_MKTPLANMAILING

Returns a list of all plan marketing efforts (lowest level of each plan).

Parameters

Parameter Parameter Type Mode Description
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@SECURITYFEATUREID uniqueidentifier IN
@SECURITYFEATURETYPE tinyint IN

Definition

Copy


CREATE procedure dbo.USP_SIMPLEDATALIST_MKTPLANMAILING
(
  @CURRENTAPPUSERID uniqueidentifier,
  @SECURITYFEATUREID uniqueidentifier = null,
  @SECURITYFEATURETYPE tinyint = null
)
as
  set nocount on;

  declare @TEMPTABLE table([VALUE] uniqueidentifier, [LABEL] nvarchar(256));

  declare MAILINGCURSOR cursor local fast_forward for
  select
    [MKTMARKETINGPLANITEM].[ID],
    [MKTMARKETINGPLANITEM].[NAME],
    [MKTMARKETINGPLANITEM].[LEVEL]
  from dbo.[MKTMARKETINGPLANITEM]
  inner join dbo.[MKTMARKETINGPLAN] on [MKTMARKETINGPLAN].[ID] = [MKTMARKETINGPLANITEM].[MARKETINGPLANID]
  where [MKTMARKETINGPLANITEM].[LEVEL] = (select max([LEVEL]) from dbo.[MKTMARKETINGPLANITEMTEMPLATEITEM] T where [MKTMARKETINGPLANITEM].[MARKETINGPLANID] = T.[MARKETINGPLANID])
  and (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[MKTMARKETINGPLAN].[SITEID] or (SITEID is null and [MKTMARKETINGPLAN].[SITEID] is null)));

  declare @ID uniqueidentifier;
  declare @NAME nvarchar(256);
  declare @LEVEL int;

  open MAILINGCURSOR;
  fetch next from MAILINGCURSOR into @ID, @NAME, @LEVEL;

  while (@@FETCH_STATUS = 0)
  begin
    if (@LEVEL = 1)
      select @NAME = [LEVEL0].[NAME] + ' / ' + @NAME
      from dbo.[MKTMARKETINGPLANITEM] as [LEVEL1]
      inner join dbo.[MKTMARKETINGPLANITEM] as [LEVEL0] on [LEVEL0].[ID] = [LEVEL1].[PARENTMARKETINGPLANITEMID]
      where [LEVEL1].[ID] = @ID;
    if (@LEVEL = 2)
      select @NAME = [LEVEL0].[NAME] + ' / ' + [LEVEL1].[NAME] + ' / ' + @NAME
      from dbo.[MKTMARKETINGPLANITEM] as [LEVEL2]
      inner join dbo.[MKTMARKETINGPLANITEM] as [LEVEL1] on [LEVEL1].[ID] = [LEVEL2].[PARENTMARKETINGPLANITEMID]
      inner join dbo.[MKTMARKETINGPLANITEM] as [LEVEL0] on [LEVEL0].[ID] = [LEVEL1].[PARENTMARKETINGPLANITEMID]
      where [LEVEL2].[ID] = @ID;
    if (@LEVEL = 3)
      select @NAME = [LEVEL0].[NAME] + ' / ' + [LEVEL1].[NAME] + ' / ' + [LEVEL2].[NAME] + ' / ' + @NAME
      from dbo.[MKTMARKETINGPLANITEM] as [LEVEL3]
      inner join dbo.[MKTMARKETINGPLANITEM] as [LEVEL2] on [LEVEL2].[ID] = [LEVEL3].[PARENTMARKETINGPLANITEMID]
      inner join dbo.[MKTMARKETINGPLANITEM] as [LEVEL1] on [LEVEL1].[ID] = [LEVEL2].[PARENTMARKETINGPLANITEMID]
      inner join dbo.[MKTMARKETINGPLANITEM] as [LEVEL0] on [LEVEL0].[ID] = [LEVEL1].[PARENTMARKETINGPLANITEMID]
      where [LEVEL3].[ID] = @ID;
    if (@LEVEL = 4)
      select @NAME = [LEVEL0].[NAME] + ' / ' + [LEVEL1].[NAME] + ' / ' + [LEVEL2].[NAME] + ' / ' + [LEVEL3].[NAME] + ' / ' + @NAME
      from dbo.[MKTMARKETINGPLANITEM] as [LEVEL4]
      inner join dbo.[MKTMARKETINGPLANITEM] as [LEVEL3] on [LEVEL3].[ID] = [LEVEL4].[PARENTMARKETINGPLANITEMID]
      inner join dbo.[MKTMARKETINGPLANITEM] as [LEVEL2] on [LEVEL2].[ID] = [LEVEL3].[PARENTMARKETINGPLANITEMID]
      inner join dbo.[MKTMARKETINGPLANITEM] as [LEVEL1] on [LEVEL1].[ID] = [LEVEL2].[PARENTMARKETINGPLANITEMID]
      inner join dbo.[MKTMARKETINGPLANITEM] as [LEVEL0] on [LEVEL0].[ID] = [LEVEL1].[PARENTMARKETINGPLANITEMID]    
      where [LEVEL4].[ID] = @ID;

    insert into @TEMPTABLE values (@ID, @NAME);
    fetch next from MAILINGCURSOR into @ID, @NAME, @LEVEL;
  end

  close MAILINGCURSOR;
  deallocate MAILINGCURSOR;

  select
    [VALUE],
    [LABEL]
  from @TEMPTABLE
  order by [LABEL];

  return 0;