UFN_FAFADDRESSBOOK_DONORS_LIST
Get the List of donors contacts from FAF address book
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@EVENTID | uniqueidentifier | IN | |
@CLIENTUSERID | int | IN |
Definition
Copy
CREATE function [dbo].[UFN_FAFADDRESSBOOK_DONORS_LIST]
(
@EVENTID as uniqueidentifier
,@CLIENTUSERID as int
)
returns table
as
return
with
-- All current event donors
[CURRENTEVENTDONORS]
as
(
select
CONSTITUENTID
,DONORID
,[DATE]
,case when [APPLIEDAMOUNT]> 0 then [APPLIEDAMOUNT] else [ORIGINALAMOUNT] end as [AMOUNT]
from [dbo].[UFN_EVENT_DONORS](@EVENTID)
)
-- All previous event donors
,[PREVIOUSEVENTDONORS]
as
(
select
CONSTITUENTID
,DONORID
,[DATE]
,case when [APPLIEDAMOUNT]> 0 then [APPLIEDAMOUNT] else [ORIGINALAMOUNT] end as [AMOUNT]
from [dbo].[UFN_EVENT_DONORS]([dbo].[UFN_GETPREVIOUSEVENTID](@EVENTID))
)
-- All groups associated with this address book owner
-- regardless which event
,[FAFGROUPS]
as
(
select
TEAMCONSTITUENTID as [GROUPCONSTITUENTID]
,TEAMEXTENSION.EVENTID
from [dbo].[TEAMEXTENSION] (nolock)
inner join dbo.TEAMFUNDRAISINGTEAM (nolock)
on TEAMFUNDRAISINGTEAM.ID = [TEAMEXTENSION].TEAMFUNDRAISINGTEAMID
inner join TEAMFUNDRAISINGTEAMMEMBER (nolock)
on TEAMFUNDRAISINGTEAMMEMBER.TEAMFUNDRAISINGTEAMID = TEAMFUNDRAISINGTEAM.ID
inner join TEAMFUNDRAISER (nolock)
on TEAMFUNDRAISER.ID = TEAMFUNDRAISINGTEAMMEMBER.TEAMFUNDRAISERID
where TEAMFUNDRAISER.CONSTITUENTID = dbo.UFN_CONSTITUENT_GET_BY_CLIENTUSERID(@CLIENTUSERID)
)
-- Current event groups (companies, team or household)
,[CURRENTEVENTGROUPS]
as
(
select FAFGROUPS.*
from FAFGROUPS
where FAFGROUPS.EVENTID = @EVENTID
)
-- Previous event groups (companies, team or household)
,[PREVIOUSEVENTGROUPS]
as
(
select FAFGROUPS.*
from FAFGROUPS
where FAFGROUPS.EVENTID = [dbo].[UFN_GETPREVIOUSEVENTID](@EVENTID)
)
-- Current event donors
,[CURRENTDONORS]
as
(
-- Donors who donated the group of this captain who is the address book owner
select
FAFDONORS.AMOUNT
,FAFDONORS.DONORID
,FAFDONORS.[DATE]
from [CURRENTEVENTDONORS] as FAFDONORS
inner join [CURRENTEVENTGROUPS]
on [CURRENTEVENTGROUPS].GROUPCONSTITUENTID = FAFDONORS.CONSTITUENTID
union all
-- Donors who donated to this address book owner
select
FAFDONORS.AMOUNT
,FAFDONORS.DONORID
,FAFDONORS.[DATE]
from [CURRENTEVENTDONORS] as FAFDONORS
where CONSTITUENTID = dbo.UFN_CONSTITUENT_GET_BY_CLIENTUSERID(@CLIENTUSERID)
)
-- Previous event donors
,[PREVIOUSDONORS]
as
(
-- Donors who donated the group of this captain who is the address book owner
select
FAFDONORS.AMOUNT
,FAFDONORS.DONORID
,FAFDONORS.[DATE]
from [PREVIOUSEVENTDONORS] as FAFDONORS
inner join [PREVIOUSEVENTGROUPS]
on [PREVIOUSEVENTGROUPS].[GROUPCONSTITUENTID] = FAFDONORS.CONSTITUENTID
union all
-- Donors who donated to this address book owner
select
FAFDONORS.AMOUNT
,FAFDONORS.DONORID
,FAFDONORS.[DATE]
from [PREVIOUSEVENTDONORS] as FAFDONORS
where CONSTITUENTID = dbo.UFN_CONSTITUENT_GET_BY_CLIENTUSERID(@CLIENTUSERID)
)
-- Address book contacts
,[FAFAddressBook]
as
(
select
[ID] AS [CONTACTID]
,[CLIENTUSERSID]
,[FIRSTNAME]
,[LASTNAME]
,[CONSTITUENTID]
from [dbo].[ADDRESSBOOKFAF] (nolock)
where [CLIENTUSERSID] in (select CLIENTUSERID from dbo.UFN_CLIENTUSERS_GETIDLISTBYCURRENTCLIENTUSERID(@CLIENTUSERID))
)
,[ADDRESSBOOKDONORS]
as
(
select
dbo.UFN_CONSTITUENT_GET_BY_CLIENTUSERID(@CLIENTUSERID) AS [ABCID]
,A.CONTACTID
,A.FIRSTNAME
,A.LASTNAME
,A.CONSTITUENTID
,case
when CD.DONORID IS NOT NULL THEN 'A'
when PD.DONORID IS NOT NULL THEN 'P'
end as [STATUS]
,case
when CD.DONORID IS NOT NULL THEN CD.DATE
when PD.DONORID IS NOT NULL THEN PD.DATE
end as DATEADDED
, isnull(CD.AMOUNT,0) as CURRENTDONATIONAMOUNT
, isnull(PD.AMOUNT,0) as PREVIOUSDONATIONAMOUNT
,(select APPEALID from [EVENT] where ID=@EVENTID) as APPEALID
from [FAFAddressBook] A (nolock)
left join CURRENTDONORS CD
on A.CONSTITUENTID = CD.DONORID
left join [PREVIOUSDONORS] PD
on A.CONSTITUENTID = PD.DONORID
)
select * from [ADDRESSBOOKDONORS] where [STATUS] is not null;