USP_REGISTRANTREGISTRATION_CHANGE
Allow registrants to change their registration including promoting, demoting role and/or change registrant individual.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@EVENTID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@TEAMFUNDRAISERID | uniqueidentifier | IN | |
@CONSTITUENTID | uniqueidentifier | IN | |
@CONSTITUENTIDORIGINAL | uniqueidentifier | IN | |
@GROUPID | uniqueidentifier | IN | |
@GROUPIDORIGINAL | uniqueidentifier | IN | |
@ROLECODE | tinyint | IN | |
@ROLECODEORIGINAL | tinyint | IN | |
@USERID | int | IN | |
@WAIVEBENEFITS | bit | IN |
Definition
Copy
CREATE procedure dbo.USP_REGISTRANTREGISTRATION_CHANGE
(
@ID uniqueidentifier, -- registrant ID
@EVENTID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@TEAMFUNDRAISERID uniqueidentifier,
@CONSTITUENTID uniqueidentifier, -- current constituentID
@CONSTITUENTIDORIGINAL uniqueidentifier, -- old registrant constituent ID
@GROUPID uniqueidentifier,
@GROUPIDORIGINAL uniqueidentifier,
@ROLECODE tinyint,
@ROLECODEORIGINAL tinyint,
@USERID int,
@WAIVEBENEFITS bit = 0
)
as
begin try
declare @TeamFundraisingTeamMemberID uniqueidentifier,
@IsGroupLeader bit = 0,
@captaincount int = 0,
@TeamFundraisingTeamCaptainID uniqueidentifier,
@fafroles nvarchar(50) = 'individual',
@GroupType tinyint = null
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
/* update constituent if change */
exec dbo.USP_REGISTRANTREGISTRATION_CHANGECONSTITUENT
@ID=@ID,
@EVENTID=@EVENTID,
@TEAMFUNDRAISERID=@TeamFundraiserID,
@CHANGEAGENTID=@CHANGEAGENTID,
@CONSTITUENTID=@CONSTITUENTID,
@CONSTITUENTIDORIGINAL=@CONSTITUENTIDORIGINAL,
@WAIVEBENEFITS=@WAIVEBENEFITS
-- user constituentid here b/c there is a chance constituentid is different than constituentidoriginal and the team captain record is already change with the new constituent
select @GroupType = TYPECODE from dbo.TEAMEXTENSION where TEAMFUNDRAISINGTEAMID = @GROUPID
select @captaincount = COUNT(*) from dbo.TEAMFUNDRAISINGTEAMCAPTAIN where TEAMFUNDRAISINGTEAMID = @GROUPIDORIGINAL
select @TeamFundraisingTeamCaptainID = ID from dbo.TEAMFUNDRAISINGTEAMCAPTAIN where CONSTITUENTID = @CONSTITUENTID
and TEAMFUNDRAISINGTEAMID = @GROUPIDORIGINAL
select @TeamFundraisingTeamMemberID = ID from dbo.TEAMFUNDRAISINGTEAMMEMBER where TEAMFUNDRAISERID = @TEAMFUNDRAISERID and TEAMFUNDRAISINGTEAMID = @GROUPIDORIGINAL
if @ROLECODE = 5 and @GroupType <> 2
begin
set @GROUPID = null
set @GroupType = 0
end
if ( (@GroupType = 1 and @ROLECODE not in (1,2) )
or (@GroupType = 2 and @ROLECODE not in (0,5) )
or (@GroupType = 3 and @ROLECODE not in (3,4) )
)
begin
if (@GROUPID <> @GROUPIDORIGINAL)
raiserror('MISMATCHROLEANDGROUPTTYPE', 13,1)
else
raiserror('REQUIREROLEANDGROUPTTYPE', 13,1)
end
if (( @GROUPID <> @GROUPIDORIGINAL and @ROLECODEORIGINAL in (0,1,3) )
or( @ROLECODEORIGINAL in (0,1,3) and @ROLECODE in (2,4,5) ) )
begin
if @captaincount < 2
raiserror('CANNOTMOVELEADER', 13,1)
end
if @ROLECODE = 3
set @fafroles = @fafroles + ',household leader'
else
if @ROLECODE < 2
set @fafroles = @fafroles + ',team leader'
--if @ROLECODE = 5 -- Individual
--set @GROUPID = null
if @GROUPID is not null
begin
if @GROUPIDORIGINAL is not null
begin
if @GROUPID <> @GROUPIDORIGINAL
begin
if @ROLECODEORIGINAL = @ROLECODE -- same role
begin
if (@ROLECODE in (0,1,3))
begin
update dbo.TEAMFUNDRAISINGTEAMCAPTAIN
set TEAMFUNDRAISINGTEAMID = @GROUPID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID = @TeamFundraisingTeamCaptainID
end
end
else -- different role : from member to leader or leader to member
begin
if ( @ROLECODE in (0,1,3) and @ROLECODEORIGINAL in (2,4,5) )
begin
insert into dbo.TEAMFUNDRAISINGTEAMCAPTAIN
(ID,TEAMFUNDRAISINGTEAMID,CONSTITUENTID,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
values
(newid(),@GROUPID,@CONSTITUENTID,@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE);
end
else -- from leader to member or leader type to another leader type
begin
if (@ROLECODE in (0,1,3) and @ROLECODEORIGINAL in (0,1,3))
update dbo.TEAMFUNDRAISINGTEAMCAPTAIN
set TEAMFUNDRAISINGTEAMID = @GROUPID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID = @TeamFundraisingTeamCaptainID
else
begin
if (@ROLECODE in (2,4,5) and @ROLECODEORIGINAL in (0,1,3))
exec dbo.USP_TEAMFUNDRAISINGTEAMCAPTAIN_DELETE
@ID=@TeamFundraisingTeamCaptainID,
@CHANGEAGENTID=@CHANGEAGENTID
end
end
end
update dbo.TEAMFUNDRAISINGTEAMMEMBER
set TEAMFUNDRAISINGTEAMID = @GROUPID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where TEAMFUNDRAISERID = @TEAMFUNDRAISERID
end -- end of groupid <> groupidoriginal
else /* promoting, demoting within same group */
if @ROLECODE <> @ROLECODEORIGINAL
begin
/* demoting within same group */
if ( @ROLECODEORIGINAL in (0,1,3) and @ROLECODE in (2,4,5) )
exec dbo.USP_TEAMFUNDRAISINGTEAMCAPTAIN_DELETE @ID=@TeamFundraisingTeamCaptainID , @CHANGEAGENTID=@CHANGEAGENTID
else
begin
/* promoting member to leader */
if ( @ROLECODEORIGINAL in (2,4,5) and @ROLECODE in (0,1,3) )
begin
insert into dbo.TEAMFUNDRAISINGTEAMCAPTAIN
(ID,TEAMFUNDRAISINGTEAMID,CONSTITUENTID,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
values
(newid(),@GROUPID,@CONSTITUENTID,@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE);
end
/*else -- change from head of household to team/company leader or team leader to company leader
if (@ROLECODE < 2 and @ROLECODEORIGINAL = 3) or (@ROLECODE = 0 and @ROLECODEORIGINAL = 1)
exec dbo.USP_ADDRESSBOOKFAF_BULKADD_CONTACTBYGROUP
@GROUPID=@GROUPID,
@REGISTRANTCONSTITUENTID=@CONSTITUENTID,
@ROLECODE=@ROLECODE
@CHANGEAGENTID=@CHANGEAGENTID
*/
end
end
end
else /* promoting from individual to other type of role*/
if @GROUPIDORIGINAL is null
begin
if ( @ROLECODE in (0,1,3) )
set @IsGroupLeader = 1
exec dbo.USP_FAF_TEAMMEMBER_ADD_EDIT
@ID=@TeamFundraisingTeamMemberID output,
@CHANGEAGENTID=@CHANGEAGENTID,
@EVENTID = @EVENTID,
@TEAMFUNDRAISINGTEAMID = @GROUPID,
@REGISTRANTID = @ID,
@ISTEAMCAPTAIN = @IsGroupLeader
end
end
else /* demoting registrant individual */
if @GROUPIDORIGINAL is not null
begin
-- delete member, delete leader from team if allow
if (@ROLECODEORIGINAL in (0,1,3))
exec dbo.USP_TEAMFUNDRAISINGTEAMCAPTAIN_DELETE @ID=@TeamFundraisingTeamCaptainID , @CHANGEAGENTID=@CHANGEAGENTID
exec dbo.USP_TEAMFUNDRAISINGTEAMMEMBER_DELETE @ID=@TeamFundraisingTeamMemberID, @CHANGEAGENTID = @CHANGEAGENTID
end
-- update registrant address book and members address book if applicable
exec dbo.USP_ADDRESSBOOKFAF_BULKADD_CONTACTBYGROUP
@GROUPID=@GROUPID,
@REGISTRANTCONSTITUENTID=@CONSTITUENTID,
@ROLECODE=@ROLECODE,
@CHANGEAGENTID=@CHANGEAGENTID
-- update notification only if promoting from member to leader and demote from leader to member
if ( ( @ROLECODE in (0,1,3) and @ROLECODEORIGINAL in (2,4,5) )
or ( @ROLECODEORIGINAL in (0,1,3) and @ROLECODE in (2,4,5) ) )
begin
delete from dbo.NotificationSubscription where UserID = @USERID
exec dbo.USP_FAFNOTIFICATION_SUBSCRIPTION @UserID=@USERID, @EVENTID=@EVENTID, @FAFRoles=@fafroles
end
end try
begin catch
exec USP_RAISE_ERROR
return 1;
end catch
return 0;