USP_DATALIST_SYSTEMROLETASKS

Displays tasks assigned to the given system role

Parameters

Parameter Parameter Type Mode Description
@SYSTEMROLEID uniqueidentifier IN Input parameter indicating the context ID for the data list.

Definition

Copy


CREATE procedure dbo.USP_DATALIST_SYSTEMROLETASKS (@SYSTEMROLEID uniqueidentifier)
as
with XMLNAMESPACES
(
    'bb_appfx_task' as t,
    'bb_appfx_commontypes' as c
),
[TASKS_CTE] as
(
    select 
        [V_INSTALLED_TASKCATALOG].[ID],
        [V_INSTALLED_TASKCATALOG].[NAME],
        [V_INSTALLED_TASKCATALOG].[DESCRIPTION],
        [V_INSTALLED_TASKCATALOG].[FUNCTIONALAREAID],
        [V_INSTALLED_TASKCATALOG].[TASKSPECXML].value('/t:TaskSpec[1]/@ImageKey', 'nvarchar(500)') [TASKIMAGEKEY],

        --Because task specs can only have one task hidden condition, we don't need to cross apply across the TaskHiddenCondition 

        --nodes. If we ever add multiple conditions, this code will need to change.

        [V_INSTALLED_TASKCATALOG].[TASKSPECXML].value('/t:TaskSpec[1]/t:TaskHiddenCondition[1]/c:ExistsCondition[1]/@Key', 'nvarchar(max)') [EXISTSCONDITIONKEY],
        [V_INSTALLED_TASKCATALOG].[TASKSPECXML].value('/t:TaskSpec[1]/t:TaskHiddenCondition[1]/c:DoesNotExistCondition[1]/@Key', 'nvarchar(max)') [DOESNOTEXISTCONDITIONKEY]        
    from [dbo].[V_INSTALLED_TASKCATALOG]
)
select    [SYSTEMROLETASK].[ID], 
        [TASKS_CTE].[ID],
        [TASKS_CTE].[NAME],
        [TASKS_CTE].[DESCRIPTION],
        [FUNCTIONALAREACATALOG].[NAME] as 'Functional Area',
        [TASKS_CTE].[TASKIMAGEKEY],
        [SYSTEMROLETASK].[DISPLAYONHOMEPAGE]
from [TASKS_CTE]
inner join [dbo].[SYSTEMROLETASK] on [TASKS_CTE].[ID] = [SYSTEMROLETASK].[TASKID]
left outer join [dbo].[FUNCTIONALAREACATALOG] on [TASKS_CTE].[FUNCTIONALAREAID] = [FUNCTIONALAREACATALOG].[ID]
where 
    (        ([TASKS_CTE].[EXISTSCONDITIONKEY] is null and [TASKS_CTE].[DOESNOTEXISTCONDITIONKEY] is null)
        --Because this is logic for "task hidden", the logic to show the task is reversed: 

        --    for the "condition key exists", check that the condition does not exist

        --    and for the "condition key does not exist", check that the condition does exist

        or    ([TASKS_CTE].[EXISTSCONDITIONKEY] is not null and not exists(select 1 from [dbo].[CONDITIONSETTING] where [CONDITIONSETTING].[NAME] = [TASKS_CTE].EXISTSCONDITIONKEY))
        or    ([TASKS_CTE].[DOESNOTEXISTCONDITIONKEY] is not null and exists(select 1 from [dbo].[CONDITIONSETTING] where [CONDITIONSETTING].[NAME] = [TASKS_CTE].[DOESNOTEXISTCONDITIONKEY]))
    )
    and
    [SYSTEMROLETASK].SYSTEMROLEID = @SYSTEMROLEID