USP_SECURITY_APPUSER_GRANTED_BATCHPROCESSOR_BULK

Parameters

Parameter Parameter Type Mode Description
@GRANTEDBATCHTEMPLATEXML xml IN
@CURRENTAPPUSERID uniqueidentifier IN

Definition

Copy



create procedure dbo.USP_SECURITY_APPUSER_GRANTED_BATCHPROCESSOR_BULK 
    (
        @GRANTEDBATCHTEMPLATEXML xml,
        @CURRENTAPPUSERID uniqueidentifier
    )
as
    /*
        This store procedure will return a list of all Batch Template IDs and NAMEs based on app user id whether a user has been granted or denied rights for data entry to the batch for a system role.
        GRANT or DENY logic needs to be covered in the calling procedure.
        The logic is same as UFN_SECURITY_APPUSER_GRANTED_BATCHPROCESSOR.

        @GRANTEDBATCHTEMPLATEXML - Mandatory Parameter. Contains xml list of all batch templates and their corresponding site ids. Filtering records to improve performance.
                It contains three fields BATCHTEMPLATEID, BATCHTEMPLATENAME and SITEID for a batch template.
        @CURRENTAPPUSERID - Mandatory Parameter. Current app user Id.
    */
begin
    set nocount on;

    declare @RETURNTABLE table (
    VALUE uniqueidentifier,
    LABEL varchar(1000),
    GRANTED bit
    );

    insert into @RETURNTABLE
    select
        distinct 
        GRANTEDBATCHTEMPLATE.NODE.value('@VALUE', 'uniqueidentifier') as VALUE,
        GRANTEDBATCHTEMPLATE.NODE.value('@LABEL', 'nvarchar(500)') as LABEL,
        PERMISSIONS.GRANTORDENY as GRANTED
    from 
        dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHWORKFLOWSTATE as PERMISSIONS
        inner join dbo.BATCHWORKFLOWSTATE on BATCHWORKFLOWSTATE.ID = PERMISSIONS.BATCHWORKFLOWSTATEID
        inner join dbo.BATCHTEMPLATE on BATCHTEMPLATE.BATCHWORKFLOWID = BATCHWORKFLOWSTATE.BATCHWORKFLOWID
        inner join @GRANTEDBATCHTEMPLATEXML.nodes('/GRANTEDBATCHTEMPLATES/GRANTEDBATCHTEMPLATE') GRANTEDBATCHTEMPLATE(NODE) on GRANTEDBATCHTEMPLATE.NODE.value('@VALUE', 'uniqueidentifier') = BATCHTEMPLATE.ID
        left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
        inner join dbo.SYSTEMROLEAPPUSER on SYSTEMROLEAPPUSER.APPUSERID = PERMISSIONS.APPUSERID and SYSTEMROLEAPPUSER.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID
    where 
        PERMISSIONS.APPUSERID = @CURRENTAPPUSERID 
        and BATCHWORKFLOWSTATE.ISINITIALSTATE = 1
        and
        (
            (
                SITEPERMISSION.SITEID = GRANTEDBATCHTEMPLATE.NODE.value('@SITEID', 'uniqueidentifier')                                                                    --Records with specific Sites

                or GRANTEDBATCHTEMPLATE.NODE.value('@SITEID', 'uniqueidentifier') is null                                                                                                --Records with no sites & 

                                                                                                                                                                                                                                                                --Batch template site security special case, specific site + no site records based on feature permission

            )
            or
            SYSTEMROLEAPPUSER.SECURITYMODECODE = 0                                                                                                                                                                        --All records

        )
        order by PERMISSIONS.GRANTORDENY ASC;

    --Only add those batchtemplates that are not added above.

    insert into @RETURNTABLE
    select 
        distinct 
        GRANTEDBATCHTEMPLATE.NODE.value('@VALUE', 'uniqueidentifier') as VALUE,
        GRANTEDBATCHTEMPLATE.NODE.value('@LABEL', 'nvarchar(500)') as LABEL ,
        PERMISSIONS.GRANTORDENY as GRANTED
    from 
        dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHTEMPLATE as PERMISSIONS
        inner join @GRANTEDBATCHTEMPLATEXML.nodes('/GRANTEDBATCHTEMPLATES/GRANTEDBATCHTEMPLATE') GRANTEDBATCHTEMPLATE(NODE) on GRANTEDBATCHTEMPLATE.NODE.value('@VALUE', 'uniqueidentifier') = PERMISSIONS.BATCHTEMPLATEID
        left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
        inner join dbo.SYSTEMROLEAPPUSER on SYSTEMROLEAPPUSER.APPUSERID = PERMISSIONS.APPUSERID and SYSTEMROLEAPPUSER.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID
    where 
        PERMISSIONS.APPUSERID = @CURRENTAPPUSERID 
        and
        (
            (
                SITEPERMISSION.SITEID = GRANTEDBATCHTEMPLATE.NODE.value('@SITEID', 'uniqueidentifier')                                                                    --Records with specific Sites

                or GRANTEDBATCHTEMPLATE.NODE.value('@SITEID', 'uniqueidentifier') is null                                                                                                --Records with no sites & 

                                                                                                                                                                                                                                                                --Batch template site security special case, specific site + no site records based on feature permission

            )
            or
            SYSTEMROLEAPPUSER.SECURITYMODECODE = 0                                                                                                                                                                        --All records

        )
        and not exists (select 1 from @RETURNTABLE where VALUE = GRANTEDBATCHTEMPLATE.NODE.value('@VALUE', 'uniqueidentifier'))
        order by PERMISSIONS.GRANTORDENY ASC;

    --Only add those batchtemplates that are not added above.

    select 
        distinct 
        GRANTEDBATCHTEMPLATE.NODE.value('@VALUE', 'uniqueidentifier') as VALUE,
        GRANTEDBATCHTEMPLATE.NODE.value('@LABEL', 'nvarchar(500)') as LABEL,
        PERMISSIONS.GRANTORDENY as GRANTED
    from 
        dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHTYPE as PERMISSIONS
        inner join dbo.BATCHTEMPLATE on PERMISSIONS.BATCHTYPECATALOGID = BATCHTEMPLATE.BATCHTYPECATALOGID
        inner join @GRANTEDBATCHTEMPLATEXML.nodes('/GRANTEDBATCHTEMPLATES/GRANTEDBATCHTEMPLATE') GRANTEDBATCHTEMPLATE(NODE) on GRANTEDBATCHTEMPLATE.NODE.value('@VALUE', 'uniqueidentifier') = BATCHTEMPLATE.ID
        left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
        inner join dbo.SYSTEMROLEAPPUSER on SYSTEMROLEAPPUSER.APPUSERID = PERMISSIONS.APPUSERID and SYSTEMROLEAPPUSER.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID
    where 
        PERMISSIONS.APPUSERID = @CURRENTAPPUSERID
        and PERMISSIONS.GRANTORDENY = 1
        and
        (
            (
                SITEPERMISSION.SITEID = GRANTEDBATCHTEMPLATE.NODE.value('@SITEID', 'uniqueidentifier')                                                                    --Records with specific Sites

                or GRANTEDBATCHTEMPLATE.NODE.value('@SITEID', 'uniqueidentifier') is null                                                                                                --Records with no sites & 

                                                                                                                                                                                                                                                                --Batch template site security special case, specific site + no site records based on feature permission

            )
            or
            SYSTEMROLEAPPUSER.SECURITYMODECODE = 0                                                                                                                                                                        --All records

        )
        and not exists (select 1 from @RETURNTABLE where VALUE = GRANTEDBATCHTEMPLATE.NODE.value('@VALUE', 'uniqueidentifier'))
        order by PERMISSIONS.GRANTORDENY ASC;

    select 
        VALUE,
        LABEL,
        GRANTED 
    from @RETURNTABLE;

end