USP_DATAFORMTEMPLATE_EDIT_APPUSERSYSTEMROLE

The save procedure used by the edit dataform template "Application User System Role Edit Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@SYSTEMROLEID uniqueidentifier IN System role
@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_APPUSERSYSTEMROLE
(
  @ID uniqueidentifier,
  @SYSTEMROLEID 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 @PROXYOWNERNAME nvarchar(128);
  declare @APPUSERID uniqueidentifier = null;
  declare @PROXYUSERHASPERMISSION bit = 0;
  declare @PROXYCOUNT int = 0;
  declare @ISAPPUSERSYSADMIN bit = 0;
  declare @PROXYOWNERID uniqueidentifier = null;
  declare @ISPROXYOWNERSYSADMIN 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 @APPUSERID= APPUSERID from dbo.SYSTEMROLEAPPUSER where SYSTEMROLEAPPUSER.ID = @ID;
    select @ISPROXYUSER = dbo.UFN_APPUSER_ISPROXYUSER(@APPUSERID)

    select @PROXYCOUNT = count(1) from dbo.APPUSER 
    join dbo.SYSTEMROLEAPPUSER on APPUSER.ID = SYSTEMROLEAPPUSER.APPUSERID 
    where [PROXYOWNERID] = @APPUSERID and [SYSTEMROLEID] = @SYSTEMROLEID;

    select @PROXYOWNERID = PROXYOWNERID from dbo.APPUSER where ID = @APPUSERID;
    select @ISPROXYOWNERSYSADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@PROXYOWNERID);

    select @ISAPPUSERSYSADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@APPUSERID)

    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.SYSTEMROLEID = @SYSTEMROLEID,
      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 isnull(@ISPROXYUSER,0) = 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