USP_APPUSER_WITHPROXY_UPDATEPROXYPERMISSIONS

Parameters

Parameter Parameter Type Mode Description
@APPUSERID uniqueidentifier IN
@APPUSERSITES xml IN
@APPUSERSYSTEMROLEID uniqueidentifier IN
@APPUSERSECURITYMODECODE tinyint IN
@APPUSERBRANCHSITEID uniqueidentifier IN
@APPUSERCONSTITUENTSECURITYMODECODE tinyint IN
@APPUSERCONSTITUENTSECURITYGROUPS xml IN
@PROXYCOUNT int IN
@CHANGEAGENTID uniqueidentifier IN
@CURRENTDATE datetime IN

Definition

Copy


        CREATE procedure dbo.USP_APPUSER_WITHPROXY_UPDATEPROXYPERMISSIONS
                        (@APPUSERID uniqueidentifier,
                        @APPUSERSITES xml,
                        @APPUSERSYSTEMROLEID uniqueidentifier,
                        @APPUSERSECURITYMODECODE tinyint,
                        @APPUSERBRANCHSITEID uniqueidentifier,
                        @APPUSERCONSTITUENTSECURITYMODECODE tinyint,
                        @APPUSERCONSTITUENTSECURITYGROUPS xml,
                        @PROXYCOUNT int,
                        @CHANGEAGENTID uniqueidentifier,
                        @CURRENTDATE datetime)
        as
        begin
          declare @LISTCOUNT int = 1;
          declare @DYNAMICSITES xml = @APPUSERSITES;
          declare @DYNAMICCONSTITUENTSECURITYGROUPS xml = @APPUSERCONSTITUENTSECURITYGROUPS;
          declare @SYSTEMROLEAPPUSERIDPROXY uniqueidentifier;
          declare @PROXYUSERIDLIST table (PROXYCOUNT int identity(1,1), PROXYSYSTEMROLEAPPUSERID uniqueidentifier,PROXYAPPUSERID uniqueidentifier);

        insert into @PROXYUSERIDLIST
          select
            SYSTEMROLEAPPUSER.ID,
            SYSTEMROLEAPPUSER.APPUSERID
          from dbo.SYSTEMROLEAPPUSER
          inner join dbo.APPUSER on APPUSER.ID = SYSTEMROLEAPPUSER.APPUSERID
          where APPUSER.PROXYOWNERID = @APPUSERID and SYSTEMROLEAPPUSER.SYSTEMROLEID = @APPUSERSYSTEMROLEID;

          begin try
            declare @PROXYSITE table (SITEID uniqueidentifier);
            insert into @PROXYSITE
            select
              t.x.value('SITEID[1]','uniqueidentifier'
            from @DYNAMICSITES.nodes('/SITES/ITEM') t(x);

            declare @PROXYCONSTITUENTSECURITY table (CONSTITUENTSECURITYATTRIBUTEID uniqueidentifier);
            insert into @PROXYCONSTITUENTSECURITY
            select
              t.c.value('(CONSTITUENTSECURITYATTRIBUTEID)[1]','uniqueidentifier')
            from @DYNAMICCONSTITUENTSECURITYGROUPS.nodes('/CONSTITUENTSECURITYGROUPS/ITEM') t(c)

              update SYSTEMROLEAPPUSER
                set
                  SYSTEMROLEAPPUSER.SECURITYMODECODE = @APPUSERSECURITYMODECODE,
                  SYSTEMROLEAPPUSER.DATECHANGED = @CURRENTDATE,
                  SYSTEMROLEAPPUSER.CHANGEDBYID = @CHANGEAGENTID,
                  SYSTEMROLEAPPUSER.BRANCHSITEID = @APPUSERBRANCHSITEID,
                  SYSTEMROLEAPPUSER.CONSTITUENTSECURITYMODECODE = @APPUSERCONSTITUENTSECURITYMODECODE
                from dbo.SYSTEMROLEAPPUSER
                inner join dbo.APPUSER on APPUSER.ID = SYSTEMROLEAPPUSER.APPUSERID
                where APPUSER.PROXYOWNERID = @APPUSERID and SYSTEMROLEAPPUSER.SYSTEMROLEID = @APPUSERSYSTEMROLEID;

            while (@LISTCOUNT <= @PROXYCOUNT)
            begin

               --Get the systemroleappuser ID to apply to the USP

              select @SYSTEMROLEAPPUSERIDPROXY = PROXYLIST.PROXYSYSTEMROLEAPPUSERID from @PROXYUSERIDLIST PROXYLIST where PROXYLIST.PROXYCOUNT = @LISTCOUNT;

              declare @PROXYSITESXML xml = (select null as [ID], [SITEID] from @PROXYSITE for xml raw('ITEM'), type, elements, root('SITES'), BINARY BASE64);
              declare @PROXYCONSTITUENTSECURITYXML xml = (select [CONSTITUENTSECURITYATTRIBUTEID], null as [ID] from @PROXYCONSTITUENTSECURITY for xml raw('ITEM'),type,elements,root('CONSTITUENTSECURITYGROUPS'),BINARY BASE64);

              exec dbo.USP_SYSTEMROLEAPPUSER_GETSITES_UPDATEFROMXML @SYSTEMROLEAPPUSERIDPROXY , @PROXYSITESXML, @CHANGEAGENTID, @CURRENTDATE;

              exec dbo.USP_SYSTEMROLEAPPUSER_GETSECURITYGROUPS_UPDATEFROMXML @SYSTEMROLEAPPUSERIDPROXY, @PROXYCONSTITUENTSECURITYXML, @CHANGEAGENTID, @CURRENTDATE;

              set @LISTCOUNT = @LISTCOUNT + 1;
            end

          end try
          begin catch
            exec dbo.USP_RAISE_ERROR;
          end catch
        end