USP_DATALIST_ADDRESSBOOKFAFGROUP
This datalist returns groups as part of FAF address book.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | Constituent ID |
@EVENTID | uniqueidentifier | IN | Event ID |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_ADDRESSBOOKFAFGROUP
(
@CONSTITUENTID uniqueidentifier
,@EVENTID uniqueidentifier
)
as
set nocount on;
--need to get role
DECLARE
@IsIndependentHouseholdMember bit
,@IsIndependentHouseholdLeader bit
,@IsIndependentTeamMember bit
,@IsIndependentTeamLeader bit
,@IsCompanyHouseholdMember bit
,@IsCompanyHouseholdLeader bit
,@IsCompanyTeamHouseholdLeader bit
,@IsCompanyTeamHouseholdMember bit
,@IsCompanyTeamMember bit
,@IsCompanyTeamLeader bit
,@IsCompanyLeader bit
,@IsTeamHouseholdMember bit
,@IsTeamHouseholdLeader bit
EXEC dbo.USP_FAF_REGISTRANT_ROLE
@CONSTITUENTID = @CONSTITUENTID
,@EVENTID =@EVENTID
,@IsIndependentHouseholdMember = @IsIndependentHouseholdMember OUTPUT
,@IsIndependentHouseholdLeader = @IsIndependentHouseholdLeader OUTPUT
,@IsIndependentTeamMember = @IsIndependentTeamMember OUTPUT
,@IsIndependentTeamLeader = @IsIndependentTeamLeader OUTPUT
,@IsCompanyHouseholdMember = @IsCompanyHouseholdMember OUTPUT
,@IsCompanyHouseholdLeader = @IsCompanyHouseholdLeader OUTPUT
,@IsCompanyTeamHouseholdLeader = @IsCompanyTeamHouseholdLeader OUTPUT
,@IsCompanyTeamHouseholdMember = @IsCompanyTeamHouseholdMember OUTPUT
,@IsCompanyTeamMember = @IsCompanyTeamMember OUTPUT
,@IsCompanyTeamLeader = @IsCompanyTeamLeader OUTPUT
,@IsCompanyLeader = @IsCompanyLeader OUTPUT
,@IsTeamHouseholdMember = @IsTeamHouseholdMember OUTPUT
,@IsTeamHouseholdLeader = @IsTeamHouseholdLeader OUTPUT
DECLARE @output table (
GROUPNAME nvarchar(100)
,MEMBERCOUNT integer)
declare @TEAMID uniqueidentifier
--return based on the role
-- show 'My Household'
IF (@IsIndependentHouseholdLeader = 1
OR @IsIndependentHouseholdMember = 1
OR @IsCompanyHouseholdLeader = 1
OR @IsCompanyHouseholdMember = 1
OR @IsCompanyTeamHouseholdLeader = 1
OR @IsTeamHouseholdLeader = 1
OR @IsTeamHouseholdMember = 1
OR @IsCompanyTeamHouseholdMember = 1)
BEGIN
INSERT INTO @OUTPUT
SELECT
'My Household' AS [GROUPNAME],
COUNT(*) AS [MemberCount]
FROM dbo.UFN_FAF_HOUSEHOLDMEMBERLIST(@CONSTITUENTID, @EVENTID)
END
--show 'My Team'
IF (@IsIndependentTeamLeader = 1
OR @IsIndependentTeamMember = 1
OR @IsCompanyTeamMember = 1
OR @IsCompanyTeamLeader = 1)
BEGIN
INSERT INTO @OUTPUT
SELECT
'My Team',
COUNT(*)
FROM dbo.UFN_FAF_TEAMMEMBERLIST(@CONSTITUENTID, @EVENTID) -- team
END
--show 'My Team' for team household leaders and members
if (@IsTeamHouseholdLeader = 1
or @IsTeamHouseholdMember = 1
or @IsCompanyTeamHouseholdLeader = 1
or @IsCompanyTeamHouseholdMember = 1)
begin
--get teamID of the team that household belongs to
select @TEAMID = PARENTTEAMID
from dbo.UFN_FAF_GETTEAMINFO_BY_REGISTRANT(@CONSTITUENTID, @EVENTID) -- 1 = team
if @TEAMID IS NOT NULL
begin
insert into @OUTPUT
select
'My Team',
count(*)
from dbo.UFN_FAF_TEAMMEMBERLIST_BY_TEAMID(@TEAMID)
end
end
--Household leaders
IF (@IsCompanyHouseholdLeader = 1
OR @IsCompanyHouseholdMember = 1
)
BEGIN
INSERT INTO @OUTPUT
SELECT
'Household Leaders',
COUNT(*)
FROM dbo.UFN_FAF_HOUSEHOLDLEADERLIST(@CONSTITUENTID, @EVENTID)
END
--Team Leaders
IF(@IsCompanyTeamLeader = 1)
BEGIN
-- insert team leaders across the company
INSERT INTO @OUTPUT
SELECT
'Team Leaders',
COUNT(*)
FROM dbo.UFN_TEAMLEADERLIST(@CONSTITUENTID, @EVENTID)
select @TEAMID = TEAMID
from dbo.UFN_FAF_GETTEAMINFO_BY_REGISTRANT(@CONSTITUENTID, @EVENTID)
if @TEAMID is not null
begin
--insert households directly under the team
insert into @OUTPUT
select TFTHH.NAME, COUNT(*)
from dbo.TEAMFUNDRAISINGTEAM TFT
inner join dbo.TEAMFUNDRAISINGTEAM TFTHH
on TFT.ID = TFTHH.PARENTTEAMID
inner join dbo.TEAMEXTENSION TEHH
on TFTHH.ID = TEHH.TEAMFUNDRAISINGTEAMID
and TEHH.TYPECODE = 3 --household
inner join dbo.TEAMFUNDRAISINGTEAMMEMBER TFTM
on TFTHH.ID = TFTM.TEAMFUNDRAISINGTEAMID
where TFT.ID = @TEAMID
group by TFTHH.NAME
UNION
--also needs Household leaders under my team
select 'Household Leaders', COUNT(*)
from dbo.TEAMFUNDRAISINGTEAM TFTHH
inner join TEAMEXTENSION TE -- get those household
on TFTHH.ID = TE.TEAMFUNDRAISINGTEAMID
and TE.TYPECODE = 3
inner join dbo.TEAMFUNDRAISINGTEAMCAPTAIN TC --retrieve their leaders
on TFTHH.ID = TC.TEAMFUNDRAISINGTEAMID
inner join dbo.CONSTITUENT C
on TC.CONSTITUENTID = C.ID
where TFTHH.PARENTTEAMID = @TEAMID
end
END
--for company leaders only, 'My Individuals' and 'My Company', and 'Company Laders'
IF (@IsCompanyLeader = 1)
BEGIN
INSERT INTO @OUTPUT
SELECT
'My Individuals',
COUNT(*)
FROM dbo.UFN_FAF_COMPANYINDIVIDUALLIST(@CONSTITUENTID, @EVENTID)
WHERE (@IsCompanyTeamLeader = 1)
UNION
SELECT
'My Company',
COUNT(*)
FROM dbo.UFN_FAF_COMPANYMEMBERLIST(@CONSTITUENTID, @EVENTID)
UNION
SELECT
'Company Leaders',
COUNT(*)
FROM dbo.UFN_FAF_COMPANYLEADERLIST(@EVENTID)
--and insert teams and households under the company
select @TEAMID = TEAMID
from dbo.UFN_FAF_GETTEAMINFO_BY_REGISTRANT(@CONSTITUENTID, @EVENTID)
if @TEAMID is not null
begin
insert into @OUTPUT
select TFTHH.NAME, COUNT(*)
from dbo.TEAMFUNDRAISINGTEAM TFT
inner join dbo.TEAMFUNDRAISINGTEAM TFTHH
on TFT.ID = TFTHH.PARENTTEAMID
inner join dbo.TEAMEXTENSION TEHH
on TFTHH.ID = TEHH.TEAMFUNDRAISINGTEAMID
and TEHH.TYPECODE in (1, 3) --team and households
inner join dbo.TEAMFUNDRAISINGTEAMMEMBER TFTM
on TFTHH.ID = TFTM.TEAMFUNDRAISINGTEAMID
where TFT.ID = @TEAMID
group by TFTHH.NAME
UNION
--team leaders under the company
select 'Team Leaders', COUNT(*)
from dbo.TEAMFUNDRAISINGTEAM TFTHH
inner join TEAMEXTENSION TE -- get those team
on TFTHH.ID = TE.TEAMFUNDRAISINGTEAMID
and TE.TYPECODE = 1
inner join dbo.TEAMFUNDRAISINGTEAMCAPTAIN TC --retrieve their leaders
on TFTHH.ID = TC.TEAMFUNDRAISINGTEAMID
inner join dbo.CONSTITUENT C
on TC.CONSTITUENTID = C.ID
where TFTHH.PARENTTEAMID = @TEAMID
--Households, see above
UNION
--Company HH leaders
select 'Household Leaders', COUNT(*)
from dbo.TEAMFUNDRAISINGTEAM TFTHH
inner join TEAMEXTENSION TE -- get those household
on TFTHH.ID = TE.TEAMFUNDRAISINGTEAMID
and TE.TYPECODE = 3
inner join dbo.TEAMFUNDRAISINGTEAMCAPTAIN TC --retrieve their leaders
on TFTHH.ID = TC.TEAMFUNDRAISINGTEAMID
inner join dbo.CONSTITUENT C
on TC.CONSTITUENTID = C.ID
where TFTHH.PARENTTEAMID = @TEAMID
end
END
SELECT
GROUPNAME
,MEMBERCOUNT
FROM @OUTPUT