USP_DATAFORMTEMPLATE_EDIT_SYSTEMROLEAPPUSER
The save procedure used by the edit dataform template "System Role User Edit Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter indicating the ID of the record being edited. |
@APPUSERID | uniqueidentifier | IN | Application user |
@SECURITYMODECODE | tinyint | IN | Record access |
@SITES | xml | IN | Sites |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@BRANCHSITEID | uniqueidentifier | IN | Branch |
@CONSTITUENTSECURITYMODECODE | tinyint | IN | Record access |
@CONSTITUENTSECURITYGROUPS | xml | IN | Constituent security groups |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_SYSTEMROLEAPPUSER
(
@ID uniqueidentifier,
@APPUSERID uniqueidentifier,
@SECURITYMODECODE tinyint,
@SITES xml,
@CHANGEAGENTID uniqueidentifier,
@BRANCHSITEID uniqueidentifier,
@CONSTITUENTSECURITYMODECODE tinyint,
@CONSTITUENTSECURITYGROUPS xml
)
as
begin
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATE datetime;
declare @ISPROXYUSER bit = 0;
declare @PROXYUSERHASPERMISSION tinyint = 1;
declare @SYSTEMROLEID uniqueidentifier = null;
declare @PROXYCOUNT int = 0;
declare @PROXYOWNERID uniqueidentifier = null;
declare @ISPROXYOWNERSYSADMIN bit = 0;
declare @ISAPPUSERSYSADMIN bit = 0;
set @CURRENTDATE=getdate();
if @SECURITYMODECODE <> 3
set @BRANCHSITEID = null
begin try
if @CONSTITUENTSECURITYMODECODE = 2 and @CONSTITUENTSECURITYGROUPS is null begin
raiserror('At least one constituent security group must be selected.', 13, 1);
end
if @SECURITYMODECODE = 2 and @SITES is null begin
raiserror('At least one site must be selected.', 13, 1);
end
select @SYSTEMROLEID = SYSTEMROLEID
from dbo.SYSTEMROLEAPPUSER where SYSTEMROLEAPPUSER.ID = @ID;
select @ISPROXYUSER = isnull(dbo.UFN_APPUSER_ISPROXYUSER(@APPUSERID), 0);
select @PROXYCOUNT = count(1) from dbo.APPUSER join dbo.SYSTEMROLEAPPUSER on APPUSER.ID = SYSTEMROLEAPPUSER.APPUSERID where [PROXYOWNERID] = @APPUSERID and [SYSTEMROLEID] = @SYSTEMROLEID;
select @ISAPPUSERSYSADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@APPUSERID)
select @PROXYOWNERID = PROXYOWNERID from dbo.APPUSER where ID = @APPUSERID;
select @ISPROXYOWNERSYSADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@PROXYOWNERID);
if @ISPROXYUSER = 1
begin
if @ISPROXYOWNERSYSADMIN = 0
begin
select @PROXYUSERHASPERMISSION = dbo.UFN_PROXYUSER_CHECKROLESANDPERMISSIONS(@APPUSERID,@SITES,@SYSTEMROLEID,
@SECURITYMODECODE,@BRANCHSITEID,@CONSTITUENTSECURITYMODECODE, @CONSTITUENTSECURITYGROUPS);
end
else
begin
set @PROXYUSERHASPERMISSION = 1;
end
if @PROXYUSERHASPERMISSION = 0
begin
raiserror('BBERR_PROXYUSER_PERMISSION', 13, 1);
end
end
exec dbo.USP_SYSTEMROLEAPPUSER_VALIDATESECURITYGROUPS @CONSTITUENTSECURITYGROUPS;
update
dbo.SYSTEMROLEAPPUSER
set
SYSTEMROLEAPPUSER.APPUSERID = @APPUSERID,
SYSTEMROLEAPPUSER.SECURITYMODECODE = @SECURITYMODECODE,
SYSTEMROLEAPPUSER.DATECHANGED = @CURRENTDATE,
SYSTEMROLEAPPUSER.CHANGEDBYID = @CHANGEAGENTID,
SYSTEMROLEAPPUSER.BRANCHSITEID = @BRANCHSITEID,
SYSTEMROLEAPPUSER.CONSTITUENTSECURITYMODECODE = @CONSTITUENTSECURITYMODECODE
where
SYSTEMROLEAPPUSER.ID = @ID;
-- Clear the sites collection if 'All records' or 'Records with no site assigned' is set
if @SECURITYMODECODE = 0 or @SECURITYMODECODE = 1
set @SITES = null
exec dbo.USP_SYSTEMROLEAPPUSER_GETSITES_UPDATEFROMXML @ID, @SITES, @CHANGEAGENTID, @CURRENTDATE;
-- Clear constituent security groups if 'All records' or 'Records with no security group assigned' is set
if @CONSTITUENTSECURITYMODECODE = 0 or @CONSTITUENTSECURITYMODECODE = 1
set @CONSTITUENTSECURITYGROUPS = null
exec dbo.USP_SYSTEMROLEAPPUSER_GETSECURITYGROUPS_UPDATEFROMXML @ID, @CONSTITUENTSECURITYGROUPS, @CHANGEAGENTID, @CURRENTDATE;
if @ISPROXYUSER = 0 and @PROXYCOUNT > 0 and @ISAPPUSERSYSADMIN = 0
begin
exec dbo.USP_APPUSER_WITHPROXY_UPDATEPROXYPERMISSIONS @APPUSERID, @SITES, @SYSTEMROLEID, @SECURITYMODECODE, @BRANCHSITEID, @CONSTITUENTSECURITYMODECODE, @CONSTITUENTSECURITYGROUPS, @PROXYCOUNT, @CHANGEAGENTID, @CURRENTDATE;
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
end