USP_SITEPERMISSION_UPDATEPERMISSIONS
Updates the SitePermission table to reflect the current site permission assignments.
Definition
Copy
CREATE procedure dbo.USP_SITEPERMISSION_UPDATEPERMISSIONS
as
set nocount on;
/*Walk down the branch for all selected sites*/
with
SITE_HIERACHY_CTE as
(
select
SITE.NAME,
SITE.ID,
PARENTSITE.ID as PARENTID,
SITE.HIERARCHYPATH
from
dbo.SITE with (nolock)
inner join dbo.SITE as PARENTSITE with (nolock) on PARENTSITE.HIERARCHYPATH = SITE.HIERARCHYPATH.GetAncestor(1)
),
ASSIGNED_SITES_CTE as
(
select
SYSTEMROLE.ID as SYSTEMROLEID,
SYSTEMROLE.NAME as SYSTEMROLENAME,
SITE.ID as SITEID,
SITE.NAME as SITENAME,
SITE.HIERARCHYPATH,
SYSTEMROLEAPPUSER.ID as SYSTEMROLEAPPUSERID,
SYSTEMROLEAPPUSER.APPUSERID
from
dbo.SYSTEMROLEAPPUSERSITE with (nolock)
inner join dbo.SITE with (nolock) on SITE.ID = SYSTEMROLEAPPUSERSITE.SITEID
inner join dbo.SYSTEMROLEAPPUSER with (nolock) on SYSTEMROLEAPPUSER.ID = SYSTEMROLEAPPUSERSITE.SYSTEMROLEAPPUSERID
inner join dbo.SYSTEMROLE with (nolock) on SYSTEMROLEAPPUSER.SYSTEMROLEID = SYSTEMROLE.ID
where
SYSTEMROLEAPPUSER.SECURITYMODECODE = 2 and
SYSTEMROLEAPPUSER.ID not in(select SYSTEMROLEAPPUSERID from dbo.SITEPERMISSION)
union all
select
ASSIGNED_SITES_CTE.SYSTEMROLEID,
ASSIGNED_SITES_CTE.SYSTEMROLENAME,
SITE_HIERACHY_CTE.ID,
SITE_HIERACHY_CTE.NAME,
SITE_HIERACHY_CTE.HIERARCHYPATH,
ASSIGNED_SITES_CTE.SYSTEMROLEAPPUSERID,
ASSIGNED_SITES_CTE.APPUSERID
from
ASSIGNED_SITES_CTE
inner join SITE_HIERACHY_CTE on SITE_HIERACHY_CTE.PARENTID = ASSIGNED_SITES_CTE.SITEID
),
/*Walk down the hierarchy branch of the selected branch site*/
BRANCH_ASSIGNED_SITES_CTE as
(
select
SYSTEMROLE.ID as SYSTEMROLEID,
SYSTEMROLE.NAME as SYSTEMROLENAME,
SITE.ID as SITEID,
SITE.NAME as SITENAME,
SITE.HIERARCHYPATH,
SYSTEMROLEAPPUSER.ID as SYSTEMROLEAPPUSERID,
SYSTEMROLEAPPUSER.APPUSERID
from
dbo.SYSTEMROLEAPPUSER with (nolock)
inner join dbo.SITE with (nolock) on SITE.ID = SYSTEMROLEAPPUSER.BRANCHSITEID
inner join dbo.SYSTEMROLE with (nolock) on SYSTEMROLEAPPUSER.SYSTEMROLEID = SYSTEMROLE.ID
where
SYSTEMROLEAPPUSER.SECURITYMODECODE = 3 and
SYSTEMROLEAPPUSER.ID not in(select SYSTEMROLEAPPUSERID from dbo.SITEPERMISSION)
union all
select
BRANCH_ASSIGNED_SITES_CTE.SYSTEMROLEID,
BRANCH_ASSIGNED_SITES_CTE.SYSTEMROLENAME,
SITE_HIERACHY_CTE.ID,
SITE_HIERACHY_CTE.NAME,
SITE_HIERACHY_CTE.HIERARCHYPATH,
BRANCH_ASSIGNED_SITES_CTE.SYSTEMROLEAPPUSERID,
BRANCH_ASSIGNED_SITES_CTE.APPUSERID
from
BRANCH_ASSIGNED_SITES_CTE
inner join SITE_HIERACHY_CTE on SITE_HIERACHY_CTE.PARENTID = BRANCH_ASSIGNED_SITES_CTE.SITEID
),
/*Walk up the hierarchy branch of the selected branch site*/
BRANCH_CTE as
(
select
SYSTEMROLE.ID as SYSTEMROLEID,
SYSTEMROLE.NAME as SYSTEMROLENAME,
PARENTSITE.ID as SITEID,
PARENTSITE.NAME as SITENAME,
PARENTSITE.HIERARCHYPATH,
SYSTEMROLEAPPUSER.ID as SYSTEMROLEAPPUSERID,
SYSTEMROLEAPPUSER.APPUSERID,
PARENTSITE.HIERARCHYPATH.GetAncestor(1) as PARENTHIERARCHYID
from
dbo.SYSTEMROLEAPPUSER with (nolock)
inner join dbo.SITE with (nolock) on SITE.ID = SYSTEMROLEAPPUSER.BRANCHSITEID
inner join dbo.SYSTEMROLE with (nolock) on SYSTEMROLEAPPUSER.SYSTEMROLEID = SYSTEMROLE.ID
left outer join dbo.SITE as PARENTSITE with (nolock) on PARENTSITE.HIERARCHYPATH = SITE.HIERARCHYPATH.GetAncestor(1)
where
SYSTEMROLEAPPUSER.SECURITYMODECODE = 3 and
SITE.HIERARCHYPATH.GetAncestor(1) <> hierarchyid::GetRoot() and
SYSTEMROLEAPPUSER.ID not in(select SYSTEMROLEAPPUSERID from dbo.SITEPERMISSION)
union all
select
BRANCH_CTE.SYSTEMROLEID,
BRANCH_CTE.SYSTEMROLENAME,
SITE.ID,
SITE.NAME,
SITE.HIERARCHYPATH,
BRANCH_CTE.SYSTEMROLEAPPUSERID,
BRANCH_CTE.APPUSERID,
SITE.HIERARCHYPATH.GetAncestor(1)
from
BRANCH_CTE
inner join dbo.SITE with (nolock) on SITE.HIERARCHYPATH = BRANCH_CTE.PARENTHIERARCHYID
where
BRANCH_CTE.PARENTHIERARCHYID <> hierarchyid::GetRoot()
)
insert into SITEPERMISSION(SYSTEMROLEID, SYSTEMROLENAME, SITEID, SITENAME, SYSTEMROLEAPPUSERID, APPUSERID)
select SYSTEMROLEID, SYSTEMROLENAME, SITEID, SITENAME, SYSTEMROLEAPPUSERID, APPUSERID from ASSIGNED_SITES_CTE
union
select SYSTEMROLEID, SYSTEMROLENAME, SITEID, SITENAME, SYSTEMROLEAPPUSERID, APPUSERID from BRANCH_ASSIGNED_SITES_CTE
union
select SYSTEMROLEID, SYSTEMROLENAME, SITEID, SITENAME, SYSTEMROLEAPPUSERID, APPUSERID from BRANCH_CTE;