USP_DATALIST_FAFADDRESSBOOKCONTACTDETAILSSEARCH
Search FAF address book.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CLIENTUSERID | int | IN | Client Users ID |
@EVENTID | uniqueidentifier | IN | Event ID |
@SEARCHSTRING | varchar(50) | IN | Search String |
@IsUnittest | bit | IN | IsUnittest |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_FAFADDRESSBOOKCONTACTDETAILSSEARCH
(
@CLIENTUSERID int,
@EVENTID uniqueidentifier,
@SEARCHSTRING varchar(50) = '',
@IsUnittest bit = 0
)
as
set nocount on;
DECLARE @EMPTYGUID uniqueidentifier;
SET @EMPTYGUID = '00000000-0000-0000-0000-000000000000';
DECLARE @CONSTITUENTID uniqueidentifier
SET @CONSTITUENTID = dbo.UFN_CONSTITUENT_GET_BY_CLIENTUSERID(@CLIENTUSERID)
DECLARE @PREVIOUSEVENTID uniqueidentifier
select @PREVIOUSEVENTID = prioryeareventid from dbo.EVENTEXTENSION (NOLOCK) WHERE EVENTID = @EVENTID
IF ISNULL(@SEARCHSTRING,'') > ''
SET @SEARCHSTRING = '%'+@SEARCHSTRING+'%'
declare @TEAMID uniqueidentifier, @COMPANYID uniqueidentifier
DECLARE @MYADDRESSBOOK table (
GROUPNAME nvarchar(100),
CATEGORYSTATUS nvarchar(100),
ADDRESSBOOKID uniqueidentifier null,
NAME varchar(256) null,
CONSTITUENTID uniqueidentifier null,
EMAILADDRESS varchar(200) null,
REGISTRANTID uniqueidentifier null,
ALLOWOTHERPARTICIPANTSCONTACTME bit default(1)
)
Insert Into @MYADDRESSBOOK Exec USP_FAFADDRESSBOOK_GETALLGROUPMEMBERS @TYPE='Current', @EVENTID = @EVENTID, @CONSTITUENTID = @CONSTITUENTID
-- add previous members
IF @PREVIOUSEVENTID IS NOT NULL Begin
DECLARE @MYADDRESSBOOKPREVIOUS table (
GROUPNAME nvarchar(100),
CATEGORYSTATUS nvarchar(100),
ADDRESSBOOKID uniqueidentifier null,
NAME varchar(256) null,
CONSTITUENTID uniqueidentifier null,
EMAILADDRESS varchar(200) null,
REGISTRANTID uniqueidentifier null,
ALLOWOTHERPARTICIPANTSCONTACTME bit default(1)
)
Insert Into @MYADDRESSBOOKPREVIOUS Exec USP_FAFADDRESSBOOK_GETALLGROUPMEMBERS @TYPE='Previous', @EVENTID = @PREVIOUSEVENTID, @CONSTITUENTID = @CONSTITUENTID
INSERT INTO @MYADDRESSBOOK (GROUPNAME, NAME, CONSTITUENTID)
SELECT PA.GROUPNAME,PA.NAME,PA.CONSTITUENTID
FROM @MYADDRESSBOOKPREVIOUS PA
LEFT OUTER JOIN @MYADDRESSBOOK MA
ON MA.CONSTITUENTID = PA.CONSTITUENTID
WHERE MA.CONSTITUENTID IS NULL
End
--final modification of book
/*
INSERT INTO @MYADDRESSBOOK (GROUPNAME, ADDRESSBOOKID, NAME, CONSTITUENTID, EMAILADDRESS)
SELECT
(CASE ISNULL(D.STATUS,'S')
WHEN 'A' THEN 'Donors - current'
WHEN 'P' THEN 'Donors - previous'
END), D.CONTACTID, ltrim(rtrim(replace(isnull(A.FIRSTNAME+' ', '') + isnull(A.LASTNAME, ''), ' ', ' '))), D.CONSTITUENTID, A.EMAILADDRESS
FROM dbo.UFN_FAFADDRESSBOOK_DONORS_LIST(@EVENTID, @CLIENTUSERID) D
INNER JOIN dbo.ADDRESSBOOKFAF A (NOLOCK) ON A.ID = D.CONTACTID
*/
INSERT INTO @MYADDRESSBOOK (GROUPNAME, ADDRESSBOOKID, NAME, CONSTITUENTID, EMAILADDRESS)
select 'Donors - current', ABF.ID, ltrim(rtrim(replace(isnull(ABF.FIRSTNAME+' ', '') + isnull(ABF.LASTNAME, ''), ' ', ' '))), ABF.CONSTITUENTID, ABF.EMAILADDRESS
from REVENUERECOGNITION RR
inner join FINANCIALTRANSACTIONLINEITEM FTLI on FTLI.ID = RR.REVENUESPLITID
INNER JOIN REVENUESPLIT_EXT RS_EXT on FTLI.ID = RS_EXT.ID
inner join FINANCIALTRANSACTION FT on FT.ID = FTLI.FINANCIALTRANSACTIONID
inner join REVENUE_EXT R_EXT on R_EXT.ID = FT.ID
inner join EVENT E on R_EXT.APPEALID = E.APPEALID
inner join ADDRESSBOOKFAF ABF on ABF.CONSTITUENTID = FT.CONSTITUENTID and ABF.CLIENTUSERSID in (select CLIENTUSERID from dbo.UFN_CLIENTUSERS_GETIDLISTBYCONSTITUENTID(@CONSTITUENTID))
where
RR.CONSTITUENTID in
(
select @CONSTITUENTID
union
select TE.TEAMCONSTITUENTID from TEAMFUNDRAISINGTEAMCAPTAIN TFTC
inner join TEAMFUNDRAISINGTEAM TFT on TFTC.TEAMFUNDRAISINGTEAMID = TFT.ID
inner join TEAMEXTENSION TE on TFT.ID = TE.TEAMFUNDRAISINGTEAMID
where TE.EVENTID = @EVENTID
and TFTC.CONSTITUENTID = @CONSTITUENTID
)
and E.ID = @EVENTID
and not (FT.TYPECODE = 0 and RS_EXT.APPLICATIONCODE = 1)
if @PREVIOUSEVENTID is not null
begin
INSERT INTO @MYADDRESSBOOK (GROUPNAME, ADDRESSBOOKID, NAME, CONSTITUENTID, EMAILADDRESS)
select 'Donors - previous', ABF.ID, ltrim(rtrim(replace(isnull(ABF.FIRSTNAME+' ', '') + isnull(ABF.LASTNAME, ''), ' ', ' '))), ABF.CONSTITUENTID, ABF.EMAILADDRESS
from REVENUERECOGNITION RR
inner join FINANCIALTRANSACTIONLINEITEM FTLI on FTLI.ID = RR.REVENUESPLITID
INNER JOIN REVENUESPLIT_EXT RS_EXT on FTLI.ID = RS_EXT.ID
inner join FINANCIALTRANSACTION FT on FT.ID = FTLI.FINANCIALTRANSACTIONID
inner join REVENUE_EXT R_EXT on R_EXT.ID = FT.ID
inner join EVENT E on R_EXT.APPEALID = E.APPEALID
inner join ADDRESSBOOKFAF ABF on ABF.CONSTITUENTID = FT.CONSTITUENTID and ABF.CLIENTUSERSID in (select CLIENTUSERID from dbo.UFN_CLIENTUSERS_GETIDLISTBYCONSTITUENTID(@CONSTITUENTID))
where
RR.CONSTITUENTID in
(
select @CONSTITUENTID
union
select TE.TEAMCONSTITUENTID from TEAMFUNDRAISINGTEAMCAPTAIN TFTC
inner join TEAMFUNDRAISINGTEAM TFT on TFTC.TEAMFUNDRAISINGTEAMID = TFT.ID
inner join TEAMEXTENSION TE on TFT.ID = TE.TEAMFUNDRAISINGTEAMID
where TE.EVENTID = @PREVIOUSEVENTID
and TFTC.CONSTITUENTID = @CONSTITUENTID
)
and E.ID = @PREVIOUSEVENTID
and not (FT.TYPECODE = 0 and RS_EXT.APPLICATIONCODE = 1)
end
INSERT INTO @MYADDRESSBOOK (GROUPNAME, ADDRESSBOOKID, NAME, CONSTITUENTID, EMAILADDRESS)
select 'Contacts', ID, ltrim(rtrim(replace(isnull(FIRSTNAME+' ', '') + isnull(MIDDLENAME+' ', '') + isnull(LASTNAME, ''), ' ', ' '))) as KEYNAME,
CONSTITUENTID, EMAILADDRESS
FROM dbo.ADDRESSBOOKFAF WITH (NOLOCK)
where CLIENTUSERSID in (select CLIENTUSERID from dbo.UFN_CLIENTUSERS_GETIDLISTBYCONSTITUENTID(@CONSTITUENTID) )
AND ISNULL(CONSTITUENTID,@EMPTYGUID) NOT IN (SELECT CONSTITUENTID FROM @MYADDRESSBOOK)
-- AND ISNULL(CONSTITUENTID,@EMPTYGUID) NOT IN (SELECT CONSTITUENTID FROM dbo.REGISTRANT (NOLOCK) WHERE EVENTID = @EVENTID)
AND ISNULL(CONSTITUENTID,@EMPTYGUID) NOT IN (select ID AS CONSTITUENTID from dbo.UFN_FAF_COMPANYLEADERLIST(@PREVIOUSEVENTID))
UPDATE MA
SET EMAILADDRESS = E.EMAILADDRESS
FROM @MYADDRESSBOOK MA
INNER JOIN dbo.EMAILADDRESS E WITH (NOLOCK)
ON MA.CONSTITUENTID = E.CONSTITUENTID
AND E.ISPRIMARY = 1
WHERE MA.GROUPNAME <> 'Contacts'
UPDATE MA
SET EMAILADDRESS = (CASE WHEN ISNULL(AB.EMAILADDRESS,'') > '' THEN AB.EMAILADDRESS ELSE MA.EMAILADDRESS END),
ADDRESSBOOKID = AB.ID
FROM @MYADDRESSBOOK MA
INNER JOIN dbo.ADDRESSBOOKFAF AB WITH (NOLOCK)
ON MA.CONSTITUENTID = AB.CONSTITUENTID
where AB.CLIENTUSERSID in (select CLIENTUSERID from dbo.UFN_CLIENTUSERS_GETIDLISTBYCONSTITUENTID(@CONSTITUENTID) )
UPDATE MA
SET REGISTRANTID = R.ID, ALLOWOTHERPARTICIPANTSCONTACTME = RE.ALLOWOTHERPARTICIPANTSCONTACTME
FROM @MYADDRESSBOOK MA
INNER JOIN dbo.REGISTRANT R WITH (NOLOCK)
ON R.CONSTITUENTID = MA.CONSTITUENTID
INNER JOIN dbo.REGISTRANTEXTENSION RE WITH (NOLOCK)
ON R.ID = RE.REGISTRANTID
AND R.EVENTID = @EVENTID
WHERE MA.CONSTITUENTID IS NOT NULL
UPDATE MA
SET ADDRESSBOOKID = NULL
FROM @MYADDRESSBOOK MA
WHERE ISNULL(MA.CONSTITUENTID, @EMPTYGUID) = @CONSTITUENTID
if @IsUnittest = 1
Set RowCount 1
IF ISNULL(@SEARCHSTRING,'') > ''
BEGIN
SELECT
A.GROUPNAME,
CASE
WHEN CATEGORYSTATUS IS NULL AND ADDRESSBOOKID IS NOT NULL THEN LOWER(GROUPNAME)
WHEN CATEGORYSTATUS IS NOT NULL AND ADDRESSBOOKID IS NOT NULL THEN LOWER(CATEGORYSTATUS)
END AS CATEGORYSTATUS,
A.ADDRESSBOOKID,
A.NAME,
A.CONSTITUENTID,
A.EMAILADDRESS,
A.REGISTRANTID,
AD.ID,AD.FIRSTNAME,AD.LASTNAME,
AD.DONDATE, AD.REGDATE, AD.DONORS, AD.DONATIONAMOUNT,
AD.GOAL, AD.REGISTRANTRAISED, AD.NUMOFSENTMESSAGES,
AD.ISTEAMMEMBER, AD.ISDONOR, AD.ISPROSPECT,
AD.DONORSTATUS, AD.TEAMSTATUS,
AD.MIDDLENAME,AD.PREFERREDCOMMUNICATION,AD.SALUTATION,AD.ADDRESSBLOCK,
AD.CITY,AD.STATEID,AD.POSTCODE,AD.COUNTRYID,AD.CELLPHONE,AD.TEXTMESSAGESEND,
AD.HOMEPHONE,AD.BUSINESSPHONE,AD.BUSINESSADDRESS,AD.SECONDARYEMAILADDRESS,AD.SECONDARYCITY,
AD.SECONDARYSTATEID,AD.SECONDARYPOSTCODE,AD.SECONDARYCOUNTRYID,
AD.ISTEAMCAPTAIN, AD.FAFIMAGEID,
A.ALLOWOTHERPARTICIPANTSCONTACTME
FROM @MYADDRESSBOOK A
Left Join dbo.UFN_FAFADDRESSBOOK_CONTACTDETAILS(@EVENTID, @CLIENTUSERID) AD
On A.ADDRESSBOOKID = AD.ID
WHERE A.NAME LIKE @SEARCHSTRING
END
ELSE
BEGIN
SELECT
A.GROUPNAME,
CASE
WHEN CATEGORYSTATUS IS NULL AND ADDRESSBOOKID IS NOT NULL THEN LOWER(GROUPNAME)
WHEN CATEGORYSTATUS IS NOT NULL AND ADDRESSBOOKID IS NOT NULL THEN LOWER(CATEGORYSTATUS)
END AS CATEGORYSTATUS,
A.ADDRESSBOOKID,
A.NAME,
A.CONSTITUENTID,
A.EMAILADDRESS,
A.REGISTRANTID,
AD.ID, AD.FIRSTNAME,AD.LASTNAME,
AD.DONDATE, AD.REGDATE, AD.DONORS, AD.DONATIONAMOUNT,
AD.GOAL, AD.REGISTRANTRAISED, AD.NUMOFSENTMESSAGES,
AD.ISTEAMMEMBER, AD.ISDONOR, AD.ISPROSPECT,
AD.DONORSTATUS, AD.TEAMSTATUS,
AD.MIDDLENAME,AD.PREFERREDCOMMUNICATION,AD.SALUTATION,AD.ADDRESSBLOCK,
AD.CITY,AD.STATEID,AD.POSTCODE,AD.COUNTRYID,AD.CELLPHONE,AD.TEXTMESSAGESEND,
AD.HOMEPHONE,AD.BUSINESSPHONE,AD.BUSINESSADDRESS,AD.SECONDARYEMAILADDRESS,AD.SECONDARYCITY,
AD.SECONDARYSTATEID,AD.SECONDARYPOSTCODE,AD.SECONDARYCOUNTRYID,
AD.ISTEAMCAPTAIN, AD.FAFIMAGEID,
A.ALLOWOTHERPARTICIPANTSCONTACTME
FROM @MYADDRESSBOOK A
Left Join dbo.UFN_FAFADDRESSBOOK_CONTACTDETAILS(@EVENTID, @CLIENTUSERID) AD
On A.ADDRESSBOOKID = AD.ID
END