USP_EMAIL_TRANSACTIONAL_ADD_FROM_ACKNOWLEDGEMENT

Updates the database for transactional email messages send for an acknowledgement

Parameters

Parameter Parameter Type Mode Description
@EMAILID int IN
@EMAILJOBID int IN
@USERID int IN
@EMAILADDRESS nvarchar(255) IN
@DISPLAYNAME nvarchar(255) IN
@BACKOFFICERECORDID int IN
@MERGEID uniqueidentifier IN
@IsInvalidAccount bit INOUT

Definition

Copy


CREATE procedure dbo.USP_EMAIL_TRANSACTIONAL_ADD_FROM_ACKNOWLEDGEMENT
(
    @EMAILID int,
    @EMAILJOBID int,
    @USERID int,
    @EMAILADDRESS nvarchar(255),
    @DISPLAYNAME nvarchar(255),
    @BACKOFFICERECORDID int,
    @MERGEID uniqueidentifier,
    @IsInvalidAccount bit = null output
)
as
begin

    declare @NOW datetime
    set @NOW = GETUTCDATE()

    --get backoffice/people id

    declare @BACKOFFICEPEOPLEID int
    select @BACKOFFICEPEOPLEID=ID from dbo.BackOfficeSystemPeople where BackofficeRecordID=@BACKOFFICERECORDID and BackOfficeSystemID=0
    if @BACKOFFICEPEOPLEID is NULL
    begin
        insert into dbo.BackOfficeSystemPeople (BackOfficeSystemID,BackofficeRecordID) values (0,@BACKOFFICERECORDID)
        select @BACKOFFICEPEOPLEID=@@IDENTITY 
    end

    declare @EMAILRECIPIENTID int = null;
    select @EMAILRECIPIENTID = ID from Email_Recipient where EmailID = @EMAILID and UserID = @USERID;

    set @IsInvalidAccount = 0;
    select @IsInvalidAccount = ISBLACKLISTED from dbo.EMAILINVALIDRECIPIENT where ADDRESS = @EMAILADDRESS    

    --Doing an Add/Update in case of a resend where you want to do an update

    if @EMAILRECIPIENTID is not null
        update Email_Recipient
        set AddressBookID=0,
            DisplayName=@DISPLAYNAME,
            EmailAddress=@EMAILADDRESS,
            DataSourceID=null,
            [INVALIDACCOUNT] = @IsInvalidAccount,
            BackOfficeSystemPeopleID=@BACKOFFICEPEOPLEID
        where ID = @EMAILRECIPIENTID;
    else
    begin
        --insert into Email_Recipient

        INSERT INTO Email_Recipient
        (
            [EmailID],
            [UserID],
            [AddressBookID],
            [DisplayName],
            [EmailAddress],
            [DataSourceID],
            [INVALIDACCOUNT],
            [BackOfficeSystemPeopleID]
        )
        VALUES
        (
            @EMAILID,
            @USERID,
            0,
            @DISPLAYNAME,
            @EMAILADDRESS,
            NULL,
            @IsInvalidAccount,
            @BACKOFFICEPEOPLEID
        );
        set @EMAILRECIPIENTID=@@IDENTITY;
    end

    declare @ERID int

    if @IsInvalidAccount = 0
    begin

        --insert into EmailJob_Recipient

        INSERT INTO EmailJob_Recipient
        (
            [EMAILID],
            [EMAILJOBID],
            [USERID],
            [EMAILADDRESS],
            [MESSAGEDATE],
            [SENTDATE],
            [UPDATEDATE],
            [SENT],
            [OPENED],
            [OPENEDDATE],
            [DSNED],
            [RECENTDSNDATE],
            [RECENTDSNSIGNATUREID],
            [RECENTDSNCATEGORY],
            [STATUSREPORT],
            [COMPLETED],
            [ADDRESSBOOKID],
            [EMAILRECIPIENTID],
            [BACKOFFICESYSTEMPEOPLEID],
            [MERGEID]
        )
        VALUES
        (
            @EMAILID,
            @EMAILJOBID,
            @USERID,
            @EMAILADDRESS,
            @NOW,
            null,
            @NOW,
            0,
            0,
            NULL,
            0,
            NULL,
            NULL,
            NULL,
            NULL,
            0,
            0,
            @EMAILRECIPIENTID,
            @BACKOFFICEPEOPLEID,
            @MERGEID
        )
        set @ERID= @@IDENTITY

        --update EMAILJOB's status to 'processed'

        update EMAILJOB set Status=12 where ID=@EMAILJOBID

    end

    return @ERID
end