USP_FAFADDRESSBOOK_GETALLGROUPMEMBERS
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@TYPE | varchar(10) | IN | |
@EVENTID | uniqueidentifier | IN | |
@CONSTITUENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_FAFADDRESSBOOK_GETALLGROUPMEMBERS
(
@TYPE varchar(10),
@EVENTID uniqueidentifier,
@CONSTITUENTID uniqueidentifier
)
as
Begin
-- get role for current event
DECLARE @IsIndependentHouseholdMember bit
,@IsIndependentHouseholdLeader bit
,@IsIndependentTeamMember bit
,@IsIndependentTeamLeader bit
,@IsCompanyHouseholdMember bit
,@IsCompanyHouseholdLeader bit
,@IsCompanyTeamHouseholdLeader bit
,@IsCompanyTeamMember bit
,@IsCompanyTeamLeader bit
,@IsCompanyLeader bit
,@IsCompanyTeamHouseholdMember 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
,@IsCompanyTeamMember = @IsCompanyTeamMember OUTPUT
,@IsCompanyTeamLeader = @IsCompanyTeamLeader OUTPUT
,@IsCompanyLeader = @IsCompanyLeader OUTPUT
,@IsCompanyTeamHouseholdMember = @IsCompanyTeamHouseholdMember OUTPUT
,@IsTeamHouseholdMember = @IsTeamHouseholdMember OUTPUT
,@IsTeamHouseholdLeader = @IsTeamHouseholdLeader OUTPUT
-- get members
DECLARE @CompanyLeaderGroup varchar(40)
DECLARE @TeamMemberGroup varchar(40)
DECLARE @TeamLeaderGroup varchar(40)
DECLARE @DonorGroup varchar(40)
DECLARE @ContactGroup varchar(40)
DECLARE @IndividualGroup varchar(40)
DECLARE @CompanyLeadGroup varchar(40)
DECLARE @CompanyMemberGroup varchar(40)
DECLARE @HouseholdMemberGroup varchar(40)
DECLARE @HouseholdLeaderGroup varchar(40)
DECLARE @TypeText varchar(20)
If @Type = 'Current'
Begin
Set @CompanyLeaderGroup = 'Company leaders - current'
Set @TeamMemberGroup = 'Team members'
Set @TeamLeaderGroup = 'Team leaders'
Set @DonorGroup = 'Donors - current'
Set @ContactGroup = 'Contacts'
Set @IndividualGroup = 'Individuals - current'
Set @CompanyLeadGroup = 'Company leaders - current'
Set @CompanyMemberGroup = 'Company members - current'
Set @HouseholdMemberGroup = 'household members - current'
Set @HouseholdLeaderGroup = 'household leaders - current'
Set @TypeText = ' - current'
End
Else
Begin
Set @CompanyLeaderGroup = 'Company leaders - Previous'
Set @TeamMemberGroup = 'Team members - Previous'
Set @TeamLeaderGroup = 'Team leaders - Previous'
Set @DonorGroup = 'Donors - Previous'
Set @ContactGroup = 'Contacts'
Set @IndividualGroup = 'Individuals - Previous'
Set @CompanyLeadGroup = 'Company leaders - Previous'
Set @CompanyMemberGroup = 'Company members - Previous'
Set @HouseholdMemberGroup = 'household members - Previous'
Set @HouseholdLeaderGroup = 'household leaders - Previous'
Set @TypeText = ' - Previous'
End
DECLARE @MYADDRESSBOOK table (
GROUPNAME nvarchar(100),
CATEGORYSTATUS nvarchar(100),
ADDRESSBOOKID uniqueidentifier null,
NAME varchar(200) null,
CONSTITUENTID uniqueidentifier null,
EMAILADDRESS varchar(200) null,
REGISTRANTID uniqueidentifier null,
ALLOWOTHERPARTICIPANTSCONTACTME bit default(1)
)
Declare @TEAMID uniqueidentifier, @COMPANYID uniqueidentifier
-- add team members
IF (@IsIndependentTeamLeader = 1 OR @IsIndependentTeamMember = 1
OR @IsCompanyTeamMember = 1 OR @IsCompanyTeamLeader = 1)
BEGIN
INSERT INTO @MYADDRESSBOOK (GROUPNAME, NAME, CONSTITUENTID)
SELECT @TeamMemberGroup, Name, ID
FROM dbo.UFN_FAF_TEAMMEMBERLIST(@CONSTITUENTID, @EVENTID) -- 1=team
-- change household leader group name
Update MA Set GROUPNAME = @HouseholdLeaderGroup
from @MYADDRESSBOOK MA Inner Join dbo.UFN_REGISTRANT_GETFAFROLE(@EVENTID, null) r
On MA.CONSTITUENTID = r.CONSTITUENTID and r.RoleCode = 3
--don't get the team leaders group here for @IsCompanyTeamLeader, as it has special business logic,
--and is retrieved later (see --company Team Leaders) section
IF @IsCompanyTeamLeader = 0
BEGIN
INSERT INTO @MYADDRESSBOOK (GROUPNAME, NAME, CONSTITUENTID)
SELECT @TeamLeaderGroup, Name, ID
FROM dbo.UFN_INDEPENDENTTEAMLEADERLIST(@CONSTITUENTID, @EVENTID) -- 1 = team
END
END
--show 'My Team' for company team HH leader & team HH leader
If (@IsCompanyTeamHouseholdLeader = 1 OR @IsTeamHouseholdLeader = 1)
Begin
SELECT @TEAMID = PARENTTEAMID
FROM dbo.UFN_FAF_GETTEAMINFO_BY_REGISTRANT(@CONSTITUENTID, @EVENTID)
INSERT INTO @MYADDRESSBOOK (GROUPNAME, NAME, CONSTITUENTID)
SELECT
CASE
WHEN TFTC.ID IS NULL THEN @TeamMemberGroup
WHEN TFTC.ID IS NOT NULL THEN @TeamLeaderGroup
END,
Name,
TML.ID
FROM dbo.UFN_FAF_TEAMMEMBERLIST_BY_TEAMID(@TEAMID) TML
LEFT OUTER JOIN TEAMFUNDRAISINGTEAMCAPTAIN TFTC ON TML.TEAMID = TFTC.TEAMFUNDRAISINGTEAMID AND TFTC.CONSTITUENTID = TML.ID
End
--Household leaders
IF (@IsCompanyHouseholdLeader = 1 OR @IsCompanyHouseholdMember = 1 OR @IsCompanyTeamHouseholdLeader = 1
OR @IsCompanyTeamHouseholdMember = 1 OR @IsTeamHouseholdMember = 1 OR @IsTeamHouseholdLeader = 1
OR @IsIndependentHouseholdMember = 1 OR @IsIndependentHouseholdLeader = 1
)
BEGIN
INSERT INTO @MYADDRESSBOOK (GROUPNAME, NAME, CONSTITUENTID)
SELECT
@HouseholdLeaderGroup,
name,
ID
FROM dbo.UFN_FAF_HOUSEHOLDLEADERLIST(@CONSTITUENTID, @EVENTID)
END
--Household Members
IF (@IsCompanyHouseholdLeader = 1 OR @IsCompanyHouseholdMember = 1 OR @IsCompanyTeamHouseholdLeader = 1
OR @IsCompanyTeamHouseholdMember = 1 OR @IsTeamHouseholdMember = 1 OR @IsTeamHouseholdLeader = 1
OR @IsIndependentHouseholdMember = 1 OR @IsIndependentHouseholdLeader = 1
)
BEGIN
INSERT INTO @MYADDRESSBOOK (GROUPNAME, NAME, CONSTITUENTID)
SELECT @HouseholdMemberGroup, Name, ID
FROM dbo.UFN_FAF_HOUSEHOLDMEMBERLIST(@CONSTITUENTID, @EVENTID)
--WHERE ID <> @CONSTITUENTID
END
--company Team Leaders, need to add "team leaders across"+households under the team + HH leaders across
IF @IsCompanyTeamLeader = 1
BEGIN
-- insert team leaders across the company
/*
INSERT INTO @MYADDRESSBOOK (GROUPNAME, NAME, CONSTITUENTID)
SELECT
@TeamLeaderGroup,
name,
ID
FROM dbo.UFN_TEAMLEADERLIST(@CONSTITUENTID, @EVENTID)
*/
--where ID <> @CONSTITUENTID
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 @MYADDRESSBOOK (GROUPNAME, NAME, CONSTITUENTID)
select 'Household - ' + TFTC.NAME, FN.Name, FN.id
from dbo.TEAMFUNDRAISINGTEAM TFT
inner join dbo.TEAMFUNDRAISINGTEAM TFTC
on TFT.ID = TFTC.PARENTTEAMID
inner join dbo.TEAMEXTENSION TEHH
on TFTC.ID = TEHH.TEAMFUNDRAISINGTEAMID
and TEHH.TYPECODE =3 --households
cross apply dbo.UFN_FAF_HOUSEHOLDMEMBERLIST_BY_HOUSEHOLDID(TFTC.ID) FN
where TFT.ID = @TEAMID
--also needs Household leaders under my team
insert into @MYADDRESSBOOK (GROUPNAME, NAME, CONSTITUENTID)
select @HouseholdLeaderGroup, C.name, C.ID
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
print @CONSTITUENTID
INSERT INTO @MYADDRESSBOOK (GROUPNAME, NAME, CONSTITUENTID)
SELECT
@IndividualGroup, Name, ID
FROM dbo.UFN_FAF_COMPANYINDIVIDUALLIST(@CONSTITUENTID, @EVENTID)
-- add company co-leader
UNION
SELECT @CompanyLeaderGroup, C.Name As Name, C.ID As ID
From dbo.CONSTITUENT C
Inner Join dbo.TEAMFUNDRAISINGTEAMCAPTAIN TC
On C.ID = TC.CONSTITUENTID
Inner Join
(Select TM.NAME as COMPANYNAME, TM.ID as COMPANYID, TC.CONSTITUENTID
from dbo.TEAMEXTENSION TE
INNER JOIN dbo.TEAMFUNDRAISINGTEAM TM
ON TE.TEAMFUNDRAISINGTEAMID = TM.ID
INNER JOIN dbo.TEAMFUNDRAISINGTEAMCAPTAIN TC --retrieve team leaders
ON TE.TEAMFUNDRAISINGTEAMID = TC.TEAMFUNDRAISINGTEAMID
WHERE TE.EVENTID = @EVENTID
and TC.CONSTITUENTID = @CONSTITUENTID) TTCC
On TTCC.COMPANYID = TC.TEAMFUNDRAISINGTEAMID
UNION
-- team leaders, household leaders under this company
SELECT
groupname + @TypeText, Name, ID
FROM dbo.UFN_FAF_COMPANYTEAMLEADERLIST(@CONSTITUENTID, @EVENTID)
UNION
SELECT @CompanyMemberGroup, Name, ID
FROM dbo.UFN_FAF_COMPANYMEMBERLIST(@CONSTITUENTID, @EVENTID)
WHERE ID NOT IN (SELECT ID FROM DBO.UFN_FAF_COMPANYLEADERLIST(@EVENTID))
--and insert teams and households under the company
Select @COMPANYID = TEAMID from dbo.UFN_FAF_GETTEAMINFO_BY_REGISTRANT(@CONSTITUENTID, @EVENTID)
print @COMPANYID
if(@COMPANYID is not null)
begin
Insert into @MYADDRESSBOOK (GROUPNAME, CATEGORYSTATUS, NAME, CONSTITUENTID)
Select
GROUPNAME,
CASE
WHEN TFTC.ID IS NULL THEN @TeamMemberGroup
WHEN TFTC.ID IS NOT NULL THEN @TeamLeaderGroup
END as CATEGORYSTATUS,
NAME,
TML.ID from (
select 'Team - '+ TFTC.NAME as GROUPNAME, FN.Name, FN.id AS ID, TFTC.ID AS TEAMID
from dbo.TEAMFUNDRAISINGTEAM TFT
inner join dbo.TEAMFUNDRAISINGTEAM TFTC
on TFT.ID = TFTC.PARENTTEAMID
inner join dbo.TEAMEXTENSION TEHH
on TFTC.ID = TEHH.TEAMFUNDRAISINGTEAMID
and TEHH.TYPECODE =1 --team
cross apply dbo.UFN_FAF_TEAMMEMBERLIST_BY_TEAMID(TFTC.ID) FN
where TFT.ID = @COMPANYID
) TML
LEFT OUTER JOIN TEAMFUNDRAISINGTEAMCAPTAIN TFTC
ON TML.TEAMID = TFTC.TEAMFUNDRAISINGTEAMID
AND TFTC.CONSTITUENTID = TML.ID
Insert into @MYADDRESSBOOK (GROUPNAME, CATEGORYSTATUS, NAME, CONSTITUENTID)
SELECT
GROUPNAME,
CASE
WHEN TFTC.ID IS NULL THEN @HouseholdMemberGroup
WHEN TFTC.ID IS NOT NULL THEN @HouseholdLeaderGroup
END as CATEGORYSTATUS,
NAME,
TML.ID from (
select 'Household - ' + TFTC.NAME AS GROUPNAME, FN.Name, FN.id AS ID, TFTC.ID AS TEAMID
from dbo.TEAMFUNDRAISINGTEAM TFT
inner join dbo.TEAMFUNDRAISINGTEAM TFTC
on TFT.ID = TFTC.PARENTTEAMID
inner join dbo.TEAMEXTENSION TEHH
on TFTC.ID = TEHH.TEAMFUNDRAISINGTEAMID
and TEHH.TYPECODE =3 --households
cross apply dbo.UFN_FAF_HOUSEHOLDMEMBERLIST_BY_HOUSEHOLDID(TFTC.ID) FN
where TFT.ID = @COMPANYID
) TML
LEFT OUTER JOIN TEAMFUNDRAISINGTEAMCAPTAIN TFTC
ON TML.TEAMID = TFTC.TEAMFUNDRAISINGTEAMID
AND TFTC.CONSTITUENTID = TML.ID
end
END
-- update group name for previous event
if @TYPE='Previous'
begin
update @MYADDRESSBOOK set groupname = groupname + ' - Previous'
where groupname not like '%Previous'
end
-- return all data
Select ab.* from @MYADDRESSBOOK ab inner join Registrant r on r.constituentID = ab.constituentID
where r.EventId = @EVENTID
End