USP_DATAFORMTEMPLATE_EDITSAVE_THIRDPARTYAUTH_APPUSER_MARKINACTIVE

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@DETAILS nvarchar(300) IN

Definition

Copy


CREATE procedure [dbo].[USP_DATAFORMTEMPLATE_EDITSAVE_THIRDPARTYAUTH_APPUSER_MARKINACTIVE]
(
    @ID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @DETAILS nvarchar(300)
)
as
set nocount on;

declare @INACTIVECODE tinyint = 4;
declare @INACTIVE bit = 0;

select
    @INACTIVE = isnull([APPUSERTHIRDPARTYAUTH].[INACTIVE], 0)
from [dbo].[APPUSER]
left outer join [dbo].[APPUSERTHIRDPARTYAUTH]
    on [APPUSER].[ID] = [APPUSERTHIRDPARTYAUTH].[ID]
where [APPUSER].[ID] = @ID;

if @INACTIVE = 1
    raiserror('BBERR_APPUSERALREADYINACTIVE', 13, 1);

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

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

begin try

    if exists (select 1 from [dbo].[APPUSERTHIRDPARTYAUTH] where ID = @ID)
        update [dbo].[APPUSERTHIRDPARTYAUTH] set
            [INACTIVE] = 1,
            [INACTIVEDATE] = @CURRENTDATETIMEOFFSET,
            [INACTIVEDETAILS] = @DETAILS,
            [INVITATIONID] = null,
            [CHANGEDBYID] = @CHANGEAGENTID,
            [DATECHANGED] = @CURRENTDATE
        where [ID] = @ID;

    else
        insert into [dbo].[APPUSERTHIRDPARTYAUTH]
            ([ID], [INACTIVE], [INACTIVEDATE], [INACTIVEDETAILS], [ADDEDBYID], [CHANGEDBYID], [DATEADDED], [DATECHANGED])
        values
            (@ID, 1, @CURRENTDATETIMEOFFSET, @DETAILS, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);

    --USP executed to revoke PATs for inactive proxy user

    exec dbo.USP_PROXYUSER_MARKINACTIVE_REVOKEPERSONALACCESSTOKEN @ID, @CHANGEAGENTID, @CURRENTDATE, @DETAILS;

    declare @APPUSERINACTIVEREASONCODEID uniqueidentifier = 'CBB6C64D-8EE1-4CE6-B9D1-1D5F98D9EB0C'; --this is a default APPUSERINACTIVECODE


    update [dbo].[APPUSER] set
        [ISACTIVE] = 0,
        [CHANGEDBYID] = @CHANGEAGENTID,
        [DATECHANGED] = @CURRENTDATE
    from [dbo].[APPUSER]
    where [ID] = @ID;

    update [dbo].[APPUSERINACTIVEDETAIL] set
            [APPUSERINACTIVEREASONCODEID] = @APPUSERINACTIVEREASONCODEID,
            [DETAILS] = @DETAILS,
            [CHANGEDBYID] = @CHANGEAGENTID,
            [DATECHANGED] = @CURRENTDATE
    from [dbo].[APPUSERINACTIVEDETAIL]
    where [ID]= @ID;

    insert into [dbo].[APPUSERINACTIVEDETAIL] 
        ([ID], [APPUSERINACTIVEREASONCODEID], [DETAILS], [ADDEDBYID], [CHANGEDBYID], [DATEADDED], [DATECHANGED])
        values (@ID, @APPUSERINACTIVEREASONCODEID, @DETAILS, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);

    declare @ISPROXYOWNER bit = 0;
    exec @ISPROXYOWNER = [dbo].[UFN_APPUSER_HASPROXYUSER] @ID;

    if @ISPROXYOWNER = 1
        begin
            exec [dbo].[USP_APPUSER_WITHPROXY_UPDATEPROXYINACTIVEREVOKEPAT] @ID, @APPUSERINACTIVEREASONCODEID, @DETAILS, @CHANGEAGENTID, @CURRENTDATE;
        end
end try
begin catch
    exec [dbo].[USP_RAISE_ERROR]
    return 1
end catch

return 0;