USP_FAFGROUP_CALCULATE_GROUPSANDMEMBERS
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@NUMBERPROCESSED | int | INOUT | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CURRENTDATE | datetime | IN |
Definition
Copy
CREATE procedure dbo.USP_FAFGROUP_CALCULATE_GROUPSANDMEMBERS
(
@NUMBERPROCESSED integer = 0 output,
@CHANGEAGENTID uniqueidentifier = null,
@CURRENTDATE datetime = null
)
as
begin
set nocount on;
--declare @CURRENTDATE datetime;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
if @CURRENTDATE is null
set @CURRENTDATE = GETDATE();
begin try
declare @COUNTS table (
GROUPID uniqueidentifier,
EVENTID uniqueidentifier,
PARTICIPANTS int,
CHILDGROUPSCNT int,
TEAMCONSTITUENTID uniqueidentifier,
TYPECODE tinyint
);
insert into @COUNTS (
GROUPID,
EVENTID,
PARTICIPANTS,
CHILDGROUPSCNT,
TEAMCONSTITUENTID,
TYPECODE
)
select
M.GROUPID, M.EventID, M.PARTICIPANTS, M.CHILDGROUPSCNT, TX.TEAMCONSTITUENTID, TX.TYPECODE
from
dbo.UFN_FAFGROUP_GETGROUPANDMEMBERCOUNT() M
join
dbo.TEAMEXTENSION TX (nolock) on TX.TEAMFUNDRAISINGTEAMID = M.GROUPID;
merge into dbo.FAFGROUPSUMMARYINFORMATION as Target
using
(
select GROUPID, EVENTID, PARTICIPANTS, CHILDGROUPSCNT, TEAMCONSTITUENTID, TYPECODE from @COUNTS
) as source on Target.ID = source.GROUPID and Target.EVENTID = source.EventID
when matched and (source.PARTICIPANTS <> Target.TOTALPARTICIPANTS or source.CHILDGROUPSCNT <> Target.TOTALGROUPS) then
update set
TOTALPARTICIPANTS = source.PARTICIPANTS,
TOTALGROUPS = source.CHILDGROUPSCNT,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
when not matched then
insert(ID, GROUPTYPECODE, EVENTID, GROUPCONSTITUENTID, TOTALPARTICIPANTS, TOTALGROUPS, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(source.GROUPID, source.TYPECODE, source.EventID, source.TEAMCONSTITUENTID, source.PARTICIPANTS, source.CHILDGROUPSCNT ,@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
select @NUMBERPROCESSED=COUNT(*) from dbo.FAFGROUPSUMMARYINFORMATION (nolock)
where DATECHANGED = @CURRENTDATE
end try
begin catch
exec dbo.USP_RAISE_ERROR;
end catch
end