USP_DATAFORMTEMPLATE_EDIT_SYSTEMROLE_FEATUREPERMS3

The save procedure used by the edit dataform template "System Role Feature Permissions 3 Edit Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@RECORDOPERATIONLIST xml IN Record Operation Permission List
@FORMLIST xml IN Form Permission List
@DATALISTLIST xml IN Datalist Permission List
@BUSINESSPROCESSLIST xml IN Business Process Permission List
@DASHBOARDLIST xml IN Dashboard Permission List
@SMARTQUERYLIST xml IN Smart Query Permission List
@KPILIST xml IN KPI Permission List
@QUERYVIEWLIST xml IN Query View Permission List
@REPORTLIST xml IN Report Permission List
@SYSTEMPRIVILEGELIST xml IN Report Permission List
@SEARCHLISTLIST xml IN Search List Permission List
@MAPENTITYLIST xml IN Map Entity Permission List

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_SYSTEMROLE_FEATUREPERMS3(
                        @ID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier =null,    
                        @RECORDOPERATIONLIST xml ,
                        @FORMLIST xml,  
                        @DATALISTLIST xml,
                        @BUSINESSPROCESSLIST xml,
                        @DASHBOARDLIST xml,
                        @SMARTQUERYLIST xml,
                        @KPILIST xml,
                        @QUERYVIEWLIST xml,
                        @REPORTLIST xml,
                        @SYSTEMPRIVILEGELIST xml,
                        @SEARCHLISTLIST xml,
                        @MAPENTITYLIST xml

                    ) AS

                    set nocount on;

                    if @CHANGEAGENTID is null  
                        exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

                    declare @CURRENTDATE datetime;
                    set @CURRENTDATE=getdate();

                    BEGIN TRY


                        update dbo.SYSTEMROLE set
                            CHANGEDBYID = @CHANGEAGENTID  ,DATECHANGED=@CURRENTDATE
                        where ID = @ID;


                        if @RECORDOPERATIONLIST is not null
                            exec dbo.USP_SYSTEMROLE_GETRECORDOPLIST_UPDATEFROMXML @id, @RECORDOPERATIONLIST, @CHANGEAGENTID;

                        if @FORMLIST is not null
                            exec dbo.USP_SYSTEMROLE_GETFORMLIST_UPDATEFROMXML @id, @FORMLIST, @CHANGEAGENTID;

                        if @DATALISTLIST is not null
                            exec dbo.USP_SYSTEMROLE_GETDATALISTLIST_UPDATEFROMXML @id, @DATALISTLIST, @CHANGEAGENTID;

                        if @BUSINESSPROCESSLIST is not null
                            exec dbo.USP_SYSTEMROLE_GETBUSINESSPROCESSLIST_UPDATEFROMXML @id, @BUSINESSPROCESSLIST, @CHANGEAGENTID;

                        if @DASHBOARDLIST is not null
                            exec dbo.USP_SYSTEMROLE_GETDASHBOARDLIST_UPDATEFROMXML @id, @DASHBOARDLIST, @CHANGEAGENTID;

                        if @SMARTQUERYLIST is not null
                            exec dbo.USP_SYSTEMROLE_GETSMARTQUERYLIST_UPDATEFROMXML @id, @SMARTQUERYLIST, @CHANGEAGENTID;

                        if @KPILIST is not null
                            exec dbo.USP_SYSTEMROLE_GETKPILIST_UPDATEFROMXML @id, @KPILIST, @CHANGEAGENTID;

                        -- Bug 25413 - AdamBu - Smart field instance security is actually handled by granting

                        --        rights to their underlying query views.  Preserve the smart field permissions,

                        --        so that they don't get overwritten by the changes to other query views.

                        declare @QUERYVIEWPERMS table(
                           GRANTORDENY bit,
                           ID uniqueidentifier,
                           QUERYVIEWCATALOGID uniqueidentifier                        
                        );

                        insert into @QUERYVIEWPERMS (
                           GRANTORDENY,
                           ID,
                           QUERYVIEWCATALOGID                        
                        )
                        select 
                            [GRANTORDENY],
                            [ID],
                            [QUERYVIEWCATALOGID] 
                        from UFN_SYSTEMROLE_GETQUERYVIEWLIST_FROMITEMLISTXML(@QUERYVIEWLIST)
                        union
                        select 
                            [GRANTORDENY],
                            [ID],
                            [QUERYVIEWCATALOGID] 
                        from dbo.UFN_SYSTEMROLE_GETSMARTFIELDINSTANCELIST(@ID);

                        set @QUERYVIEWLIST =
                            (
                                select *
                                from @QUERYVIEWPERMS
                                for xml raw('ITEM'),type,elements,root('QUERYVIEWLIST'),BINARY BASE64
                            );

                        if @QUERYVIEWLIST is null
                        begin
                            set @QUERYVIEWLIST = '<QUERYVIEWLIST></QUERYVIEWLIST>'
                        end
                        --End bug fix


                        if @QUERYVIEWLIST is not null
                            exec dbo.USP_SYSTEMROLE_GETQUERYVIEWLIST_UPDATEFROMXML @id, @QUERYVIEWLIST, @CHANGEAGENTID;

                        if @REPORTLIST is not null
                            exec dbo.USP_SYSTEMROLE_GETREPORTLIST_UPDATEFROMXML @id, @REPORTLIST, @CHANGEAGENTID;

                        if @SYSTEMPRIVILEGELIST is not null
                            exec dbo.USP_SYSTEMROLE_GETSYSTEMPRIVILEGELIST_UPDATEFROMXML @id, @SYSTEMPRIVILEGELIST, @CHANGEAGENTID;

                        if @SEARCHLISTLIST is not null
                            exec dbo.USP_SYSTEMROLE_GETSEARCHLISTLIST_UPDATEFROMXML @id, @SEARCHLISTLIST, @CHANGEAGENTID;

                        if @MAPENTITYLIST is not null
                            exec dbo.USP_SYSTEMROLE_GETMAPENTITYLIST_UPDATEFROMXML @id, @MAPENTITYLIST, @CHANGEAGENTID;

                        return 0;

                    END TRY
                    BEGIN CATCH
                        exec dbo.USP_RAISE_ERROR;
                        return 1;
                    END CATCH