USP_FAFADDRESSBOOK_DONOR_ADD
Adds a donor to an FAF participant's address book.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@RECIPIENTID | uniqueidentifier | IN | |
@DONORCONSTITUENTID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_FAFADDRESSBOOK_DONOR_ADD (
@RECIPIENTID uniqueidentifier,
@DONORCONSTITUENTID 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 @FIRSTNAME nvarchar(255);
declare @LASTNAME nvarchar(255);
declare @MIDDLENAME nvarchar(100);
declare @TITLECODEID uniqueidentifier;
declare @EMAILADDRESS dbo.UDT_EMAILADDRESS;
declare @HOMEPHONE nvarchar(25);
declare @ADDRESSBLOCK nvarchar(300);
declare @CITY nvarchar(100);
declare @STATEID uniqueidentifier;
declare @COUNTRYID uniqueidentifier;
declare @POSTCODE nvarchar(24);
select @FIRSTNAME = C.FIRSTNAME,
@LASTNAME = C.KEYNAME,
@MIDDLENAME = C.MIDDLENAME,
@TITLECODEID = C.TITLECODEID,
@EMAILADDRESS = isnull(E.EMAILADDRESS, ''),
@HOMEPHONE = isnull(P.NUMBER, ''),
@ADDRESSBLOCK = isnull(A.ADDRESSBLOCK, ''),
@CITY = isnull(A.CITY, ''),
@STATEID = A.STATEID,
@COUNTRYID = A.COUNTRYID,
@POSTCODE = isnull(A.POSTCODE, '')
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 = @DONORCONSTITUENTID;
begin try
create table #TEMP_TEAMPEOPLE
(
CLIENTUSERSID int,
FOUNDADDRESSBOOKID uniqueidentifier
);
insert into #TEMP_TEAMPEOPLE
(
CLIENTUSERSID,
FOUNDADDRESSBOOKID
)
select dbo.fnGetUserIDFromLinkedRecordID(C.SEQUENCEID, 0),
dbo.UFN_FAFADDRESSBOOK_CONSTITUENT_LOOKUP(dbo.fnGetUserIDFromLinkedRecordID(C.SEQUENCEID, 0), @DONORCONSTITUENTID)
from dbo.CONSTITUENT C(nolock)
inner join dbo.REGISTRANT R(nolock) on R.CONSTITUENTID = C.ID
where R.ID = @RECIPIENTID
-- all captains, includes company, household, and team
union
select dbo.fnGetUserIDFromLinkedRecordID(C.SEQUENCEID, 0),
dbo.UFN_FAFADDRESSBOOK_CONSTITUENT_LOOKUP(dbo.fnGetUserIDFromLinkedRecordID(C.SEQUENCEID, 0), @DONORCONSTITUENTID)
from dbo.CONSTITUENT C(nolock)
inner join TEAMFUNDRAISINGTEAMCAPTAIN TC(nolock) on C.ID = TC.CONSTITUENTID
where TC.TEAMFUNDRAISINGTEAMID = @RECIPIENTID
--update the donor's constituent id in people's address book
update
AB
set
CONSTITUENTID = @DONORCONSTITUENTID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
from
dbo.ADDRESSBOOKFAF AB
inner join
#TEMP_TEAMPEOPLE TP on TP.CLIENTUSERSID = AB.CLIENTUSERSID
and TP.FOUNDADDRESSBOOKID = AB.ID
and TP.CLIENTUSERSID not in
(
select TP.CLIENTUSERSID
from #TEMP_TEAMPEOPLE TP(nolock)
inner join ADDRESSBOOKFAF AB(nolock) on AB.CLIENTUSERSID = TP.CLIENTUSERSID
and AB.CONSTITUENTID = @DONORCONSTITUENTID
)
and TP.CLIENTUSERSID is not null
where AB.CONSTITUENTID is null;
insert into dbo.ADDRESSBOOKFAF
(
ID,
CLIENTUSERSID,
CONSTITUENTID,
FIRSTNAME,
LASTNAME,
MIDDLENAME,
TITLECODEID,
EMAILADDRESS,
HOMEPHONE,
ADDRESSBLOCK,
CITY,
STATEID,
COUNTRYID,
POSTCODE,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select newid(),
TP.CLIENTUSERSID,
@DONORCONSTITUENTID,
@FIRSTNAME,
@LASTNAME,
@MIDDLENAME,
@TITLECODEID,
@EMAILADDRESS,
@HOMEPHONE,
@ADDRESSBLOCK,
@CITY,
@STATEID,
@COUNTRYID,
@POSTCODE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
#TEMP_TEAMPEOPLE TP(nolock)
where
TP.CLIENTUSERSID not in
(
select TP.CLIENTUSERSID
from #TEMP_TEAMPEOPLE TP(nolock)
inner join ADDRESSBOOKFAF AB(nolock) on AB.CLIENTUSERSID = TP.CLIENTUSERSID
and AB.CONSTITUENTID = @DONORCONSTITUENTID
)
and TP.CLIENTUSERSID is not null;
drop table #TEMP_TEAMPEOPLE;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;