USP_DATALIST_MKTSELECTION_NORMALVIEW

Returns a list of all selections.

Parameters

Parameter Parameter Type Mode Description
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@QUERYVIEWCATALOGID uniqueidentifier IN Record source
@RECORDTYPEID uniqueidentifier IN Type
@ADHOC bit IN Include Ad-hoc?
@SMART bit IN Include Smart?
@OTHER bit IN Include Other?
@NAME nvarchar(100) IN Name
@ONLYSHOWMYQUERIES bit IN Only show my selections
@QUERYCATEGORYCODEID uniqueidentifier IN Category
@SITEFILTERMODE tinyint IN Sites
@SITESSELECTED xml IN
@ONLYSHOWMOBILIZED bit IN Only show mobilized
@SHOWINACTIVE bit IN

Definition

Copy


CREATE procedure dbo.[USP_DATALIST_MKTSELECTION_NORMALVIEW]
(
  @CURRENTAPPUSERID uniqueidentifier,
  @QUERYVIEWCATALOGID uniqueidentifier = null,
  @RECORDTYPEID uniqueidentifier = null,
  @ADHOC bit = 1,
  @SMART bit = 1,
  @OTHER bit = 1,
  @NAME nvarchar(100) = null
  @ONLYSHOWMYQUERIES bit = null,
  @QUERYCATEGORYCODEID uniqueidentifier = null,
  @SITEFILTERMODE tinyint = 0,
  @SITESSELECTED xml = null,
  @ONLYSHOWMOBILIZED bit = 0,
  @SHOWINACTIVE bit = 1
)
as
  set nocount on;

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

  if @ADHOC is null
    set @ADHOC = 0;
  if @SMART is null
    set @SMART = 0;
  if @OTHER is null
    set @OTHER = 0;
  if @ONLYSHOWMYQUERIES is null
    set @ONLYSHOWMYQUERIES = 0;
  if @ONLYSHOWMOBILIZED is null
    set @ONLYSHOWMOBILIZED = 0;

  declare @QUERYCATEGORYCODEIDNOTNULL as uniqueidentifier;
  if @QUERYCATEGORYCODEID = '00000000-0000-0000-0000-000000000001'
    set @QUERYCATEGORYCODEIDNOTNULL = null;
  else
    set @QUERYCATEGORYCODEIDNOTNULL = @QUERYCATEGORYCODEID;

  set @NAME = '%' + isnull(@NAME, '') + '%';

  declare @QUERYVIEWSINUSE table ([ID] uniqueidentifier, [OBJECTNAME] nvarchar(128));
  if @ISSYSADMIN = 0
  begin
    declare @OKVIEWS table (OBJECTNAME nvarchar(128));
  -- filter out any ad-hoc queries involving query views to which the current user does not have rights

    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]);

    insert into @QUERYVIEWSINUSE(ID, OBJECTNAME)
    select distinct [ADHOCQUERY].[ID], [QUERYVIEWSINUSE].[OBJECTNAME]
    from
      dbo.[ADHOCQUERY]
      outer apply dbo.[UFN_ADHOCQUERY_QUERYVIEWSINUSE]([ADHOCQUERY].[QUERYDEFINITIONXML]) as [QUERYVIEWSINUSE]
    where 
      (@ADHOC = 1 or [ADHOCQUERY].[ID] is null)
      and (@ONLYSHOWMOBILIZED = 0 or [ADHOCQUERY].[MOBILIZE] = 1)
      and ((@ONLYSHOWMYQUERIES is null or @ONLYSHOWMYQUERIES = 0) or (@ONLYSHOWMYQUERIES = 1 and [ADHOCQUERY].[OWNERID] = @CURRENTAPPUSERID))
      and (@QUERYCATEGORYCODEID is null or ((@QUERYCATEGORYCODEIDNOTNULL is null and [ADHOCQUERY].[QUERYCATEGORYCODEID] is null) or ([ADHOCQUERY].[QUERYCATEGORYCODEID] = @QUERYCATEGORYCODEIDNOTNULL)))
      and (@SITEFILTERMODE = 0 or [ADHOCQUERY].[SITEID] in (select [SITEID] from dbo.[UFN_SITE_BUILDDATALISTSITEFILTER] (@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED)));
  end

  declare @SELECTIONTYPE bit; -- this needs to be a parameter at some point

  set @SELECTIONTYPE = 1;     -- 1 = static, 0 = dynamic


  with [AVAILABLERECORDTYPES] ([ID]) as
  (
    select [ID] from dbo.[UFN_MKTRECORDSOURCE_GETRECORDTYPES](null, @RECORDTYPEID, null)
    union all
    select [ID] from dbo.[UFN_MKTGIFTRECORDSOURCE_GETRECORDTYPES](null, @RECORDTYPEID)
    union all
    select [ID] from dbo.[UFN_MKTMEMBERSHIPRECORDSOURCE_GETRECORDTYPES](null, @RECORDTYPEID)
    union all
    select [ID] from dbo.[UFN_MKTSPONSORSHIPRECORDSOURCE_GETRECORDTYPES](null, @RECORDTYPEID)
  )
  select 
    isnull((case when [AQ].[ID] is not null then (case when [QVC].[ROOTOBJECT] = 1 then [AQ].[ID] else null end) else null end), [SQ].[ID]) as [ID],
    coalesce([SQ].[NAME], [AQ].[NAME], [IDSR].[NAME]) as [NAME],
    coalesce([AQ].[NAME], [SQ].[NAME], '') as [SOURCEQUERY],
    (case when ([AQ].[ID] is not null) then 1 when ([SQ].[ID] is not null) then 2 else 0 end) as [QUERYTYPECODE],
    (case when ([AQ].[ID] is not null) then 'Ad-hoc' when ([SQ].[ID] is not null) then 'Smart' else 'Other' end) as [QUERYTYPE],
    isnull((select [NAME] from dbo.[RECORDTYPE] where [ID] = [IDSR].RECORDTYPEID), '') as [RECORDTYPEID],
    isnull([QUERYCATEGORYCODE].[DESCRIPTION], '') as [CATEGORY],
    (case [IDSR].[STATIC] when 1 then 'Static' else 'Dynamic' end) as [SELECTIONTYPE],
    [AQ].[ID] as [ADHOCQUERYID],
    [SQ].[ID] as [SMARTQUERYID],
    [IDSR].[DESCRIPTION] as [DESCRIPTION],
    [APPUSER].[USERNAME] as [OWNER],
    [APPUSER].[ID] as [OWNERID],
    isnull([AQ].[OTHERSCANMODIFY], [SQ].[OTHERSCANMODIFY]) as [OTHERSCANMODIFY],
    coalesce([AQ].[DATEADDED], [SQ].[DATEADDED], [IMPORTSELECTIONPROCESS].[DATEADDED], [IDSR].[DATEADDED]) as [DATEADDED],
    [CHANGEAGENT].[USERNAME] as [ADDEDBYUSER],
    cast((case when [SQ].[ID] is null then 0 else 1 end) as bit) as [ISSMARTQUERY],
    [IDSR].[ID] as [IDSETREGISTERID],
    (case 
       when @ISSYSADMIN = 1 then cast(1 as bit)
       when [AQ].[ID] is not null and dbo.[UFN_SECURITY_APPUSER_GRANTED_ADHOCQUERYINSTANCEEDIT_IN_SYSTEMROLE](@CURRENTAPPUSERID, [AQ].[ID]) = 1 then cast(1 as bit)
       when [SQ].[ID] is not null and ([SQ].[OTHERSCANMODIFY] = 1 or [APPUSER].[ID] = @CURRENTAPPUSERID) then cast(1 as bit)
       else cast(0 as bit)
     end) as [USERCANEDIT],
     [IDSR].DATECHANGED as [CURRENTASOFDATE],
     [IDSR].NUMROWS as [RECORDCOUNT]
  from dbo.IDSETREGISTER as [IDSR]
  -- ad hoc query joins

  left outer join dbo.[IDSETREGISTERADHOCQUERY] as [IDSRA] on [IDSR].[ID] = [IDSRA].[IDSETREGISTERID]
  left outer join dbo.[ADHOCQUERY] as [AQ] on [IDSRA].[ADHOCQUERYID] = [AQ].[ID]
  left outer join dbo.[QUERYVIEWCATALOG] as [QVC] on [AQ].[QUERYVIEWCATALOGID] = [QVC].[ID]
  -- smart query joins

  left outer join dbo.[IDSETREGISTERSMARTQUERYINSTANCE] as [IDSRS] on [IDSR].[ID] = [IDSRS].[IDSETREGISTERID]
  left outer join dbo.[SMARTQUERYINSTANCE] as [SQ] on [IDSRS].[SMARTQUERYINSTANCEID] = [SQ].[ID]
  left outer join dbo.[SMARTQUERYCATALOG] as [SQC] on [SQ].[SMARTQUERYCATALOGID] = [SQC].[ID]
  -- imported selection joins

  left outer join dbo.[IMPORTSELECTIONPROCESS] on [IMPORTSELECTIONPROCESS].[IDSETREGISTERID] = [IDSR].[ID]
  -- category join

  left outer join dbo.[QUERYCATEGORYCODE] on [QUERYCATEGORYCODE].[ID] = coalesce([AQ].[QUERYCATEGORYCODEID], [SQ].[QUERYCATEGORYCODEID], [IMPORTSELECTIONPROCESS].[QUERYCATEGORYCODEID])
  -- user info

  left outer join dbo.[APPUSER] on [APPUSER].[ID] = coalesce([AQ].[OWNERID], [SQ].[OWNERID], [IMPORTSELECTIONPROCESS].[OWNERID], [IDSR].[OWNERID])
  left outer join dbo.[CHANGEAGENT] on [CHANGEAGENT].[ID] = coalesce([AQ].[ADDEDBYID], [SQ].[ADDEDBYID], [IMPORTSELECTIONPROCESS].[ADDEDBYID], [IDSR].[ADDEDBYID])
  where
    -- filter out restricted query views

    (@ISSYSADMIN = 1 
     or
     ([AQ].[ID] is null)
     or 
     not exists (
      select [QUERYVIEWSINUSE].[OBJECTNAME] 
      from dbo.[ADHOCQUERY] as [ADHOCQUERYRIGHTSTEST]
      inner join @QUERYVIEWSINUSE [QUERYVIEWSINUSE] on [QUERYVIEWSINUSE].[ID] = [ADHOCQUERYRIGHTSTEST].[ID] and [QUERYVIEWSINUSE].[ID] = [AQ].[ID]
      where not exists (
        select [OKVIEWS].[OBJECTNAME] 
        from @OKVIEWS as [OKVIEWS] 
        where [OKVIEWS].[OBJECTNAME] = [QUERYVIEWSINUSE].[OBJECTNAME])))
    -- end restricted query views filter

  and [IDSR].[ISSYSTEM] = 0
  and [IDSR].[RECORDTYPEID] in (select [ID] from [AVAILABLERECORDTYPES])
  and [IDSR].[ID] not in (select [IDSETREGISTERID] from dbo.[MKTSEGMENT] where [IDSETREGISTERID] is not null)
  and (@QUERYVIEWCATALOGID is null or (@ADHOC = 1 and [QVC].[ID] = @QUERYVIEWCATALOGID) or ((@SMART = 1 or @OTHER = 1) and [IDSR].[RECORDTYPEID] = (select [RECORDTYPEID] from dbo.[QUERYVIEWCATALOG] where [ID] = @QUERYVIEWCATALOGID)))
  and ([QVC].[ID] is null or [QVC].[ROOTOBJECT] = 1)
  and (@SELECTIONTYPE is null or [IDSR].[STATIC] = @SELECTIONTYPE)
  and (@ADHOC = 1 or [AQ].[ID] is null)
  and (@SMART = 1 or [SQ].[ID] is null)
  and (@OTHER = 1 or ([AQ].[ID] is not null or [SQ].[ID] is not null))
  and ([IDSR].[NAME] like @NAME)
  and (@ONLYSHOWMOBILIZED = 0 or [AQ].[MOBILIZE] = 1)
  and ((@ONLYSHOWMYQUERIES is null or @ONLYSHOWMYQUERIES = 0) or (@ONLYSHOWMYQUERIES = 1 and [AQ].[OWNERID] = @CURRENTAPPUSERID))
  and (@QUERYCATEGORYCODEID is null or ((@QUERYCATEGORYCODEIDNOTNULL is null and [AQ].[QUERYCATEGORYCODEID] is null) or ([AQ].[QUERYCATEGORYCODEID] = @QUERYCATEGORYCODEIDNOTNULL)))
  and (@SITEFILTERMODE = 0 or [AQ].[SITEID] in (select [SITEID] from dbo.[UFN_SITE_BUILDDATALISTSITEFILTER] (@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED)))
  and (@SHOWINACTIVE = 1 or [IDSR].[ACTIVE] = 1)
  order by [NAME];

  return 0;