USP_BBNC_INTEGRATIONNEWSLETTERSUBSCRIPTIONADDUPDATE

Adds a newsletter subscription record from the Blackbaud Internet Solutions integration service.

Parameters

Parameter Parameter Type Mode Description
@BBNCUSERID int IN
@EMAILJOBRECIPIENTMAPID int IN
@EMAILBBNCMAPID int IN
@EMAILTEMPLATEBBNCMAPID int IN
@SENTDATE datetime IN
@OPENED bit IN
@UPDATEDATE datetime IN
@CLICKEDTHROUGH bit IN
@URL UDT_WEBADDRESS IN
@EMAILLISTMAPID int IN
@EMAILLISTNAME nvarchar(50) IN
@SUBSCRIBED bit IN
@CHANGEAGENTID uniqueidentifier IN
@CHANGEDATE datetime IN
@BACKOFFICERECORDID int IN

Definition

Copy


            CREATE procedure dbo.USP_BBNC_INTEGRATIONNEWSLETTERSUBSCRIPTIONADDUPDATE
            (
                @BBNCUSERID int,
                @EMAILJOBRECIPIENTMAPID int,
                @EMAILBBNCMAPID int,
                @EMAILTEMPLATEBBNCMAPID int,
                @SENTDATE datetime,
                @OPENED bit,
                @UPDATEDATE datetime,
                @CLICKEDTHROUGH bit,
                @URL dbo.UDT_WEBADDRESS,
                @EMAILLISTMAPID int,
                @EMAILLISTNAME nvarchar(50),
                @SUBSCRIBED bit,
                @CHANGEAGENTID uniqueidentifier = null,
                @CHANGEDATE datetime = null,
                @BACKOFFICERECORDID int = null
            )
            as
                set nocount on;

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

                if @CHANGEDATE is null
                    set @CHANGEDATE = getdate();

                begin try
                    declare @NETCOMMUNITYCLIENTUSERID uniqueidentifier;
                    declare @CONSTITUENTID uniqueidentifier;

                    set @CONSTITUENTID = null;

                    if not @BACKOFFICERECORDID is null 
                        set @CONSTITUENTID = dbo.UFN_BBNC_GETCONSTITIDFROMMAPID(@BACKOFFICERECORDID);

                    if @BBNCUSERID > 0
                        select
                            @NETCOMMUNITYCLIENTUSERID = NETCOMMUNITYCLIENTUSER.ID,
                            @CONSTITUENTID = case when @CONSTITUENTID is null then NETCOMMUNITYCLIENTUSER.CONSTITUENTID else @CONSTITUENTID end
                        from
                            dbo.NETCOMMUNITYCLIENTUSER
                        where
                            BBNCUSERID = @BBNCUSERID;

                    --JamesWill CR282489-090607 Don't throw an error when the constituent ID is null. None of our integration tables require the CONSTITUENTID

                    --and this will give us a chance to link the records up later based on the NETCOMMUNITYEMAILJOBRECIPIENTID.


                    declare @NETCOMMUNITYEMAILJOBRECIPIENTID uniqueidentifier;
                    if @EMAILJOBRECIPIENTMAPID > 0
                        begin
                            select
                                @NETCOMMUNITYEMAILJOBRECIPIENTID = NETCOMMUNITYEMAILJOBRECIPIENT.ID
                            from
                                dbo.NETCOMMUNITYEMAILJOBRECIPIENT
                            where
                                BBNCMAPID = @EMAILJOBRECIPIENTMAPID;

                            if @NETCOMMUNITYEMAILJOBRECIPIENTID is null
                                begin
                                    set @NETCOMMUNITYEMAILJOBRECIPIENTID = newid();
                                    insert into dbo.NETCOMMUNITYEMAILJOBRECIPIENT
                                    (
                                        [ID],
                                        [BBNCMAPID],
                                        [CONSTITUENTID],
                                        [EMAILBBNCMAPID],
                                        [EMAILTEMPLATEBBNCMAPID],
                                        [SENTDATE],
                                        [OPENED],
                                        [UPDATEDATE],
                                        [CLICKEDTHROUGH],
                                        [URL],
                                        [ADDEDBYID],
                                        [CHANGEDBYID],
                                        [DATEADDED],
                                        [DATECHANGED]
                                    )
                                    values
                                    (
                                        @NETCOMMUNITYEMAILJOBRECIPIENTID,
                                        @EMAILJOBRECIPIENTMAPID,
                                        @CONSTITUENTID,
                                        coalesce(@EMAILBBNCMAPID, 0),
                                        coalesce(@EMAILTEMPLATEBBNCMAPID, 0),
                                        @SENTDATE,
                                        coalesce(@OPENED, 0),
                                        null, -- Only use UPDATEDATE when email data is downloaded through USP_BBNC_INTEGRATIONEMAILJOBRECIPIENTADDUPDATE

                                        coalesce(@CLICKEDTHROUGH, 0),
                                        coalesce(@URL, ''),
                                        @CHANGEAGENTID,
                                        @CHANGEAGENTID,
                                        @CHANGEDATE,
                                        @CHANGEDATE
                                    );
                                end
                            else
                                update dbo.NETCOMMUNITYEMAILJOBRECIPIENT
                                set
                                    [CONSTITUENTID] = @CONSTITUENTID,
                                    [EMAILBBNCMAPID] = coalesce(@EMAILBBNCMAPID, [EMAILBBNCMAPID]),
                                    [EMAILTEMPLATEBBNCMAPID] = coalesce(@EMAILTEMPLATEBBNCMAPID, [EMAILTEMPLATEBBNCMAPID]),
                                    [SENTDATE] = coalesce(@SENTDATE, [SENTDATE]),
                                    [OPENED] = case when @OPENED > [OPENED] then @OPENED else [OPENED] end,
                                    --Only use UPDATEDATE when email data is downloaded through USP_BBNC_INTEGRATIONEMAILJOBRECIPIENTADDUPDATE

                                    [CLICKEDTHROUGH] = case when @CLICKEDTHROUGH > [CLICKEDTHROUGH] then @CLICKEDTHROUGH else [CLICKEDTHROUGH] end,
                                    [URL] = coalesce(@URL, [URL]),
                                    [UPDATEDATE] = coalesce(@UPDATEDATE, [UPDATEDATE]),
                                    [CHANGEDBYID] = @CHANGEAGENTID,
                                    [DATECHANGED] = @CHANGEDATE
                                where
                                    [ID] = @NETCOMMUNITYEMAILJOBRECIPIENTID
                                    and
                                    (
                                        coalesce([CONSTITUENTID], '00000000-0000-0000-0000-000000000000') <> coalesce(@CONSTITUENTID, '00000000-0000-0000-0000-000000000000')
                                        or [EMAILBBNCMAPID] <> coalesce(@EMAILBBNCMAPID, [EMAILBBNCMAPID])
                                        or [EMAILTEMPLATEBBNCMAPID] <> coalesce(@EMAILTEMPLATEBBNCMAPID, [EMAILTEMPLATEBBNCMAPID])
                                        or (@SENTDATE is not null and ([SENTDATE] <> coalesce(@SENTDATE, [SENTDATE]) or [SENTDATE] is null))
                                        or [OPENED] <> coalesce(@OPENED, [OPENED])
                                        or [CLICKEDTHROUGH] <> coalesce(@CLICKEDTHROUGH, [CLICKEDTHROUGH])
                                        or [URL] <> coalesce(@URL, [URL])
                                        or [UPDATEDATE] <> coalesce(@UPDATEDATE, [UPDATEDATE])
                                    );
                        end

                    if exists
                    (
                        select
                            [ID]
                        from
                            dbo.NETCOMMUNITYNEWSLETTERSUBSCRIPTION
                        where
                            (
                                [NETCOMMUNITYCLIENTUSERID] = @NETCOMMUNITYCLIENTUSERID
                                or [CONSTITUENTID] = @CONSTITUENTID
                            )
                            and [EMAILLISTMAPID] = @EMAILLISTMAPID
                    )
                        update dbo.NETCOMMUNITYNEWSLETTERSUBSCRIPTION
                        set
                            [EMAILLISTNAME] = coalesce(@EMAILLISTNAME, [EMAILLISTNAME]),
                            [SUBSCRIBED] = coalesce(@SUBSCRIBED, [SUBSCRIBED]),
                            [LATESTEMAILJOBRECIPIENTID] = coalesce(@NETCOMMUNITYEMAILJOBRECIPIENTID, [LATESTEMAILJOBRECIPIENTID]),
                            [UPDATEDATE] = coalesce(@UPDATEDATE, [UPDATEDATE]),
                            [CHANGEDBYID] = @CHANGEAGENTID,
                            [DATECHANGED] = @CHANGEDATE
                        where
                            (
                                [NETCOMMUNITYCLIENTUSERID] = @NETCOMMUNITYCLIENTUSERID
                                or [CONSTITUENTID] = @CONSTITUENTID
                            )
                            and [EMAILLISTMAPID] = @EMAILLISTMAPID
                            and
                            (
                                [EMAILLISTNAME] <> coalesce(@EMAILLISTNAME, [EMAILLISTNAME])
                                or [SUBSCRIBED] <> coalesce(@SUBSCRIBED, [SUBSCRIBED])
                                or coalesce([LATESTEMAILJOBRECIPIENTID], '00000000-0000-0000-0000-000000000000') <> coalesce(@NETCOMMUNITYEMAILJOBRECIPIENTID, '00000000-0000-0000-0000-000000000000')
                                or ([UPDATEDATE] <> @UPDATEDATE or ([UPDATEDATE] is null and @UPDATEDATE is not null) or ([UPDATEDATE] is not null and @UPDATEDATE is null))

                            );
                    else
                        insert into dbo.NETCOMMUNITYNEWSLETTERSUBSCRIPTION
                        (
                            [ID],
                            [NETCOMMUNITYCLIENTUSERID],
                            [CONSTITUENTID],
                            [EMAILLISTMAPID],
                            [EMAILLISTNAME],
                            [SUBSCRIBED],
                            [LATESTEMAILJOBRECIPIENTID],
                            [ADDEDBYID],
                            [CHANGEDBYID],
                            [DATEADDED],
                            [DATECHANGED]
                        )
                        values
                        (
                            newid(),
                            @NETCOMMUNITYCLIENTUSERID,
                            @CONSTITUENTID,
                            coalesce(@EMAILLISTMAPID, 0),
                            coalesce(@EMAILLISTNAME, ''),
                            coalesce(@SUBSCRIBED, 0),
                            @NETCOMMUNITYEMAILJOBRECIPIENTID,
                            @CHANGEAGENTID,
                            @CHANGEAGENTID,
                            @CHANGEDATE,
                            @CHANGEDATE
                        );

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

                return 0;