USP_DATAFORMTEMPLATE_EDIT_SYSTEMROLEADDCUSTOMUSERS
The save procedure used by the edit dataform template "System Role Add Custom Users Edit Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter indicating the ID of the record being edited. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@USERNAMELIST | xml | IN | User Name List |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_SYSTEMROLEADDCUSTOMUSERS(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@USERNAMELIST xml
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATE datetime;
set @CURRENTDATE=getdate();
BEGIN TRY
update dbo.SYSTEMROLE set
CHANGEDBYID = @CHANGEAGENTID, DATECHANGED=@CURRENTDATE
where ID = @ID;
--Parse and validate user name list
declare @NAMES table (CUSTOM_AUTHENTICATION_USERID nvarchar(255))
insert into @NAMES (CUSTOM_AUTHENTICATION_USERID)
select distinct CUSTOM_AUTHENTICATION_USERID from dbo.[UFN_SYSTEMROLE_GETCUSTOMUSERNAMELIST_FROMITEMLISTXML](@USERNAMELIST);
--Add Appusers that don't yet exist
insert into dbo.APPUSER (CUSTOM_AUTHENTICATION_USERID, [DISPLAYNAME], USERSID, [ADDEDBYID], [CHANGEDBYID], [DATEADDED], [DATECHANGED])
select distinct CUSTOM_AUTHENTICATION_USERID,CUSTOM_AUTHENTICATION_USERID, SUSER_SID('NT AUTHORITY\ANONYMOUS LOGON'), @CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE
from @NAMES as NEWUSERS
where NEWUSERS.CUSTOM_AUTHENTICATION_USERID not in (select CUSTOM_AUTHENTICATION_USERID from dbo.APPUSER);
--Add users to role
insert into dbo.SYSTEMROLEAPPUSER (SYSTEMROLEID, APPUSERID, ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
select @ID, APPUSER.ID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
from dbo.APPUSER
where APPUSER.CUSTOM_AUTHENTICATION_USERID in (select CUSTOM_AUTHENTICATION_USERID from @NAMES)
and APPUSER.ID not in (select APPUSERID from dbo.SYSTEMROLEAPPUSER where SYSTEMROLEID=@ID);
--Update display names for any Appusers that don't have them
update dbo.APPUSER set DISPLAYNAME = NEWUSERS.CUSTOM_AUTHENTICATION_USERID,CHANGEDBYID = @CHANGEAGENTID,DATECHANGED=@CURRENTDATE
from dbo.APPUSER
inner join @NAMES as NEWUSERS
on APPUSER.CUSTOM_AUTHENTICATION_USERID = NEWUSERS.CUSTOM_AUTHENTICATION_USERID
where len(APPUSER.DISPLAYNAME) = 0 and len(NEWUSERS.CUSTOM_AUTHENTICATION_USERID) > 0;
--Update the "synchronized" flag for users that have been entered
update dbo.SYSTEMROLEAPPUSER set FROMROLESYNC = 0,CHANGEDBYID = @CHANGEAGENTID,DATECHANGED=@CURRENTDATE
from dbo.SYSTEMROLEAPPUSER
inner join dbo.APPUSER on SYSTEMROLEAPPUSER.APPUSERID = APPUSER.ID
inner join @NAMES as NEWUSERS on APPUSER.CUSTOM_AUTHENTICATION_USERID= NEWUSERS.CUSTOM_AUTHENTICATION_USERID
where SYSTEMROLEID = @ID and SYSTEMROLEAPPUSER.FROMROLESYNC = 1;
return 0;
END TRY
BEGIN CATCH
exec dbo.USP_RAISE_ERROR;
return 1;
END CATCH