USP_TEAMFUNDRAISINGTEAM_MOVECHILDRENUPANDDELETE
Executes the "Team Fundraising Team: Move Children Up and Delete" record operation.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | Input parameter indicating the ID of the record being deleted. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the delete. |
Definition
Copy
CREATE procedure dbo.USP_TEAMFUNDRAISINGTEAM_MOVECHILDRENUPANDDELETE
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier
)
as begin
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
if exists(
select ID
from dbo.KPIINSTANCE
where lower(CONTEXTRECORDID) = lower(convert(nvarchar(36), @ID))
)
begin
raiserror('ERR_HASKPIINSTANCE', 13, 1);
return 0;
end
begin try
declare @contextCache varbinary(128);
--cache current context information
set @contextCache = CONTEXT_INFO();
--set CONTEXT_INFO to @CHANGEAGENTID
set CONTEXT_INFO @CHANGEAGENTID;
--Update all child teams to point to this team's parent
update
dbo.TEAMFUNDRAISINGTEAM
set
PARENTTEAMID = TEAMTODELETE.PARENTTEAMID
from
dbo.TEAMFUNDRAISINGTEAM TEAMTODELETE
inner join dbo.TEAMFUNDRAISINGTEAM on TEAMTODELETE.ID = TEAMFUNDRAISINGTEAM.PARENTTEAMID
where
TEAMTODELETE.ID = @ID;
--Delete all team members that are already members of this team's parent
delete from
dbo.TEAMFUNDRAISINGTEAMMEMBER
from
dbo.TEAMFUNDRAISINGTEAM
inner join dbo.TEAMFUNDRAISINGTEAMMEMBER on TEAMFUNDRAISINGTEAM.ID = TEAMFUNDRAISINGTEAMMEMBER.TEAMFUNDRAISINGTEAMID
inner join dbo.TEAMFUNDRAISER on TEAMFUNDRAISINGTEAMMEMBER.TEAMFUNDRAISERID = TEAMFUNDRAISER.ID
inner join dbo.TEAMFUNDRAISINGTEAMMEMBER PARENTTEAMMEMBER on TEAMFUNDRAISER.ID = PARENTTEAMMEMBER.TEAMFUNDRAISERID
where
TEAMFUNDRAISINGTEAM.ID = @ID
and
(
PARENTTEAMMEMBER.TEAMFUNDRAISINGTEAMID = TEAMFUNDRAISINGTEAM.PARENTTEAMID
or
(
PARENTTEAMMEMBER.TEAMFUNDRAISINGTEAMID is null
and
TEAMFUNDRAISINGTEAM.PARENTTEAMID is null
)
);
--Update all remaining members to be members of the parent team instead of this team
update
dbo.TEAMFUNDRAISINGTEAMMEMBER
set
TEAMFUNDRAISINGTEAMID = TEAMFUNDRAISINGTEAM.PARENTTEAMID
from
dbo.TEAMFUNDRAISINGTEAM
inner join dbo.TEAMFUNDRAISINGTEAMMEMBER on TEAMFUNDRAISINGTEAM.ID = TEAMFUNDRAISINGTEAMMEMBER.TEAMFUNDRAISINGTEAMID
where
TEAMFUNDRAISINGTEAM.ID = @ID;
--Delete the team's captains
delete from
dbo.TEAMFUNDRAISINGTEAMCAPTAIN
where
TEAMFUNDRAISINGTEAMCAPTAIN.TEAMFUNDRAISINGTEAMID = @ID;
--Delete the team
delete from
dbo.TEAMFUNDRAISINGTEAM
where
TEAMFUNDRAISINGTEAM.ID = @ID;
--reset CONTEXT_INFO to previous value
if not @contextCache is null
set CONTEXT_INFO @contextCache;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;
end