USP_BBNC_COMMITPROFILEUPDATEBIOGRAPHICAL_1

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@BIRTHDATE UDT_FUZZYDATE IN
@FIRSTNAME nvarchar(50) IN
@GENDERCODE tinyint IN
@KEYNAME nvarchar(100) IN
@MAIDENNAME nvarchar(100) IN
@MARITALSTATUSCODEID uniqueidentifier IN
@MIDDLENAME nvarchar(50) IN
@NICKNAME nvarchar(50) IN
@TITLECODEID uniqueidentifier IN
@SUFFIXCODEID uniqueidentifier IN
@REQUESTNOEMAIL bit IN
@CUSTOMIDENTIFIER nvarchar(36) IN
@WEBADDRESS UDT_WEBADDRESS IN
@CHANGEAGENTID uniqueidentifier IN
@CHANGEDATE datetime IN
@TITLE2CODEID uniqueidentifier IN
@SUFFIX2CODEID uniqueidentifier IN
@CONSTITUENCYCODEID uniqueidentifier IN
@GENDERCODEID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_BBNC_COMMITPROFILEUPDATEBIOGRAPHICAL_1
(
                    @ID uniqueidentifier = null,                            
                    @BIRTHDATE dbo.UDT_FUZZYDATE = '00000000',
                    @FIRSTNAME nvarchar(50) = '',
                    @GENDERCODE tinyint = 0,
                    @KEYNAME nvarchar(100),
                    @MAIDENNAME nvarchar(100) = '',
                    @MARITALSTATUSCODEID uniqueidentifier = null,
                    @MIDDLENAME nvarchar(50) = '',
                    @NICKNAME nvarchar(50) = '',
                    @TITLECODEID uniqueidentifier = null,
                    @SUFFIXCODEID uniqueidentifier = null,
                    @REQUESTNOEMAIL bit = 0,
                    @CUSTOMIDENTIFIER nvarchar(36) = '',
                    @WEBADDRESS dbo.UDT_WEBADDRESS = '',
                    @CHANGEAGENTID uniqueidentifier = null,
                    @CHANGEDATE datetime = null,
                    @TITLE2CODEID uniqueidentifier = null,
                    @SUFFIX2CODEID uniqueidentifier = null,
                    @CONSTITUENCYCODEID uniqueidentifier = null,
          @GENDERCODEID uniqueidentifier = null
                ) as
                    set nocount on;

                    if @ID is null
                        begin
                            raiserror('The constituent ID is required',16,1);
                            return -2;
                        end

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

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

                    --JamesWill 02/26/2008 CR294475-022508 

                    if @NICKNAME is null
                        set @NICKNAME = '';

                    begin try
                        update dbo.CONSTITUENT set
                            [BIRTHDATE] = @BIRTHDATE,
                            [FIRSTNAME] = @FIRSTNAME,
                            [KEYNAME] = @KEYNAME,
                            [MAIDENNAME] = @MAIDENNAME,
                            [MARITALSTATUSCODEID] = @MARITALSTATUSCODEID,
                            [MIDDLENAME] = @MIDDLENAME,
                            -- TMV 10/11/2007 CR285339-101107 Non-members can submit profile update if they received an

                            --  email, only set the NETCOMMUNITYMEMBER flag during signups

                            -- [NETCOMMUNITYMEMBER] = 1,

                            [NICKNAME] = @NICKNAME,
                            [TITLECODEID] = @TITLECODEID,
                            [TITLE2CODEID] = @TITLE2CODEID,
                            [SUFFIXCODEID] = @SUFFIXCODEID,
                            [SUFFIX2CODEID] = @SUFFIX2CODEID,
                            -- SHL 3/2/2013 Bug 256850 Fix; Gender should now change to unknown when the user desires it

                            -- [GENDERCODE] = 

                            --    case

                            --        when (@GENDERCODE is not null) and (@GENDERCODE > 0) then

                            --            @GENDERCODE  --Only update the gender if it's not "Unknown"

                            --        else

                            --            [GENDERCODE]

                            --    end,

                            [GENDERCODE] = @GENDERCODE,
                            [WEBADDRESS] = @WEBADDRESS,
                            [CUSTOMIDENTIFIER] = @CUSTOMIDENTIFIER,
                            [CHANGEDBYID] = @CHANGEAGENTID,
                            [DATECHANGED] = @CHANGEDATE,
              [GENDERCODEID] = @GENDERCODEID
                        where
                            [ID] = @ID;

                        --Retrieve the ID of the solicit code being used to flag do not email.

                        declare @NOEMAILSOLICITCODEID uniqueidentifier
                        select top 1 @NOEMAILSOLICITCODEID=DONOTEMAILSOLICITCODEID
                        from NETCOMMUNITYDEFAULTCODEMAP

                        --Does the constituent already have that solicit code assigned?

                        declare @CONSTITUENTSOLICITCODEID uniqueidentifier
                        select @CONSTITUENTSOLICITCODEID=ID 
                        from CONSTITUENTSOLICITCODE 
                        where CONSTITUENTID=@ID and 
                            SOLICITCODEID=@NOEMAILSOLICITCODEID

                        --If they request to not receive email...

                        if @REQUESTNOEMAIL = 1 
                        begin
                            --And if they don't have the appropriate solicit code, add it.

                            if @CONSTITUENTSOLICITCODEID is null
                            begin
                                exec dbo.USP_DATAFORM_ADD_CONSTITUENTSOLICITCODE null, @NOEMAILSOLICITCODEID, @ID, null, null, '', @CHANGEAGENTID
                            end
                            --Otherwise, if they do have the solicit code and the dates on the code do not include today, 

                            --  unbound its date range.

                            else
                            begin
                                update CONSTITUENTSOLICITCODE
                                set
                                    STARTDATE=null,
                                    ENDDATE=null,
                                    CHANGEDBYID=@CHANGEAGENTID,
                                    DATECHANGED=@CHANGEDATE
                                where
                                    ID=@CONSTITUENTSOLICITCODEID and
                                    (((not STARTDATE is null) and (datediff(day, STARTDATE, getdate())<0)) or
                                    ((not ENDDATE is null) and (datediff(day, getdate(), ENDDATE)<0)))
                            end
                        end

                        --If they request to receive email and have the solicit code, remove it.

                        if @REQUESTNOEMAIL = 0 and not @CONSTITUENTSOLICITCODEID is null
                        begin
                            exec dbo.USP_CONSTITUENTSOLICITCODE_DELETE @CONSTITUENTSOLICITCODEID, @CHANGEAGENTID
                        end


                    -- CONSTITUENCY UPDATE

                    declare @EARLIESTTIME as datetime =dbo.UFN_DATE_GETEARLIESTTIME(@CHANGEDATE)
                    if @CONSTITUENCYCODEID is not null
                    and not exists
                    (
                        select
                            1
                        from
                            dbo.CONSTITUENCY
                        where
                            [CONSTITUENTID] = @ID
                            and [CONSTITUENCYCODEID] = @CONSTITUENCYCODEID
                            and 
                            (
                                ([DATEFROM] is null and [DATETO] is null)
                                or ([DATEFROM] <= @EARLIESTTIME and [DATETO] is null)
                                or ([DATEFROM] is null and @EARLIESTTIME <= [DATETO])
                                or (@EARLIESTTIME between [DATEFROM] and [DATETO])
                            )
                    )
                        begin
                            declare @CONSTITUENCYDATETO datetime;


                            select top (1)
                                @CONSTITUENCYDATETO = dateadd(day, -1, [CONSTITUENCY].[DATEFROM])
                            from
                                dbo.CONSTITUENCY
                            where
                                [CONSTITUENCY].[CONSTITUENTID] = @ID
                                and [CONSTITUENCY].[CONSTITUENCYCODEID] = @CONSTITUENCYCODEID
                                and [CONSTITUENCY].[DATEFROM] > @EARLIESTTIME
                            order by
                                [DATETO];

                            insert into dbo.CONSTITUENCY
                            (
                                [CONSTITUENTID],
                                [CONSTITUENCYCODEID],
                                [DATEFROM],
                                [DATETO],
                                [ADDEDBYID],
                                [CHANGEDBYID],
                                [DATEADDED],
                                [DATECHANGED]
                            )
                            values
                            (
                                @ID,
                                @CONSTITUENCYCODEID,
                                @EARLIESTTIME,
                                dbo.UFN_DATE_GETEARLIESTTIME(@CONSTITUENCYDATETO),
                                @CHANGEAGENTID,
                                @CHANGEAGENTID,
                                @CHANGEDATE,
                                @CHANGEDATE
                            );
                        end
                    end try
                    begin catch
                        exec dbo.USP_RAISE_ERROR;
                        return 1;
                    end catch

                    return 0;