UFN_SECURITY_APPUSER_GRANTED_BATCH_FORSITE

Returns a table of Site IDs for which the user has been granted the BATCH according to the role sites.

Return

Return Type
bit

Parameters

Parameter Parameter Type Mode Description
@APPUSERID uniqueidentifier IN
@BATCHID uniqueidentifier IN
@SITEID uniqueidentifier IN

Definition

Copy


            CREATE function dbo.UFN_SECURITY_APPUSER_GRANTED_BATCH_FORSITE
            (
                @APPUSERID uniqueidentifier,
                @BATCHID uniqueidentifier,
                @SITEID uniqueidentifier
            )
            returns bit as
            /*Returns a 1 if the the user has rights to according to site security.*/
            begin
                if exists
                (
                    select 
                          1
                    from 
                        dbo.SYSTEMROLEPERM_BATCHTEMPLATE as [ST]
                        inner join dbo.BATCH on BATCH.BATCHTEMPLATEID = [ST].BATCHTEMPLATEID
                        inner join dbo.SYSTEMROLEAPPUSER on SYSTEMROLEAPPUSER.SYSTEMROLEID = [ST].SYSTEMROLEID
                        left join dbo.SITEPERMISSION on SITEPERMISSION.APPUSERID = SYSTEMROLEAPPUSER.APPUSERID and SITEPERMISSION.SYSTEMROLEID = [ST].SYSTEMROLEID
                    where 
                        SYSTEMROLEAPPUSER.APPUSERID = @APPUSERID and 
                        BATCH.ID = @BATCHID and
                        ST.GRANTORDENY = 1 and                        
                            (    
                (SYSTEMROLEAPPUSER.SECURITYMODECODE = 0)
                or
                                (SITEPERMISSION.SITEID = @SITEID and (SYSTEMROLEAPPUSER.SECURITYMODECODE = 2 or SYSTEMROLEAPPUSER.SECURITYMODECODE = 3))
                or
                (SYSTEMROLEAPPUSER.SECURITYMODECODE = 1 and @SITEID is null)
                            )
                    union
                    select 
                          1
                    from 
                        dbo.SYSTEMROLEPERM_BATCHTYPE as [ST]
                        inner join dbo.SYSTEMROLEAPPUSER on SYSTEMROLEAPPUSER.SYSTEMROLEID = [ST].SYSTEMROLEID
                        inner join dbo.BATCHTEMPLATE on BATCHTEMPLATE.BATCHTYPECATALOGID = [ST].BATCHTYPECATALOGID
                        inner join dbo.BATCH on BATCH.BATCHTEMPLATEID = BATCHTEMPLATE.ID
                        left join dbo.SITEPERMISSION on SITEPERMISSION.APPUSERID = SYSTEMROLEAPPUSER.APPUSERID and SITEPERMISSION.SYSTEMROLEID = [ST].SYSTEMROLEID
                    where 
                        SYSTEMROLEAPPUSER.APPUSERID = @APPUSERID and 
                        BATCH.ID = @BATCHID and
                        ST.GRANTORDENY = 1 and                        
                            (
                (SYSTEMROLEAPPUSER.SECURITYMODECODE = 0)
                or
                                (SITEPERMISSION.SITEID = @SITEID and (SYSTEMROLEAPPUSER.SECURITYMODECODE = 2 or SYSTEMROLEAPPUSER.SECURITYMODECODE = 3))
                or
                (SYSTEMROLEAPPUSER.SECURITYMODECODE = 1 and @SITEID is null)
                            )
                    union
                    select 
                        1
                    from 
                        dbo.SYSTEMROLEPERM_BATCHWORKFLOWSTATE as [ST]
                        inner join dbo.SYSTEMROLEAPPUSER on SYSTEMROLEAPPUSER.SYSTEMROLEID = [ST].SYSTEMROLEID
                        inner join dbo.BATCHWORKFLOWSTATE on BATCHWORKFLOWSTATE.ID = [ST].BATCHWORKFLOWSTATEID
                        inner join dbo.BATCHWORKFLOW on BATCHWORKFLOW.ID = BATCHWORKFLOWSTATE.BATCHWORKFLOWID
                        inner join dbo.BATCHTEMPLATE on BATCHTEMPLATE.BATCHWORKFLOWID = BATCHWORKFLOW.ID --JamesWill WI160683 2011-06-07 Batch workflows aren't really tied to batch types anymore, so join to BATCHTEMPLATE via the direct BATCHTEMPLATE.BATCHWORKFLOWID relationship

                        inner join dbo.BATCH on BATCH.BATCHTEMPLATEID = BATCHTEMPLATE.ID
                        left join dbo.SITEPERMISSION on SITEPERMISSION.APPUSERID = SYSTEMROLEAPPUSER.APPUSERID and SITEPERMISSION.SYSTEMROLEID = [ST].SYSTEMROLEID
                    where 
                        SYSTEMROLEAPPUSER.APPUSERID = @APPUSERID and 
                        BATCH.ID = @BATCHID and
                        ST.GRANTORDENY = 1 and                        
                            (    
                (SYSTEMROLEAPPUSER.SECURITYMODECODE = 0)
                or
                                (SITEPERMISSION.SITEID = @SITEID and (SYSTEMROLEAPPUSER.SECURITYMODECODE = 2 or SYSTEMROLEAPPUSER.SECURITYMODECODE = 3))
                or
                (SYSTEMROLEAPPUSER.SECURITYMODECODE = 1 and @SITEID is null)
                            )
                )
                    return 1;

                return 0;
            end