USP_DATALIST_SMARTQUERYINSTANCE
Returns a list of smart query instances.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@NAME | nvarchar(100) | IN | Name |
@ONLYSHOWMYQUERIES | bit | IN | Only show my queries |
@RECORDTYPEID | uniqueidentifier | IN | Type |
@QUERYCATEGORYCODEID | uniqueidentifier | IN | Category |
@SITEFILTERMODE | tinyint | IN | Sites |
@SITESSELECTED | xml | IN | |
@SECURITYFEATUREID | uniqueidentifier | IN | Input parameter indicating the ID of the feature to use for site security checking. |
@SECURITYFEATURETYPE | tinyint | IN | Input parameter indicating the type of the feature to use for site security checking. |
@ONLYSHOWMOBILIZED | bit | IN | Only show mobilized |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_SMARTQUERYINSTANCE(
@CURRENTAPPUSERID uniqueidentifier,
@NAME nvarchar(100) = null,
@ONLYSHOWMYQUERIES bit = null,
@RECORDTYPEID uniqueidentifier = null,
@QUERYCATEGORYCODEID uniqueidentifier = null,
@SITEFILTERMODE tinyint = 0,
@SITESSELECTED xml = null,
@SECURITYFEATUREID uniqueidentifier = null,
@SECURITYFEATURETYPE tinyint = null,
@ONLYSHOWMOBILIZED bit = 0)
with execute as caller
as
set nocount on;
declare @QUERYCATEGORYCODEIDNOTNULL as uniqueidentifier;
declare @RECORDTYPEIDNOTNULL as uniqueidentifier;
if @RECORDTYPEID = '00000000-0000-0000-0000-000000000001'
begin
set @RECORDTYPEIDNOTNULL = null;
end
else
begin
set @RECORDTYPEIDNOTNULL = @RECORDTYPEID;
end;
if @QUERYCATEGORYCODEID = '00000000-0000-0000-0000-000000000001'
begin
set @QUERYCATEGORYCODEIDNOTNULL = null;
end
else
begin
set @QUERYCATEGORYCODEIDNOTNULL = @QUERYCATEGORYCODEID;
end;
declare @ISSYSADMIN bit;
select @ISSYSADMIN = ISSYSADMIN from dbo.APPUSER where ID = @CURRENTAPPUSERID;
/*Filter out smart query instances involving smart queries to which the user does not have access*/
if @ISSYSADMIN = 0
begin
declare @OKSMARTQUERIES table (SMARTQUERYCATALOGID uniqueidentifier);
insert into @OKSMARTQUERIES (SMARTQUERYCATALOGID)
select SMARTQUERYCATALOG.ID from dbo.SMARTQUERYCATALOG
where exists (
select [OKSMARTQUERIES].SMARTQUERYCATALOGID
from dbo.UFN_SECURITY_GETGRANTEDSMARTQUERIESFORUSER(@CURRENTAPPUSERID) as [OKSMARTQUERIES] where [OKSMARTQUERIES].SMARTQUERYCATALOGID = SMARTQUERYCATALOG.ID);
end;
declare @PERMISSIONEDFOLDERS table
(
FOLDERID uniqueidentifier
);
insert into @PERMISSIONEDFOLDERS (FOLDERID)
select ID
from dbo.UFN_ADHOCQUERYFOLDERS_GETUSERSFOLDERS(@CURRENTAPPUSERID);
with xmlnamespaces ('bb_appfx_smartquery' as [ns])
select SMARTQUERYINSTANCE.ID,
SMARTQUERYINSTANCE.NAME,
SMARTQUERYINSTANCE.DESCRIPTION,
SMARTQUERYCATALOG.RECORDTYPEID,
(select T.c.value('@PrimaryKeyField', 'nvarchar(100)') from SMARTQUERYCATALOG.SMARTQUERYSPEC.nodes('ns:SmartQuerySpec') as T(c)) as [PRIMARYKEYFIELD],
RECORDTYPE.NAME as [RECORDTYPE_NAME],
SMARTQUERYINSTANCE.QUERYCATEGORYCODEID,
QUERYCATEGORYCODE.DESCRIPTION as [QUERYCATEGORYCODE_DESCRIPTION],
SMARTQUERYCATALOG.[NAME] AS [SMARTQUERYTEMPLATE_NAME],
APPUSER.USERNAME as [OWNER],
SMARTQUERYINSTANCE.OWNERID,
SMARTQUERYINSTANCE.OTHERSCANMODIFY,
SMARTQUERYINSTANCE.DATEADDED,
CHANGEAGENT.USERNAME as [ADDEDBY_USERNAME],
case (select coalesce(T.c.value('@PrimaryKeyField', 'nvarchar(100)'), '') from SMARTQUERYCATALOG.SMARTQUERYSPEC.nodes('ns:SmartQuerySpec') as T(c))
when '' then convert(bit, 0)
else convert(bit, 1) end as [ISBROWSABLE],
coalesce(SITE.NAME, 'All sites') [SITE],
SMARTQUERYINSTANCE.MOBILIZE
from dbo.SMARTQUERYINSTANCE
inner join dbo.SMARTQUERYCATALOG on SMARTQUERYINSTANCE.SMARTQUERYCATALOGID = SMARTQUERYCATALOG.ID
left join dbo.RECORDTYPE on SMARTQUERYCATALOG.RECORDTYPEID = RECORDTYPE.ID
left join dbo.APPUSER on SMARTQUERYINSTANCE.OWNERID = APPUSER.ID
left join dbo.QUERYCATEGORYCODE on SMARTQUERYINSTANCE.QUERYCATEGORYCODEID = QUERYCATEGORYCODE.ID
left join dbo.CHANGEAGENT on SMARTQUERYINSTANCE.ADDEDBYID = CHANGEAGENT.ID
left join dbo.SITE on SMARTQUERYINSTANCE.SITEID = SITE.ID
where
/* Filter out restricted smart queries */
(
@ISSYSADMIN = 1
/*This will return a list of smart queries in use by the smart query but not in the OK smart queries table variable;
These smart queries should not be returned to the client.*/
or exists
(
select [OKSMARTQUERIES].SMARTQUERYCATALOGID
from @OKSMARTQUERIES as [OKSMARTQUERIES]
where [OKSMARTQUERIES].SMARTQUERYCATALOGID = SMARTQUERYCATALOG.ID
)
and
(dbo.UFN_SECURITY_APPUSER_GRANTED_SMARTQUERYINSTANCE_IN_SYSTEMROLE(@CURRENTAPPUSERID, SMARTQUERYINSTANCE.ID) = 1)
)
-- Ensure the folder the query belongs to is visible
and
(
SMARTQUERYINSTANCE.FOLDERID is null
or SMARTQUERYINSTANCE.FOLDERID in (select FOLDERID from @PERMISSIONEDFOLDERS)
)
and (@ONLYSHOWMOBILIZED = 0 or SMARTQUERYINSTANCE.MOBILIZE = 1)
and ((@NAME is null or @NAME = '') or SMARTQUERYINSTANCE.NAME like '%' + @NAME + '%')
and ((@ONLYSHOWMYQUERIES is null or @ONLYSHOWMYQUERIES = 0) or (@ONLYSHOWMYQUERIES = 1 and SMARTQUERYINSTANCE.OWNERID = @CURRENTAPPUSERID))
and (@RECORDTYPEID is null or ((@RECORDTYPEIDNOTNULL is null and SMARTQUERYCATALOG.RECORDTYPEID is null) or (SMARTQUERYCATALOG.RECORDTYPEID = @RECORDTYPEIDNOTNULL)))
and (@QUERYCATEGORYCODEID is null or ((@QUERYCATEGORYCODEIDNOTNULL is null and SMARTQUERYINSTANCE.QUERYCATEGORYCODEID is null) or (SMARTQUERYINSTANCE.QUERYCATEGORYCODEID = @QUERYCATEGORYCODEIDNOTNULL)))
and
(
SMARTQUERYINSTANCE.SITEID is null
or
(dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[SMARTQUERYINSTANCE].[SITEID] or (SITEID is null and [SMARTQUERYINSTANCE].[SITEID] is null)))
)
and
(
@SITEFILTERMODE = 0
or
SMARTQUERYINSTANCE.SITEID in (select SITEID from dbo.UFN_SITE_BUILDDATALISTSITEFILTER (@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED))
)