USP_DATALIST_MKTSELECTION_MAILINGVIEW

Returns a list of all selections grouped by the marketing efforts they are used in.

Parameters

Parameter Parameter Type Mode Description
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@RECORDTYPEID uniqueidentifier IN Type
@QUERYCATEGORYCODEID uniqueidentifier IN Category
@SHOWACTIVEMAILINGS bit IN Show active marketing efforts
@MAILINGID uniqueidentifier IN Marketing effort

Definition

Copy


CREATE procedure dbo.[USP_DATALIST_MKTSELECTION_MAILINGVIEW]
(
  @CURRENTAPPUSERID uniqueidentifier, 
  @RECORDTYPEID uniqueidentifier = null
  @QUERYCATEGORYCODEID uniqueidentifier = null
  @SHOWACTIVEMAILINGS bit = 0
  @MAILINGID uniqueidentifier = null
)
as
  set nocount on;

  if @RECORDTYPEID = '00000000-0000-0000-0000-000000000001' set @RECORDTYPEID = null;
  if @QUERYCATEGORYCODEID = '00000000-0000-0000-0000-000000000001' set @QUERYCATEGORYCODEID = null;
  if @SHOWACTIVEMAILINGS is null set @SHOWACTIVEMAILINGS = 0;
  if @MAILINGID = '00000000-0000-0000-0000-000000000001' set @MAILINGID = null;

  declare @ISSYSADMIN bit;

  select
    @ISSYSADMIN = [ISSYSADMIN]
  from dbo.[APPUSER]
  where [ID] = @CURRENTAPPUSERID;

  -- filter out any ad-hoc queries involving query views to which the current user does not have rights

  if @ISSYSADMIN = 0 
    begin
      declare @OKVIEWS table (OBJECTNAME nvarchar(128));

      insert into @OKVIEWS ([OBJECTNAME])
        select [QUERYVIEWCATALOG].[OBJECTNAME] 
        from dbo.[QUERYVIEWCATALOG]
        where exists (
          select [OKVIEWS].[QUERYVIEWCATALOGID]
          from dbo.[UFN_SECURITY_GETGRANTEDQUERYVIEWSFORUSER](@CURRENTAPPUSERID) as [OKVIEWS] 
          where [OKVIEWS].[QUERYVIEWCATALOGID] = [QUERYVIEWCATALOG].[ID]);
    end

  select distinct
    isnull([ADHOCQUERY].[ID], [SMARTQUERYINSTANCE].[ID]) as [ID],
    coalesce([ADHOCQUERY].[NAME], [SMARTQUERYINSTANCE].[NAME], [IDSETREGISTER].[NAME]) as [NAME],
    coalesce([ADHOCQUERY].[DESCRIPTION], [SMARTQUERYINSTANCE].[DESCRIPTION], [IDSETREGISTER].[DESCRIPTION]) as [DESCRIPTION],
    [MKTSEGMENTATION].[ID] as [MAILINGID],
    [MKTSEGMENTATION].[NAME] as [MAILING_NAME],
    [RECORDTYPE].[ID] as [RECORDTYPEID],
    [RECORDTYPE].[NAME] as [RECORDTYPE_NAME],
    [QUERYCATEGORYCODE].[ID] as [QUERYCATEGORYCODEID],
    [QUERYCATEGORYCODE].[DESCRIPTION] as [QUERYCATEGORYCODE_DESCRIPTION],
    [APPUSER].[USERNAME] as [OWNER],
    [APPUSER].[ID] as [OWNERID],
    coalesce([ADHOCQUERY].[OTHERSCANMODIFY], [SMARTQUERYINSTANCE].[OTHERSCANMODIFY], cast(0 as bit)) as [OTHERSCANMODIFY],
    coalesce([ADHOCQUERY].[DATEADDED], [SMARTQUERYINSTANCE].[DATEADDED], [IMPORTSELECTIONPROCESS].[DATEADDED], [IDSETREGISTER].[DATEADDED]) as [DATEADDED],
    [CHANGEAGENT].[USERNAME] as [ADDEDBY_USERNAME],
    (case when [ADHOCQUERY].[ID] is not null then 1 when [SMARTQUERYINSTANCE].[ID] is not null then 2 else 0 end) as [QUERYTYPECODE],
    (case when [ADHOCQUERY].[ID] is not null then 'Ad-hoc' when [SMARTQUERYINSTANCE].[ID] is not null then 'Smart' else 'Other' end) as [QUERYTYPE],
    cast((case when [SMARTQUERYINSTANCE].[ID] is null then 0 else 1 end) as bit) as [ISSMARTQUERY],
    --This field is duplicated below and named USERCANEDIT because we need it named differently so that the platform actions behave properly

    (case
       when @ISSYSADMIN = 1 then cast(1 as bit)
       when [ADHOCQUERY].[ID] is not null and dbo.[UFN_SECURITY_APPUSER_GRANTED_ADHOCQUERYINSTANCEEDIT_IN_SYSTEMROLE](@CURRENTAPPUSERID, [ADHOCQUERY].[ID]) = 1 then cast(1 as bit)
       when [SMARTQUERYINSTANCE].[ID] is not null and ([SMARTQUERYINSTANCE].[OTHERSCANMODIFY] = 1 or [APPUSER].[ID] = @CURRENTAPPUSERID) then cast(1 as bit)
       else cast(0 as bit)
     end) as [CANEDIT],
    [IDSETREGISTER].DATECHANGED as [CURRENTASOFDATE],
    [IDSETREGISTER].NUMROWS as [RECORDCOUNT],
    --This field is a duplicate of CANEDIT because we need it named differently so that the platform actions behave properly

    (case
       when @ISSYSADMIN = 1 then cast(1 as bit)
       when [ADHOCQUERY].[ID] is not null and dbo.[UFN_SECURITY_APPUSER_GRANTED_ADHOCQUERYINSTANCEEDIT_IN_SYSTEMROLE](@CURRENTAPPUSERID, [ADHOCQUERY].[ID]) = 1 then cast(1 as bit)
       when [SMARTQUERYINSTANCE].[ID] is not null and ([SMARTQUERYINSTANCE].[OTHERSCANMODIFY] = 1 or [APPUSER].[ID] = @CURRENTAPPUSERID) then cast(1 as bit)
 else cast(0 as bit)
     end) as [USERCANEDIT]
  from dbo.[MKTSEGMENTATION]
  left join dbo.[MKTSEGMENTATIONSEGMENT] on [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
  left join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
  left join dbo.[MKTSEGMENTSELECTION] on [MKTSEGMENTSELECTION].[SEGMENTID] = [MKTSEGMENT].[ID]
  left join dbo.[MKTSEGMENTATIONFILTERSELECTION] on [MKTSEGMENTATIONFILTERSELECTION].[SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
  inner join dbo.[IDSETREGISTER] on [IDSETREGISTER].[ID] = [MKTSEGMENTSELECTION].[SELECTIONID] or [IDSETREGISTER].[ID] = [MKTSEGMENTATIONFILTERSELECTION].[SELECTIONID]
  left join dbo.[IDSETREGISTERADHOCQUERY] on [IDSETREGISTERADHOCQUERY].[IDSETREGISTERID] = [IDSETREGISTER].[ID]
  left join dbo.[ADHOCQUERY] on [ADHOCQUERY].[ID] = [IDSETREGISTERADHOCQUERY].[ADHOCQUERYID]
  left join dbo.[QUERYVIEWCATALOG] on [QUERYVIEWCATALOG].[ID] = [ADHOCQUERY].[QUERYVIEWCATALOGID]
  left join dbo.[IDSETREGISTERSMARTQUERYINSTANCE] on [IDSETREGISTERSMARTQUERYINSTANCE].[IDSETREGISTERID] = [IDSETREGISTER].[ID]
  left join dbo.[SMARTQUERYINSTANCE] on [SMARTQUERYINSTANCE].[ID] = [IDSETREGISTERSMARTQUERYINSTANCE].[SMARTQUERYINSTANCEID]
  left join dbo.[SMARTQUERYCATALOG] on [SMARTQUERYCATALOG].[ID] = [SMARTQUERYINSTANCE].[SMARTQUERYCATALOGID]
  left join dbo.[IMPORTSELECTIONPROCESS] on [IMPORTSELECTIONPROCESS].[IDSETREGISTERID] = [IDSETREGISTER].[ID]
  left join dbo.[RECORDTYPE] on [RECORDTYPE].[ID] = coalesce([QUERYVIEWCATALOG].[RECORDTYPEID], [SMARTQUERYCATALOG].[RECORDTYPEID], [IDSETREGISTER].[RECORDTYPEID])
  left join dbo.[QUERYCATEGORYCODE] on [QUERYCATEGORYCODE].[ID] = coalesce([ADHOCQUERY].[QUERYCATEGORYCODEID], [SMARTQUERYINSTANCE].[QUERYCATEGORYCODEID], [IMPORTSELECTIONPROCESS].[QUERYCATEGORYCODEID])
  left join dbo.[APPUSER] on [APPUSER].[ID] = coalesce([ADHOCQUERY].[OWNERID], [SMARTQUERYINSTANCE].[OWNERID], [IMPORTSELECTIONPROCESS].[OWNERID], [IDSETREGISTER].[OWNERID])
  left join dbo.[CHANGEAGENT] on [CHANGEAGENT].[ID] = coalesce([ADHOCQUERY].[ADDEDBYID], [SMARTQUERYCATALOG].[ADDEDBYID], [IMPORTSELECTIONPROCESS].[ADDEDBYID], [IDSETREGISTER].[ADDEDBYID])
  where 
    -- filter out restricted query views

    (@ISSYSADMIN = 1 
     or 
     not exists (
      select [QUERYVIEWSINUSE].[OBJECTNAME] 
      from dbo.[ADHOCQUERY] as [ADHOCQUERYRIGHTSTEST]
      outer apply dbo.[UFN_ADHOCQUERY_QUERYVIEWSINUSE]([ADHOCQUERY].[QUERYDEFINITIONXML]) as [QUERYVIEWSINUSE]
      where not exists (
        select [OKVIEWS].[OBJECTNAME] 
        from @OKVIEWS as [OKVIEWS] 
        where [OKVIEWS].[OBJECTNAME] = [QUERYVIEWSINUSE].[OBJECTNAME])))
    -- end restricted query views filter

  and (@SHOWACTIVEMAILINGS = 1 or [MKTSEGMENTATION].[ACTIVE] = 0)
  and (@MAILINGID is null or [MKTSEGMENTATION].[ID] = @MAILINGID)
  and (@RECORDTYPEID is null or [RECORDTYPE].[ID] = @RECORDTYPEID)
  and (@QUERYCATEGORYCODEID is null or ([SMARTQUERYINSTANCE].[ID] is not null or [ADHOCQUERY].[QUERYCATEGORYCODEID] = @QUERYCATEGORYCODEID))
  and [MKTSEGMENTATION].[COMMUNICATIONTYPECODE] = 0 -- only return marketing efforts

  order by [NAME];

  return 0;