USP_FAFADDRESSBOOK_CONSTITUENT_ADD

Adds a constituent to FAF participant's address book.

Parameters

Parameter Parameter Type Mode Description
@OWNERCONSTITUENTID uniqueidentifier IN
@CONSTITUENTID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


create procedure dbo.USP_FAFADDRESSBOOK_CONSTITUENT_ADD (    
    @OWNERCONSTITUENTID uniqueidentifier,  
    @CONSTITUENTID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null


as

set nocount on;

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

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

declare @SequenceID int;   
select @SequenceID = C.SEQUENCEID from dbo.CONSTITUENT C(nolock) where C.ID = @OWNERCONSTITUENTID;  

declare @ClientUsersID int;
set @ClientUsersID = dbo.fnGetUserIDFromLinkedRecordID(@SequenceID, 0);

begin try

    if @ClientUsersID is not null
    begin
        if not exists (select ID from ADDRESSBOOKFAF(nolock) where CLIENTUSERSID = @ClientUsersID and CONSTITUENTID = @CONSTITUENTID)
        begin
            declare @AddressBookFafID uniqueidentifier = null;
            set @AddressBookFafID = dbo.UFN_FAFADDRESSBOOK_CONSTITUENT_LOOKUP(@ClientUsersID, @CONSTITUENTID);

            if @AddressBookFafID is not null
            begin
                update
                    dbo.ADDRESSBOOKFAF
                set
                    CONSTITUENTID = @CONSTITUENTID,
                    CHANGEDBYID = @CHANGEAGENTID,
                    DATECHANGED = @CURRENTDATE
                where
                    ID = @AddressBookFafID;
            end
            else
            begin
                insert into dbo.ADDRESSBOOKFAF 
                (
                    ID,
                    CLIENTUSERSID,
                    CONSTITUENTID,
                    FIRSTNAME,
                    LASTNAME,
                    MIDDLENAME,
                    TITLECODEID,
                    --SALUTATION,

                    EMAILADDRESS,
                    HOMEPHONE,
                    --CELLPHONE,

                    ADDRESSBLOCK,
                    CITY,
                    STATEID,
                    COUNTRYID,
                    POSTCODE,
                    --PREFERREDCOMMUNICATIONCODE,

                    --PREFERREDCOMMUNICATION,

                    --CONTACTTYPECODE,

                    --CONTACTTYPE,

                    --TEXTMESSAGESEND,

                    ADDEDBYID,
                    CHANGEDBYID,
                    DATEADDED,
                    DATECHANGED
                )
                select top 1
                    newid(),
                    @ClientUsersID,
                    C.ID,
                    C.FIRSTNAME,
                    C.KEYNAME,
                    C.MIDDLENAME,
                    C.TITLECODEID,
                    isnull(E.EMAILADDRESS, '') as EMAILADDRESS,
                    isnull(P.NUMBER, '') as NUMBER,
                    isnull(A.ADDRESSBLOCK, '') as ADDRESSBLOCK,
                    isnull(A.CITY, '') as CITY,
                    A.STATEID,
                    A.COUNTRYID,
                    isnull(A.POSTCODE, '') as POSTCODE,
                    @CHANGEAGENTID,
                    @CHANGEAGENTID,
                    @CURRENTDATE,
                    @CURRENTDATE
                from
                    dbo.CONSTITUENT C(nolock)
                left outer join 
                    dbo.EMAILADDRESS E(nolock) on E.CONSTITUENTID = C.ID and E.ISPRIMARY = 1
                left outer join 
                    dbo.PHONE P(nolock) on P.CONSTITUENTID = C.ID and P.ISPRIMARY = 1
                left outer join 
                    dbo.ADDRESS A(nolock) on A.CONSTITUENTID = C.ID and A.ISPRIMARY = 1
                where
                    C.ID= @CONSTITUENTID;

            end
        end
    end
end try

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

return 0;