USP_SYSTEMROLE_UPDATEFROMMAPENTITYLIST
Updates MAPENTITY permissions for a given system role ID, xml for items updated, and xml for items deleted.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN | |
@MAPENTITYLIST | xml | IN | |
@MAPENTITYLIST_DELETED | xml | IN |
Definition
Copy
create procedure dbo.USP_SYSTEMROLE_UPDATEFROMMAPENTITYLIST
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@CHANGEDATE datetime,
@MAPENTITYLIST xml = null,
@MAPENTITYLIST_DELETED xml = null
)
as
begin
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
if @CHANGEDATE is null
set @CHANGEDATE = getdate();
if @MAPENTITYLIST is not null
begin
declare @MAPENTITYTABLE table
(
ID uniqueidentifier,
MAPENTITYCATALOGID uniqueidentifier,
GRANTORDENY bit
)
insert into @MAPENTITYTABLE
select
T.c.value('(ID)[1]','uniqueidentifier') AS 'ID',
T.c.value('(MAPENTITYCATALOGID)[1]','uniqueidentifier') AS 'MAPENTITYCATALOGID',
T.c.value('(GRANTORDENY)[1]','bit') AS 'GRANTORDENY'
from @MAPENTITYLIST.nodes('/MAPENTITYLIST/ITEM') T(c)
insert into dbo.SYSTEMROLEPERM_MAPENTITY
(
SYSTEMROLEID,
GRANTORDENY,
ID,
MAPENTITYCATALOGID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
@ID,
GRANTORDENY,
ID,
MAPENTITYCATALOGID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
from @MAPENTITYTABLE as [temp]
where
not exists
(
select ID from dbo.SYSTEMROLEPERM_MAPENTITY as data
where data.ID = [temp].ID
)
update dbo.[SYSTEMROLEPERM_MAPENTITY] set
[SYSTEMROLEPERM_MAPENTITY].GRANTORDENY = temp.GRANTORDENY,
[SYSTEMROLEPERM_MAPENTITY].CHANGEDBYID = @CHANGEAGENTID,
[SYSTEMROLEPERM_MAPENTITY].DATECHANGED = @CHANGEDATE
from @MAPENTITYTABLE as [temp]
where
[SYSTEMROLEPERM_MAPENTITY].ID = [temp].ID and
[SYSTEMROLEPERM_MAPENTITY].MAPENTITYCATALOGID = [temp].MAPENTITYCATALOGID and
[SYSTEMROLEPERM_MAPENTITY].GRANTORDENY <> [temp].GRANTORDENY
end
if @MAPENTITYLIST_DELETED is not null
begin
declare @MAPENTITYTABLE_DELETED table
(
ID uniqueidentifier
)
insert into @MAPENTITYTABLE_DELETED
select
T.c.value('(ID)[1]','uniqueidentifier') AS 'ID'
from @MAPENTITYLIST_DELETED.nodes('/MAPENTITYLIST_DELETED/ITEM') T(c)
delete from dbo.[SYSTEMROLEPERM_MAPENTITY]
where
[SYSTEMROLEPERM_MAPENTITY].ID in
(
select ID from @MAPENTITYTABLE_DELETED
)
end
end