USP_APPUSER_WITHPROXY_UPDATEPROXYINACTIVEREVOKEPAT

Parameters

Parameter Parameter Type Mode Description
@APPUSERID uniqueidentifier IN
@APPUSERINACTIVEREASONCODEID uniqueidentifier IN
@DETAILS varchar(300) IN
@CHANGEAGENTID uniqueidentifier IN
@CURRENTDATE datetime IN

Definition

Copy


create procedure [dbo].[USP_APPUSER_WITHPROXY_UPDATEPROXYINACTIVEREVOKEPAT](
    @APPUSERID uniqueidentifier,
    @APPUSERINACTIVEREASONCODEID uniqueidentifier = null,
    @DETAILS varchar(300),
    @CHANGEAGENTID uniqueidentifier,
    @CURRENTDATE datetime)
as
set nocount on;

    declare @LISTOFPROXYUSERS table (PROXYCOUNT int identity(1,1), PROXYUSERID uniqueidentifier, PROXYUSERNAME varchar(255));
    insert into @LISTOFPROXYUSERS
    exec [dbo].[USP_DATALIST_APPUSERPROXYUSERNAME] @APPUSERID;

    declare @LISTCOUNT int = 1;
    declare @PROXYCOUNT int = (select count(*) from @LISTOFPROXYUSERS);
    declare @PROXYUSERID uniqueidentifier;

    if @APPUSERINACTIVEREASONCODEID is null
      set @APPUSERINACTIVEREASONCODEID = 'CBB6C64D-8EE1-4CE6-B9D1-1D5F98D9EB0C' --this is the default inactive code located in APPUSERINACTIVECODE table;


    begin try
        update [dbo].[APPUSER] set
          [ISACTIVE] = 0,
          [CHANGEDBYID] = @CHANGEAGENTID,
          [DATECHANGED] = @CURRENTDATE
        from [dbo].[APPUSER]
        join @LISTOFPROXYUSERS PROXYLIST on [ID] = PROXYLIST.PROXYUSERID
        where [ISACTIVE] = 1;

        update [dbo].[APPUSERINACTIVEDETAIL] set
            [APPUSERINACTIVEREASONCODEID] = @APPUSERINACTIVEREASONCODEID,
            [DETAILS] = @DETAILS,
            [CHANGEDBYID] = @CHANGEAGENTID,
            [DATECHANGED] = @CURRENTDATE
        from [dbo].[APPUSERINACTIVEDETAIL]
        join @LISTOFPROXYUSERS PROXYLIST on [APPUSERINACTIVEDETAIL].[ID]= PROXYLIST.PROXYUSERID
        join [dbo].[APPUSER] on PROXYLIST.PROXYUSERID = [APPUSER].[ID]
        where [ISACTIVE] = 1;

        insert into [dbo].[APPUSERINACTIVEDETAIL] 
          ([ID], [APPUSERINACTIVEREASONCODEID], [DETAILS], [ADDEDBYID], [CHANGEDBYID], [DATEADDED], [DATECHANGED])
          select PROXYLIST.PROXYUSERID, @APPUSERINACTIVEREASONCODEID, @DETAILS, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE 
          from @LISTOFPROXYUSERS PROXYLIST 
          where PROXYLIST.PROXYUSERID not in (select [ID] from [dbo].[APPUSERINACTIVEDETAIL]);

        while (@LISTCOUNT <= @PROXYCOUNT)
          begin
            select @PROXYUSERID = PROXYUSERID from @LISTOFPROXYUSERS where PROXYCOUNT = @LISTCOUNT;
            exec [dbo].[USP_PROXYUSER_MARKINACTIVE_REVOKEPERSONALACCESSTOKEN] @PROXYUSERID, @CHANGEAGENTID, @CURRENTDATE, @DETAILS;
            set @LISTCOUNT = @LISTCOUNT + 1
          end

        declare @CURRENTDATETIMEOFFSET datetimeoffset = [dbo].[UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET](getutcdate(), 1);

        update [dbo].[APPUSERTHIRDPARTYAUTH] set
          [INACTIVE] = 1,
          [INACTIVEDATE] = @CURRENTDATETIMEOFFSET,
          [INACTIVEDETAILS] = @DETAILS,
          [INVITATIONID] = null,
          [CHANGEDBYID] = @CHANGEAGENTID,
          [DATECHANGED] = @CURRENTDATE
        from [dbo].[APPUSERTHIRDPARTYAUTH]
        join @LISTOFPROXYUSERS PROXYLIST on [ID] = PROXYLIST.PROXYUSERID
        where [INACTIVE] = 0;

        insert into [dbo].[APPUSERTHIRDPARTYAUTH]
          ([ID], [INACTIVE], [INACTIVEDATE], [INACTIVEDETAILS], [ADDEDBYID], [CHANGEDBYID], [DATEADDED], [DATECHANGED])
          select PROXYUSERID, 1, @CURRENTDATETIMEOFFSET, @DETAILS, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE 
          from @LISTOFPROXYUSERS PROXYLIST
          where PROXYLIST.PROXYUSERID not in (select [ID] from [dbo].[APPUSERTHIRDPARTYAUTH]);
    end try
    begin catch
      exec [dbo].[USP_RAISE_ERROR]
      return 1;
    end catch
    return 0;