USP_DATAFORMTEMPLATE_EDIT_EMAILADDRESS

The save procedure used by the edit dataform template "Email Address Edit Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@EMAILADDRESSTYPECODEID uniqueidentifier IN Type
@EMAILADDRESS UDT_EMAILADDRESS IN Email address
@PRIMARY bit IN Set as primary email address
@DONOTEMAIL bit IN Do not send email to this address
@UPDATEMATCHINGSPOUSEEMAILADDRESS bit IN Update matching email information for spouse
@UPDATEMATCHINGHOUSEHOLDEMAILADDRESS bit IN Update matching email addresses in household

Definition

Copy


                CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_EMAILADDRESS
                (
                    @ID uniqueidentifier,
                    @CHANGEAGENTID uniqueidentifier = null,
                    @EMAILADDRESSTYPECODEID uniqueidentifier,
                    @EMAILADDRESS dbo.UDT_EMAILADDRESS,
                    @PRIMARY bit,
                    @DONOTEMAIL bit,
                    @UPDATEMATCHINGSPOUSEEMAILADDRESS bit,
                    @UPDATEMATCHINGHOUSEHOLDEMAILADDRESS bit
                )
                as
                    set nocount on;

                    declare @CURRENTDATE datetime;
                    set @CURRENTDATE = getdate();

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

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

                    -- @UPDATEMATCHINGSPOUSEEMAILADDRESS has been deprecated in favor of updating all of the members of a household

                    set @UPDATEMATCHINGHOUSEHOLDEMAILADDRESS = case when @UPDATEMATCHINGSPOUSEEMAILADDRESS = 1 then 1 else @UPDATEMATCHINGHOUSEHOLDEMAILADDRESS 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,
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CURRENTDATE
                        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);

                            -- remove primary indicator if we're going to update with a new one

                            if @PRIMARY = 1
                                update dbo.EMAILADDRESS
                                set
                                    ISPRIMARY = 0,
                                    CHANGEDBYID = @CHANGEAGENTID,
                                    DATECHANGED = @CURRENTDATE
                                where
                                    CONSTITUENTID in (select ID from @MATCHINGCONSTITUENTS);

                            -- update the existing records

                            update dbo.EMAILADDRESS
                            set
                                EMAILADDRESSTYPECODEID = @EMAILADDRESSTYPECODEID,
                                EMAILADDRESS = @EMAILADDRESS,
                                ISPRIMARY = @PRIMARY,
                                DONOTEMAIL = @DONOTEMAIL,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            where
                                EMAILADDRESS = @OLDEMAILADDRESS
                            and
                                EMAILADDRESSTYPECODEID = @OLDEMAILADDRESSTYPECODEID
                            and
                                CONSTITUENTID in (select ID from @MATCHINGCONSTITUENTS);

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

                    return 0;