USP_CLIENTROLE_REFRESH
Executes the "Client Role Refresh" record operation.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | int | IN | Input parameter indicating the ID of the record being updated. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the update. |
Definition
Copy
create procedure dbo.USP_CLIENTROLE_REFRESH
(
@ID int,
@CHANGEAGENTID uniqueidentifier
)
with execute as owner
as begin
--Find selection ID for this role
declare @QUERYID int
declare @BBSYSTEM int
select @QUERYID = CR.REQueryID, @BBSYSTEM = CR.BBSystem from dbo.ClientRoles CR where CR.ID = @ID
--Look up info about this selection
declare @SELECTIONINFO table(DBOBJECTNAME nvarchar(255), OBJECTTYPE tinyint)
insert into @SELECTIONINFO
exec dbo.USP_BBNC_GETSELECTIONLISTINFO @QUERYID
--Extract info about selection
declare @DBOBJECTNAME nvarchar(255)
declare @OBJECTTYPE int
select @DBOBJECTNAME = DBOBJECTNAME, @OBJECTTYPE = OBJECTTYPE from @SELECTIONINFO
--Build SQL for upating roles based on the selection
if @OBJECTTYPE = 1
set @DBOBJECTNAME = @DBOBJECTNAME + '()'
declare @SQLSTRING nvarchar(4000)
set @SQLSTRING = ' declare @USER table(ID int)'
set @SQLSTRING += ' insert into @USER'
set @SQLSTRING += ' select VWBOU.USERID'
set @SQLSTRING += ' from dbo.' + @DBOBJECTNAME + ' as R'
set @SQLSTRING += ' inner join dbo.CONSTITUENT C on C.ID = R.ID'
set @SQLSTRING += ' inner join vwBackOfficeLinkedUsers VWBOU on VWBOU.BackOfficeRecordID = C.SEQUENCEID'
set @SQLSTRING += ' where VWBOU.BackOfficeSystemID = ' + CAST(@BBSYSTEM as nvarchar(10))
set @SQLSTRING += ' begin transaction'
--Delete existing role-based users
set @SQLSTRING += ' delete from dbo.USERROLES where CLIENTROLESID = ' + CAST(@ID as nvarchar(10)) + ' and MANUALLYADDED = 0'
--Insert the new role-based users
set @SQLSTRING += ' insert into dbo.USERROLES (CLIENTUSERSID, CLIENTROLESID, MANUALLYADDED) '
set @SQLSTRING += ' select ID, ' + CAST(@ID as nvarchar(10)) + ', 0'
set @SQLSTRING += ' from @USER'
--Get Update Date
set @SQLSTRING += ' DECLARE @UPDATEDATE datetime'
set @SQLSTRING += ' SET @UPDATEDATE = getutcdate()'
--Update client user's Membership Refreshed On date
set @SQLSTRING += ' update dbo.CLIENTUSERS'
set @SQLSTRING += ' set MEMBERSHIPREFRESHEDON = @UPDATEDATE'
set @SQLSTRING += ' from dbo.CLIENTUSERS'
set @SQLSTRING += ' inner join dbo.USERROLES UR on UR.CLIENTUSERSID = CLIENTUSERS.ID'
set @SQLSTRING += ' where UR.ClientRolesID = ' + CAST(@ID as nvarchar(10))
--Update roles Refreshed Date
set @SQLSTRING += ' update dbo.CLIENTROLES set REFRESHEDDATE = @UPDATEDATE'
set @SQLSTRING += ' where ID = ' + CAST(@ID as nvarchar(10))
set @SQLSTRING += ' commit transaction'
execute(@SQLSTRING)
end