USP_DATAFORMTEMPLATE_ADD_APPUSERSYSTEMROLE

The save procedure used by the add dataform template "Application User System Role Add Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@APPUSERID uniqueidentifier IN Input parameter indicating the context ID for the record being added.
@SECURITYMODECODE tinyint IN Record access
@SITES xml IN Sites
@SYSTEMROLEID uniqueidentifier IN System role
@BRANCHSITEID uniqueidentifier IN Branch
@CONSTITUENTSECURITYMODECODE tinyint IN Record access
@CONSTITUENTSECURITYGROUPS xml IN Constituent security groups

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_APPUSERSYSTEMROLE
(
  @ID uniqueidentifier = null output,
  @CHANGEAGENTID uniqueidentifier = null
  @APPUSERID uniqueidentifier,
  @SECURITYMODECODE tinyint = 0,
  @SITES xml = null,
  @SYSTEMROLEID uniqueidentifier,
  @BRANCHSITEID uniqueidentifier = null,
  @CONSTITUENTSECURITYMODECODE tinyint = 0,
  @CONSTITUENTSECURITYGROUPS xml = null
)
as
  set nocount on;

  if @CHANGEAGENTID is null  
    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

  declare @CURRENTDATE datetime;
  declare @ISPROXYUSER bit = 0;
  declare @PROXYUSERHASPERMISSION bit = 0;
  declare @PROXYOWNERNAME nvarchar(128);
  declare @PROXYOWNERID uniqueidentifier = null;
  declare @ISPROXYOWNERSYSADMIN bit = 0;
  set @CURRENTDATE=getdate();

  if @ID is null
    set @ID = newid();

  if @SECURITYMODECODE <> 3 begin
    set @BRANCHSITEID = null
  end

  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 @ISPROXYUSER = dbo.UFN_APPUSER_ISPROXYUSER(@APPUSERID);

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

            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;

    insert into dbo.SYSTEMROLEAPPUSER
      (ID, APPUSERID, SECURITYMODECODE, SYSTEMROLEID, BRANCHSITEID, CONSTITUENTSECURITYMODECODE, DATEADDED, DATECHANGED, ADDEDBYID, CHANGEDBYID)
    values
      (@ID, @APPUSERID, @SECURITYMODECODE, @SYSTEMROLEID, @BRANCHSITEID, @CONSTITUENTSECURITYMODECODE, @CURRENTDATE, @CURRENTDATE, @CHANGEAGENTID, @CHANGEAGENTID);

    exec dbo.USP_SYSTEMROLEAPPUSER_GETSITES_ADDFROMXML @ID, @SITES, @CHANGEAGENTID, @CURRENTDATE;

    exec dbo.USP_SYSTEMROLEAPPUSER_GETSECURITYGROUPS_ADDFROMXML @ID, @CONSTITUENTSECURITYGROUPS, @CHANGEAGENTID, @CURRENTDATE;
  end try
  begin catch
    exec dbo.USP_RAISE_ERROR;
    return 1;
  end catch