USP_SMARTQUERYINSTANCE_CREATEORUPDATE
Create or update a smart query instance.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@SMARTQUERYCATALOGID | uniqueidentifier | IN | |
@NAME | nvarchar(255) | IN | |
@DESCRIPTION | nvarchar(1024) | IN | |
@QUERYCATEGORYCODEID | uniqueidentifier | IN | |
@DATAFORMINSTANCEID | uniqueidentifier | IN | |
@DATAFORMITEMFILTERXML | xml | IN | |
@OTHERSCANMODIFY | bit | IN | |
@APPUSERID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@SITEID | uniqueidentifier | IN | |
@MOBILIZE | bit | IN | |
@FOLDERID | uniqueidentifier | IN | |
@ISFAVORITE | bit | IN | |
@SECURITYLEVEL | tinyint | IN | |
@PERMISSIONEDROLES | xml | IN |
Definition
Copy
CREATE procedure dbo.USP_SMARTQUERYINSTANCE_CREATEORUPDATE
(
@ID uniqueidentifier,
@SMARTQUERYCATALOGID uniqueidentifier,
@NAME nvarchar(255),
@DESCRIPTION nvarchar(1024),
@QUERYCATEGORYCODEID uniqueidentifier,
@DATAFORMINSTANCEID uniqueidentifier,
@DATAFORMITEMFILTERXML xml,
@OTHERSCANMODIFY bit,
@APPUSERID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@SITEID uniqueidentifier = null,
@MOBILIZE bit = null,
@FOLDERID uniqueidentifier = null,
@ISFAVORITE bit = null,
@SECURITYLEVEL tinyint = null,
@PERMISSIONEDROLES xml = null
)
as
declare @EXISTINGID uniqueidentifier;
declare @EXISTINGOWNERID uniqueidentifier;
declare @EXISTINGOWNER nvarchar(128);
declare @EXISTINGOTHERSCANMODIFY bit;
select @EXISTINGID = SMARTQUERYINSTANCE.ID,
@EXISTINGOTHERSCANMODIFY = SMARTQUERYINSTANCE.OTHERSCANMODIFY,
@EXISTINGOWNERID = SMARTQUERYINSTANCE.OWNERID,
@EXISTINGOWNER = APPUSER.USERNAME
from dbo.SMARTQUERYINSTANCE
inner join dbo.APPUSER on SMARTQUERYINSTANCE.OWNERID = APPUSER.ID
where SMARTQUERYINSTANCE.ID = @ID;
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
if @FOLDERID = cast('00000000-0000-0000-0000-000000000000' as uniqueidentifier)
set @FOLDERID = null;
set @SECURITYLEVEL = coalesce(@SECURITYLEVEL, 0);
if @EXISTINGID is null
insert into dbo.SMARTQUERYINSTANCE (ID, SMARTQUERYCATALOGID, NAME, DESCRIPTION, QUERYCATEGORYCODEID, DATAFORMINSTANCEID, DATAFORMITEMFILTERXML, OTHERSCANMODIFY, OWNERID, SITEID, MOBILIZE, FOLDERID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, SECURITYLEVEL)
values (@ID, @SMARTQUERYCATALOGID, @NAME, @DESCRIPTION, @QUERYCATEGORYCODEID, @DATAFORMINSTANCEID, @DATAFORMITEMFILTERXML, @OTHERSCANMODIFY, @APPUSERID, @SITEID, coalesce(@MOBILIZE, 0), @FOLDERID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE, @SECURITYLEVEL)
else
begin
declare @ISSYSADMIN bit;
select @ISSYSADMIN = ISSYSADMIN from dbo.APPUSER where ID = @APPUSERID;
if @EXISTINGOWNERID <> @APPUSERID and @ISSYSADMIN = 0
begin
if @EXISTINGOTHERSCANMODIFY = 0
begin
raiserror(N'This smart query instance can only be modified by the user %s or a system administrator.', 16, 1, @EXISTINGOWNER);
return 1;
end;
if @EXISTINGOTHERSCANMODIFY <> @OTHERSCANMODIFY
begin
raiserror(N'The ''others can modify'' property can only be changed by the user %s or a system administrator.', 16, 1, @EXISTINGOWNER);
return 2;
end;
end;
update dbo.SMARTQUERYINSTANCE set SMARTQUERYCATALOGID = @SMARTQUERYCATALOGID, NAME = @NAME, DESCRIPTION = @DESCRIPTION, QUERYCATEGORYCODEID = @QUERYCATEGORYCODEID, DATAFORMINSTANCEID = @DATAFORMINSTANCEID, DATAFORMITEMFILTERXML = @DATAFORMITEMFILTERXML, OTHERSCANMODIFY = @OTHERSCANMODIFY, SITEID = @SITEID, MOBILIZE = coalesce(@MOBILIZE, MOBILIZE), FOLDERID = @FOLDERID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CURRENTDATE, SECURITYLEVEL = @SECURITYLEVEL
where ID = @ID
if @SECURITYLEVEL = 0
begin
declare @contextCache varbinary(128);
set @contextCache = CONTEXT_INFO();
set CONTEXT_INFO @CHANGEAGENTID;
-- Clear specific roles if all roles are allowed now
if @SECURITYLEVEL = 0
delete from dbo.SYSTEMROLEPERM_SMARTQUERYINSTANCE where SMARTQUERYID = @ID
if not @contextCache is null
set CONTEXT_INFO @contextCache;
end
end
if @ISFAVORITE = 1
begin
exec dbo.USP_APPUSERSMARTQUERYINSTANCEFAVORITE_ADD @ID, @APPUSERID, @CHANGEAGENTID
end
else
begin
exec dbo.USP_APPUSERSMARTQUERYINSTANCEFAVORITE_DELETE @ID, @APPUSERID, @CHANGEAGENTID
end
if @SECURITYLEVEL = 1
begin
exec dbo.USP_SMARTQUERYINSTANCE_GETSYSTEMROLEPERMISSIONSLIST_UPDATEFROMXML @ID, @PERMISSIONEDROLES, @CHANGEAGENTID;
end