USP_FAFGROUP_CALCULATE_SOCIALMEDIAPOSTCOUNT

Parameters

Parameter Parameter Type Mode Description
@NUMBERPROCESSED int INOUT
@CHANGEAGENTID uniqueidentifier IN
@CURRENTDATE datetime IN

Definition

Copy


create procedure dbo.USP_FAFGROUP_CALCULATE_SOCIALMEDIAPOSTCOUNT
(
        @NUMBERPROCESSED integer = 0 output,
        @CHANGEAGENTID uniqueidentifier = null,
        @CURRENTDATE datetime = null
)
as
begin
set nocount on;

if @CHANGEAGENTID is null
  exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

if @CURRENTDATE is null
  set @CURRENTDATE = GETDATE();

begin try

merge into dbo.FAFGROUPSUMMARYINFORMATION_CATEGORIZED as Target
    using
(    
    select 
    AllMembers.[GROUPID], 
    AllMembers.[EVENTID], 
    COUNT_SOCIALMEDIAPOSTS = count (*)
    from dbo.[FAFEVENTSOCIALNETWORKPOST] SN (nolock)
    inner join dbo.[REGISTRANT] R (nolock) on SN.[REGISTRANTID] = R.[ID]
    inner join 
    (    
        select GROUPID = G.[PARENTID], G.[TEAMID], TF.[CONSTITUENTID], G.[EVENTID] 
        from dbo.[UFN_FAFGROUP_GETALLGROUPS]() G
        inner join dbo.[TEAMFUNDRAISINGTEAMMEMBER] TFTM (nolock) on TFTM.[TEAMFUNDRAISINGTEAMID] = G.[TeamID]
        inner join dbo.[TEAMFUNDRAISER] TF (nolock) on TF.[ID] = TFTM.[TEAMFUNDRAISERID]
        group by G.[PARENTID], G.[TEAMID], G.[EVENTID], TF.[CONSTITUENTID]
    ) AllMembers
    on R.[CONSTITUENTID] = AllMembers.[CONSTITUENTID] and R.[EVENTID] = AllMembers.[EVENTID]
    group by AllMembers.[GROUPID], AllMembers.[EVENTID]
) as source on Target.ID = source.GROUPID and Target.EVENTID = source.EventID   

when matched and (source.COUNT_SOCIALMEDIAPOSTS <> Target.COUNT_SOCIALMEDIAPOSTS) then
    update set
        COUNT_SOCIALMEDIAPOSTS = source.COUNT_SOCIALMEDIAPOSTS,
        CHANGEDBYID = @CHANGEAGENTID,
        DATECHANGED   = @CURRENTDATE        
when not matched then
    insert(
        ID, 
        EVENTID, 
        COUNT_SOCIALMEDIAPOSTS,
        ADDEDBYID, 
        CHANGEDBYID, 
        DATEADDED, 
        DATECHANGED
    )
    values(
        source.GROUPID, 
        source.EVENTID, 
        COUNT_SOCIALMEDIAPOSTS,
        @CHANGEAGENTID
        @CHANGEAGENTID
        @CURRENTDATE
        @CURRENTDATE
    );    

  select @NUMBERPROCESSED=COUNT(*) from dbo.FAFGROUPSUMMARYINFORMATION_CATEGORIZED (nolock)
    where DATECHANGED = @CURRENTDATE 

end try
begin catch
     exec dbo.USP_RAISE_ERROR;
end catch

end