UFN_CLIENTUSERS_TASKS
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CLIENTUSERSID | int | IN | |
@TASKGUID | uniqueidentifier | IN |
Definition
Copy
create function dbo.UFN_CLIENTUSERS_TASKS
(
@CLIENTUSERSID int,
@TASKGUID uniqueidentifier = null
)
returns table
as return
--TWG 05/15/2013 inlining this function
with
TASK_CTE (
TASKGUID,
CLIENTSITESID,
ISSITETASK,
APPLYTOCHILDREN
) as (
select SGT.TASKGUID,
SGCRCS.CLIENTSITESID,
SG.SITETASKSGROUP as ISSITETASK,
case when sum(cast(SGCRCS.APPLYTOCHILDREN as int)) > 0 then 1 else 0 end as APPLYTOCHILDREN
from dbo.fnUserRoles(@CLIENTUSERSID, 1) UR
inner join CMSSECURITYGROUPCLIENTROLECLIENTSITE SGCRCS
on UR.CLIENTROLESID = SGCRCS.CLIENTROLESID
inner join CMSSECURITYGROUP SG
on SG.ID = SGCRCS.CMSSECURITYGROUPID
inner join CMSSECURITYGROUPTASK SGT
on SGT.CMSSECURITYGROUPID = SG.ID
where (@TASKGUID is null or SGT.TASKGUID = @TASKGUID)
group by SGT.TASKGUID, SGCRCS.CLIENTSITESID, SG.SITETASKSGROUP
),
CHILDTASK_CTE (
TASKGUID,
CLIENTSITEID,
ISSITETASK
) as (
select distinct
TASKS.TASKGUID,
CHILD.ID CLIENTSITEID,
TASKS.ISSITETASK
from (
select
TASKGUID,
CLIENTSITESID,
ISSITETASK,
APPLYTOCHILDREN
from TASK_CTE
where CLIENTSITESID is not null and APPLYTOCHILDREN = 1) TASKS
cross apply dbo.UFN_CLIENTSITE_GETCHILDIDS(TASKS.CLIENTSITESID) CHILD
)
select
TASK.TASKGUID,
TASK.CLIENTSITESID,
TASK.ISSITETASK,
TASK.APPLYTOCHILDREN
from
TASK_CTE TASK
union all
select
CHILDTASK.TASKGUID,
CHILDTASK.CLIENTSITEID,
CHILDTASK.ISSITETASK,
1
from
CHILDTASK_CTE CHILDTASK
where
not exists (select 1 from TASK_CTE TASK where TASK.CLIENTSITESID = CHILDTASK.CLIENTSITEID and TASK.TASKGUID = CHILDTASK.TASKGUID);