USP_DATAFORMTEMPLATE_EDIT_SYSTEMROLESINGLEFEATUREPERMISSION

The save procedure used by the edit dataform template "System Role Single Feature Permission Edit Data 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.
@FEATURETYPE tinyint IN Feature type
@FEATUREID uniqueidentifier IN Feature ID
@GRANTORDENY tinyint IN Grant Or Deny

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_SYSTEMROLESINGLEFEATUREPERMISSION (
    @ID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @FEATURETYPE tinyint,
    @FEATUREID uniqueidentifier,
    @GRANTORDENY tinyint
)
as

    set nocount on;

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

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

    declare @PERMISSIONID uniqueidentifier;

    /* cache current context information */
    declare @contextCache varbinary(128);

    begin try

        -- data form instance

        if @FEATURETYPE = 1
            begin
                if @GRANTORDENY = 2
                    begin
                        set @contextCache = CONTEXT_INFO();

            if not @CHANGEAGENTID is null --CR292752-020408

              set CONTEXT_INFO @CHANGEAGENTID;

                        delete from dbo.SYSTEMROLEPERM_DATAFORMINSTANCE 
                            where (DATAFORMINSTANCECATALOGID = @FEATUREID) and (SYSTEMROLEID = @ID)

                        if not @contextCache is null
                            set CONTEXT_INFO @contextCache
                    end
                else
                    begin
                        select @PERMISSIONID = 
                            (select ID from dbo.SYSTEMROLEPERM_DATAFORMINSTANCE
                             where (DATAFORMINSTANCECATALOGID = @FEATUREID) and (SYSTEMROLEID = @ID))

                        if @PERMISSIONID is null
                            insert into dbo.SYSTEMROLEPERM_DATAFORMINSTANCE
                                (ID, SYSTEMROLEID, DATAFORMINSTANCECATALOGID, GRANTORDENY, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                            values
                                (NewID(), @ID, @FEATUREID, @GRANTORDENY, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
                        else
                            update dbo.SYSTEMROLEPERM_DATAFORMINSTANCE 
                                set GRANTORDENY = @GRANTORDENY, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CURRENTDATE
                                where (ID = @PERMISSIONID) and (GRANTORDENY <> @GRANTORDENY)
                    end                                
            end

        -- data list

        else if @FEATURETYPE = 2
            begin
                if @GRANTORDENY = 2
                    begin
                        set @contextCache = CONTEXT_INFO();

            if not @CHANGEAGENTID is null
              set CONTEXT_INFO @CHANGEAGENTID;

                        delete from dbo.SYSTEMROLEPERM_DATALIST
                            where (DATALISTCATALOGID = @FEATUREID) and (SYSTEMROLEID = @ID)
                        if not @contextCache is null
                            set CONTEXT_INFO @contextCache
                    end
                else
                    begin
                        select @PERMISSIONID = 
                            (select ID from dbo.SYSTEMROLEPERM_DATALIST
                             where (DATALISTCATALOGID = @FEATUREID) and (SYSTEMROLEID = @ID))

                        if @PERMISSIONID is null
                            insert into dbo.SYSTEMROLEPERM_DATALIST
                                (ID, SYSTEMROLEID, DATALISTCATALOGID, GRANTORDENY, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                            values
                                (NewID(), @ID, @FEATUREID, @GRANTORDENY, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
                        else
                            update dbo.SYSTEMROLEPERM_DATALIST
                                set GRANTORDENY = @GRANTORDENY, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CURRENTDATE
                                where (ID = @PERMISSIONID) and (GRANTORDENY <> @GRANTORDENY)
                    end                                
            end

        -- record operation

        else if @FEATURETYPE = 3
            begin
                if @GRANTORDENY = 2
                    begin
                        set @contextCache = CONTEXT_INFO();

            if not @CHANGEAGENTID is null --CR292761-020408

              set CONTEXT_INFO @CHANGEAGENTID;

            delete from dbo.SYSTEMROLEPERM_RECORDOPERATION
                            where (RECORDOPERATIONCATALOGID = @FEATUREID) and (SYSTEMROLEID = @ID)

            if not @contextCache is null
                            set CONTEXT_INFO @contextCache
                    end
                else
                    begin
                        select @PERMISSIONID = 
                            (select ID from dbo.SYSTEMROLEPERM_RECORDOPERATION
                             where (RECORDOPERATIONCATALOGID = @FEATUREID) and (SYSTEMROLEID = @ID))

                        if @PERMISSIONID is null
                            insert into dbo.SYSTEMROLEPERM_RECORDOPERATION
                                (ID, SYSTEMROLEID, RECORDOPERATIONCATALOGID, GRANTORDENY, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                            values
                                (NewID(), @ID, @FEATUREID, @GRANTORDENY, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
                        else
                            update dbo.SYSTEMROLEPERM_RECORDOPERATION
                                set GRANTORDENY = @GRANTORDENY, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CURRENTDATE
                                where (ID = @PERMISSIONID) and (GRANTORDENY <> @GRANTORDENY)
                    end                                
            end

        -- business process

        else if @FEATURETYPE = 4
            begin
                if @GRANTORDENY = 2
                    begin
                        set @contextCache = CONTEXT_INFO();

            if not @CHANGEAGENTID is null
              set CONTEXT_INFO @CHANGEAGENTID;

                        delete from dbo.SYSTEMROLEPERM_BUSINESSPROCESS
                            where (BUSINESSPROCESSCATALOGID = @FEATUREID) and (SYSTEMROLEID = @ID)
                        if not @contextCache is null
                            set CONTEXT_INFO @contextCache
                    end
                else
                    begin
                        select @PERMISSIONID = 
                            (select ID from dbo.SYSTEMROLEPERM_BUSINESSPROCESS
                             where (BUSINESSPROCESSCATALOGID = @FEATUREID) and (SYSTEMROLEID = @ID))

                        if @PERMISSIONID is null
                            insert into dbo.SYSTEMROLEPERM_BUSINESSPROCESS
                                (ID, SYSTEMROLEID, BUSINESSPROCESSCATALOGID, GRANTORDENY, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                            values
                                (NewID(), @ID, @FEATUREID, @GRANTORDENY, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
                        else
                            update dbo.SYSTEMROLEPERM_BUSINESSPROCESS
                                set GRANTORDENY = @GRANTORDENY, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CURRENTDATE
                                where (ID = @PERMISSIONID) and (GRANTORDENY <> @GRANTORDENY)
                    end                                
            end

        -- dashboard

        else if @FEATURETYPE = 5
            begin
                if @GRANTORDENY = 2
                    begin
                        set @contextCache = CONTEXT_INFO();

            if not @CHANGEAGENTID is null
              set CONTEXT_INFO @CHANGEAGENTID;

                        delete from dbo.SYSTEMROLEPERM_DASHBOARD
                            where (DASHBOARDCATALOGID = @FEATUREID) and (SYSTEMROLEID = @ID)
                        if not @contextCache is null
                            set CONTEXT_INFO @contextCache
                    end
                else
                    begin
                        select @PERMISSIONID = 
                            (select ID from dbo.SYSTEMROLEPERM_DASHBOARD
                             where (DASHBOARDCATALOGID = @FEATUREID) and (SYSTEMROLEID = @ID))

                        if @PERMISSIONID is null
                            insert into dbo.SYSTEMROLEPERM_DASHBOARD
                                (ID, SYSTEMROLEID, DASHBOARDCATALOGID, GRANTORDENY, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                            values
                                (NewID(), @ID, @FEATUREID, @GRANTORDENY, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
                        else
                            update dbo.SYSTEMROLEPERM_DASHBOARD
                                set GRANTORDENY = @GRANTORDENY, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CURRENTDATE
                                where (ID = @PERMISSIONID) and (GRANTORDENY <> @GRANTORDENY)
                    end                                
            end

    else if @FEATURETYPE = 21 --CR292749-020408 begin

      begin
        if @GRANTORDENY = 2
          begin
            set @contextCache = CONTEXT_INFO();

            if not @CHANGEAGENTID is null
              set CONTEXT_INFO @CHANGEAGENTID;

            delete from dbo.SYSTEMROLEPERM_REPORT
              where (REPORTCATALOGID = @FEATUREID) and (SYSTEMROLEID = @ID)
            if not @contextCache is null
              set CONTEXT_INFO @contextCache
          end
        else
          begin
            select @PERMISSIONID = 
              (select ID from dbo.SYSTEMROLEPERM_REPORT
                where (REPORTCATALOGID = @FEATUREID) and (SYSTEMROLEID = @ID))

            if @PERMISSIONID is null
                        insert into dbo.SYSTEMROLEPERM_REPORT
                                  (ID, SYSTEMROLEID, REPORTCATALOGID, GRANTORDENY, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                              values
                                  (NewID(), @ID, @FEATUREID, @GRANTORDENY, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
                      else
                          update dbo.SYSTEMROLEPERM_REPORT

            set GRANTORDENY = @GRANTORDENY, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CURRENTDATE
                          where (ID = @PERMISSIONID) and (GRANTORDENY <> @GRANTORDENY)
                    end                            
            end    --CR292749-020408 end

    end try
    begin catch
        exec dbo.USP_RAISE_ERROR
        return 1
    end catch

return 0;