USP_DATALIST_APPUSERWORKSPACESMARTQUERYINSTANCE

Returns a list of a given application user's smart query instances.

Parameters

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

Definition

Copy


CREATE procedure dbo.USP_DATALIST_APPUSERWORKSPACESMARTQUERYINSTANCE
(
    @CURRENTAPPUSERID uniqueidentifier
)
as

    set nocount on;

    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;

    select
        SMARTQUERYINSTANCE.ID,
        SMARTQUERYINSTANCE.NAME,
        SMARTQUERYINSTANCE.DESCRIPTION,
        RECORDTYPE.NAME [TYPE],
        QUERYCATEGORYCODE.DESCRIPTION [CATEGORY],
        SMARTQUERYCATALOG.NAME [SOURCE]
    from
        dbo.SMARTQUERYINSTANCE
    inner join
        dbo.SMARTQUERYCATALOG on SMARTQUERYCATALOG.ID = SMARTQUERYINSTANCE.SMARTQUERYCATALOGID
    inner join
        dbo.RECORDTYPE on RECORDTYPE.ID = SMARTQUERYCATALOG.RECORDTYPEID
    left join
        dbo.QUERYCATEGORYCODE on QUERYCATEGORYCODE.ID = SMARTQUERYINSTANCE.QUERYCATEGORYCODEID
    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)
        )

    return 0;