UFN_SITE_BUILDDATALISTSITEFILTER
Return
| Return Type |
|---|
| table |
Parameters
| Parameter | Parameter Type | Mode | Description |
|---|---|---|---|
| @CURRENTAPPUSERID | uniqueidentifier | IN | |
| @SITEFILTERMODE | tinyint | IN | |
| @SITESSELECTED | xml | IN |
Definition
Copy
create function BBDW.[UFN_SITE_BUILDDATALISTSITEFILTER]
(
@CURRENTAPPUSERID uniqueidentifier,
@SITEFILTERMODE tinyint,
@SITESSELECTED xml = null
)
returns @SITEFILTERTABLE table
(
[SITEID] uniqueidentifier
)
as begin
if @SITEFILTERMODE = 1
begin
--If "My sites" was chosen, retrieve the app user's site.
insert into @SITEFILTERTABLE([SITEID])
select
a.[SITESYSTEMID]
from BBDW.[DIM_APPUSER] a
where a.[APPUSERSYSTEMID] = @CURRENTAPPUSERID;
end
else
begin
if @SITEFILTERMODE = 2
begin
--If "My site's branch" was chosen...
--Insert the app user's site and it's children
insert into @SITEFILTERTABLE(SITEID)
select
s.[SITESYSTEMID] as SITEID
from BBDW.[DIM_SITE] s
where s.[HIERARCHYPATH].IsDescendantOf(
(select
ROOTSITE.HIERARCHYPATH
from BBDW.[DIM_SITE] as [ROOTSITE]
inner join BBDW.[DIM_APPUSER] a on a.[SITESYSTEMID] = [ROOTSITE].[SITESYSTEMID]
where a.[APPUSERSYSTEMID] = @CURRENTAPPUSERID)
) = 1;
--Insert the app user's site's ancestors
with ANCESTORS_CTE as
(
select
[PARENT].[SITESYSTEMID] as [ID],
[PARENT].[HIERARCHYPATH]
from BBDW.[DIM_SITE] CHILD
inner join BBDW.[DIM_SITE] as [PARENT] on [PARENT].[HIERARCHYPATH] = [CHILD].[HIERARCHYPATH].GetAncestor(1)
inner join BBDW.[DIM_APPUSER] a on a.[SITESYSTEMID] = CHILD.[SITESYSTEMID]
where a.[APPUSERSYSTEMID] = @CURRENTAPPUSERID
union all
select
[PARENT].[SITESYSTEMID],
[PARENT].[HIERARCHYPATH]
from [ANCESTORS_CTE] [SITE]
inner join BBDW.[DIM_SITE] as [PARENT] on [PARENT].[HIERARCHYPATH] = [SITE].[HIERARCHYPATH].GetAncestor(1)
)
insert into @SITEFILTERTABLE([SITEID])
select
[ID]
from [ANCESTORS_CTE];
end
else
begin
if @SITEFILTERMODE = 3
begin
--If "Selected sites" was chosen, parse apart the given site xml.
insert into @SITEFILTERTABLE([SITEID])
select
T.c.value('(SITEID)[1]','uniqueidentifier')
from @SITESSELECTED.nodes('/SITESSELECTED/ITEM') T(c) ;
end
end
end
return;
end