UFN_SECURITY_APPUSER_GRANTED_BATCHASSIGNEDPROCESSOR

Return

Return Type
bit

Parameters

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

Definition

Copy


            create function dbo.UFN_SECURITY_APPUSER_GRANTED_BATCHASSIGNEDPROCESSOR
            (@APPUSERID uniqueidentifier,@BATCHID uniqueidentifier)
            returns bit
            as
            /*
            Returns true if user has been granted and not denied rights for data entry to the batch for a system role.
            */
            begin
                --If at least one grant and no deny then return true

                --otherwise, false

                declare @grant bit;
                set @grant=0;

                select @grant = ISSYSADMIN from dbo.APPUSER where ID = @APPUSERID;

                if @grant = 0
                    begin
                        --order by GRANTORDENY, deny will be first.                

                        select top 1 @grant=1
                        from dbo.BATCH
                        where APPUSERID = @APPUSERID
                        and BATCH.ID=@BATCHID                    

                        if @@ROWCOUNT = 0 
                            begin
                                select top 1 @grant=GRANTORDENY
                                from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHTEMPLATE
                                with (NOEXPAND, INDEX(IX_V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHTEMPLATE_BATCHTEMPLATEID_APPUSERID))                                
                                inner join dbo.BATCH on BATCH.BATCHTEMPLATEID = V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHTEMPLATE.BATCHTEMPLATEID
                                where V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHTEMPLATE.APPUSERID = @APPUSERID
                                and BATCH.ID=@BATCHID                                
                                order by GRANTORDENY ASC;
                            end

                        if @@ROWCOUNT = 0 
                            begin
                                select top 1 @grant=GRANTORDENY
                                from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHTYPE
                                inner join dbo.BATCHTEMPLATE on BATCHTEMPLATE.BATCHTYPECATALOGID = V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHTYPE.BATCHTYPECATALOGID
                                inner join dbo.BATCH on BATCH.BATCHTEMPLATEID = BATCHTEMPLATE.ID
                                where V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHTYPE.APPUSERID = @APPUSERID
                                and BATCH.ID=@BATCHID                                
                                order by GRANTORDENY ASC;
                            end
                    end

                return @grant;

            end