USP_DATALIST_FAFDONORRETENTION

Get donor retention information for participants

Parameters

Parameter Parameter Type Mode Description
@CLIENTUSERSID int IN Client Users ID
@EVENTID uniqueidentifier IN Event ID

Definition

Copy


create procedure dbo.USP_DATALIST_FAFDONORRETENTION
    (           
    @CLIENTUSERSID int,
        @EVENTID uniqueidentifier
    )
as
set nocount on;

DECLARE @CONSTITUENTID uniqueidentifier
DECLARE @CURRENTDONORS int
DECLARE @PREVIOUSDONORS int
DECLARE @PREVIOUSEVENT uniqueidentifier
DECLARE @TEAMID uniqueidentifier
DECLARE @PREVIOUSTEAMID uniqueidentifier
DECLARE @TEAMCONSTITUENTID uniqueidentifier
DECLARE @PREVIOUSTEAMCONSTITUENTID uniqueidentifier
DECLARE @CURRENTGENERALTEAMDONORS int
DECLARE @PREVIOUSGENERALTEAMDONORS int
DECLARE @ISTEAMLEADER bit
DECLARE @ISPREVIOUSTEAMLEADER bit

SET @CONSTITUENTID = dbo.UFN_CONSTITUENT_GET_BY_CLIENTUSERID(@CLIENTUSERSID);  

SELECT @PREVIOUSEVENT = PRIORYEAREVENTID from dbo.EVENTEXTENSION (NOLOCK) WHERE EVENTID = @EVENTID;  

IF @PREVIOUSEVENT IS NOT NULL  
BEGIN  
    SELECT @TEAMID = TEAMID from dbo.UFN_FAF_GETTEAMINFO_BY_REGISTRANT(@CONSTITUENTID, @EVENTID);  
    SELECT @TEAMCONSTITUENTID = TEAMCONSTITUENTID from TEAMEXTENSION (nolock) where TEAMFUNDRAISINGTEAMID = @TEAMID  
    IF EXISTS(SELECT 1 FROM dbo.TEAMFUNDRAISINGTEAMCAPTAIN WHERE CONSTITUENTID = @CONSTITUENTID AND TEAMFUNDRAISINGTEAMID = @TEAMID)  
        SET @ISTEAMLEADER = 1

    SELECT @PREVIOUSTEAMID = TEAMID from dbo.UFN_FAF_GETTEAMINFO_BY_REGISTRANT(@CONSTITUENTID, @PREVIOUSEVENT);  
    SELECT @PREVIOUSTEAMCONSTITUENTID = TEAMCONSTITUENTID from TEAMEXTENSION (nolock) where TEAMFUNDRAISINGTEAMID = @PREVIOUSTEAMID;  
    IF EXISTS(SELECT 1 FROM dbo.TEAMFUNDRAISINGTEAMCAPTAIN WHERE CONSTITUENTID = @CONSTITUENTID AND TEAMFUNDRAISINGTEAMID = @PREVIOUSTEAMID)  
        SET @ISPREVIOUSTEAMLEADER = 1  

    DECLARE @PREVDONORS as table([CONSTITUENTID]    uniqueidentifier)
    DECLARE @CURRDONORS as table([CONSTITUENTID]    uniqueidentifier)

    INSERT @PREVDONORS 
        select CONSTITUENTID from [dbo].[UFN_FAFEVENT_PARTICIPANTDONORS](@PREVIOUSEVENT,@CONSTITUENTID
        union 
        SELECT CONSTITUENTID FROM [dbo].[UFN_FAFEVENT_PARTICIPANTDONORS](@PREVIOUSEVENT,@PREVIOUSTEAMCONSTITUENTID)
        where @PREVIOUSTEAMCONSTITUENTID IS NOT NULL AND ISNULL(@ISPREVIOUSTEAMLEADER,0) = 1

    INSERT @CURRDONORS 
        select CONSTITUENTID from [dbo].[UFN_FAFEVENT_PARTICIPANTDONORS](@EVENTID,@CONSTITUENTID
        union 
        SELECT CONSTITUENTID FROM [dbo].[UFN_FAFEVENT_PARTICIPANTDONORS](@EVENTID,@TEAMCONSTITUENTID)
        where @TEAMCONSTITUENTID IS NOT NULL AND ISNULL(@ISTEAMLEADER,0) = 1

    select @PREVIOUSDONORS = COUNT(*
    from @PREVDONORS  

    select @CURRENTDONORS = COUNT(*)  
    from @CURRDONORS
    inner join @PREVDONORS P on P.CONSTITUENTID = C.CONSTITUENTID        
END

select R.ID,  
     RE.DONORRETENTIONGOAL,  
     ISNULL(@CURRENTDONORS,0) AS CURRENTDONORS,  
     ISNULL(@PREVIOUSDONORS,0) AS PREVIOUSDONORS  
from dbo.REGISTRANT R (NOLOCK)  
INNER JOIN dbo.REGISTRANTEXTENSION RE (NOLOCK)  
ON R.ID = RE.REGISTRANTID  
where R.CONSTITUENTID = @CONSTITUENTID  
AND R.EVENTID = @EVENTID