USP_EMAILADDRESS_UPDATE

Updates an existing email address.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@CURRENTDATE datetime IN
@EMAILADDRESSTYPECODEID uniqueidentifier IN
@EMAILADDRESS UDT_EMAILADDRESS IN
@PRIMARY bit IN
@DONOTEMAIL bit IN
@UPDATEMATCHINGHOUSEHOLDEMAILADDRESS bit IN
@INFOSOURCECODEID uniqueidentifier IN
@INFOSOURCECOMMENTS nvarchar(256) IN
@STARTDATE date IN
@ENDDATE date IN
@EMAILISCONFIDENTIAL bit IN
@DONOTEMAILREASONCODEID uniqueidentifier IN

Definition

Copy


            CREATE procedure dbo.USP_EMAILADDRESS_UPDATE
            (
                @ID uniqueidentifier,
                @CHANGEAGENTID uniqueidentifier = null,
                @CURRENTDATE datetime = null,
                @EMAILADDRESSTYPECODEID uniqueidentifier,
                @EMAILADDRESS dbo.UDT_EMAILADDRESS,
                @PRIMARY bit,
                @DONOTEMAIL bit,
                @UPDATEMATCHINGHOUSEHOLDEMAILADDRESS bit,
                @INFOSOURCECODEID uniqueidentifier,
                @INFOSOURCECOMMENTS nvarchar(256),
                @STARTDATE date = null,
                @ENDDATE date = null,
                @EMAILISCONFIDENTIAL bit=0,
                @DONOTEMAILREASONCODEID uniqueidentifier = null
            )
            as
                set nocount on;

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

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

                declare @CONSTITUENTID uniqueidentifier;
                declare @OLDEMAILADDRESS dbo.UDT_EMAILADDRESS;
                declare @OLDEMAILADDRESSTYPECODEID uniqueidentifier;

                if @DONOTEMAIL = 0
                begin
                    set @DONOTEMAILREASONCODEID = null
                end

                select
                    @CONSTITUENTID = EMAILADDRESS.[CONSTITUENTID],
                    @OLDEMAILADDRESS = EMAILADDRESS.[EMAILADDRESS],
                    @OLDEMAILADDRESSTYPECODEID = EMAILADDRESS.[EMAILADDRESSTYPECODEID]
                from
                    dbo.[EMAILADDRESS]
                where
                    EMAILADDRESS.[ID] = @ID;

                begin try
                    if @PRIMARY = 1
                        update
                            dbo.EMAILADDRESS
                        set
                            ISPRIMARY = 0,
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CURRENTDATE
                        where
                            CONSTITUENTID = @CONSTITUENTID and
                            ISPRIMARY = 1 and
                            ID <> @ID;

                    update
                        dbo.EMAILADDRESS
                    set
                        EMAILADDRESSTYPECODEID = @EMAILADDRESSTYPECODEID,
                        EMAILADDRESS = @EMAILADDRESS,
                        ISPRIMARY = @PRIMARY,
                        DONOTEMAIL = @DONOTEMAIL,
                        INFOSOURCECODEID = @INFOSOURCECODEID,
                        INFOSOURCECOMMENTS = @INFOSOURCECOMMENTS,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CURRENTDATE,
                        STARTDATE = @STARTDATE,
                        ENDDATE = @ENDDATE,
                        ISCONFIDENTIAL = @EMAILISCONFIDENTIAL,
                        DONOTEMAILREASONCODEID = @DONOTEMAILREASONCODEID
                    where
                        ID = @ID;

                    if @UPDATEMATCHINGHOUSEHOLDEMAILADDRESS = 1 begin
                        declare @MATCHINGCONSTITUENTS table(ID uniqueidentifier);
                        insert into @MATCHINGCONSTITUENTS select CONSTITUENTID from dbo.UFN_EMAILADDRESS_MATCHINGHOUSEHOLDRECORDS(@CONSTITUENTID, @OLDEMAILADDRESS, @OLDEMAILADDRESSTYPECODEID);

                        begin try
                            -- update the existing records

                            update dbo.EMAILADDRESS
                            set
                                EMAILADDRESSTYPECODEID = @EMAILADDRESSTYPECODEID,
                                EMAILADDRESS = @EMAILADDRESS,
                                DONOTEMAIL = @DONOTEMAIL,
                                INFOSOURCECODEID = @INFOSOURCECODEID,
                                INFOSOURCECOMMENTS = @INFOSOURCECOMMENTS,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE,
                                STARTDATE = @STARTDATE,
                                ENDDATE = @ENDDATE,
                                ISCONFIDENTIAL = @EMAILISCONFIDENTIAL,
                                DONOTEMAILREASONCODEID = @DONOTEMAILREASONCODEID
                            where
                                EMAILADDRESS = @OLDEMAILADDRESS
                                and ( (EMAILADDRESSTYPECODEID = @OLDEMAILADDRESSTYPECODEID) or (EMAILADDRESSTYPECODEID is null and @OLDEMAILADDRESSTYPECODEID is null) )
                                and CONSTITUENTID in (select ID from @MATCHINGCONSTITUENTS);
                        end try
                        begin catch
                            if PATINDEX('%CK_EMAILADDRESS_ENDDATEINVALIDIFPRIMARY%', ERROR_MESSAGE()) > 0
                                raiserror('ERR_EMAILADDRESS_ENDDATEINVALIDIFPRIMARYFORANOTHERMEMBER', 13, 1);
                            else
                                exec dbo.USP_RAISE_ERROR;
                            return 1;
                        end catch
                    end
                end try
                begin catch
                    exec dbo.USP_RAISE_ERROR;
                    return 1;
                end catch

                return 0;