USP_DATALIST_INDIVIDUALMERGEDATA

Returns individual merge data by a given constituent or a registrant

Parameters

Parameter Parameter Type Mode Description
@EVENTID uniqueidentifier IN Event ID
@CONSTITUENTID uniqueidentifier IN Constituent ID
@REGISTRANTID uniqueidentifier IN Registrant ID
@PAGETYPE tinyint IN Pagetype
@PREVIOUSEVENTID uniqueidentifier IN Previousevent ID
@GROUPID uniqueidentifier IN Group ID

Definition

Copy


CREATE procedure dbo.USP_DATALIST_INDIVIDUALMERGEDATA
  (
      @EVENTID uniqueidentifier,
    @CONSTITUENTID uniqueidentifier = null,
    @REGISTRANTID uniqueidentifier = null,
    @PAGETYPE tinyint = 0,
    @PREVIOUSEVENTID uniqueidentifier = null,  -- used for faf default marketing messages,

    @GROUPID uniqueidentifier = null          -- need an adjustment when retrieving url for household, can't use registrantid

  )
  as
    set nocount on;

    if @REGISTRANTID is null 
        select @REGISTRANTID = ID from dbo.REGISTRANT (nolock) where CONSTITUENTID = @CONSTITUENTID

    if @CONSTITUENTID is null 
        select @CONSTITUENTID = CONSTITUENTID from dbo.REGISTRANT (nolock) where ID = @REGISTRANTID

    declare @IPTotalFundraisingAmount nvarchar(10)  

    select @IPTotalFundraisingAmount = dbo.UFN_REVENUE_GETPARTICIPANTRAISEDTOTAL(@REGISTRANTID, @EVENTID)  

    declare @url nvarchar(500),@IPPageUrlWithoutTracking nvarchar(500)
    IF @GROUPID = NULL  OR @PAGETYPE != 3 -- most cases this will be true  

        select   @url=dbo.UFN_VANITYURL_GETFAFPARTICIPANTURL(ID,EVENTID,@PAGETYPE)  
        from REGISTRANT   
        WHERE (@CONSTITUENTID is null or CONSTITUENTID=@CONSTITUENTID)  
        and (@REGISTRANTID is null or ID=@REGISTRANTID)  
        AND EVENTID=@EVENTID   
    ELSE  
      SET @url = ( SELECT   dbo.UFN_VANITYURL_GETFAFPARTICIPANTURL(@GROUPID,@EVENTID,@PAGETYPE) )    

    set @IPPageUrlWithoutTracking = @url 

    IF CHARINDEX( '?',  @url ) = 0   
    begin  
        declare @personalpageid int  
        select @personalpageid=VALUE from dbo.CMSSITESETTING  
        where CMSSITESETTING.ENUMID = 30 and CMSSITESETTING.CLIENTSITESID in (select CLIENTSITESID from dbo.EVENTEXTENSION where EVENTID = @EVENTID)   
        set @url=(case when RIGHT(@url,1)='/' then LEFT(@url,len(@url)-1) else @url end) + '?ch=1&frmfaf=1'  
    end  
    ELSE  
        set @url=(case when RIGHT(@url,1)='/' then LEFT(@url,len(@url)-1) else @url end) + '&ch=1&frmfaf=1'   

    declare @dashboardURL nvarchar(500)  
    select @dashboardURL = S2.VALUE + '?pid=' + S1.VALUE + '&tab=' + cast(@PAGETYPE as nvarchar(2))  
    from EVENTEXTENSION EX --on EX.EVENTID = R.EVENTID  

    left join CMSSITESETTING S1 on EX.CLIENTSITESID = S1.CLIENTSITESID and S1.ENUMID = 38  
    left join CMSSITESETTING S2 on EX.CLIENTSITESID = S2.CLIENTSITESID and S2.ENUMID = 10  
    where EX.EVENTID = @EVENTID  

    IF @PREVIOUSEVENTID IS NOT NULL  
    BEGIN  
    SET @EVENTID = @PREVIOUSEVENTID  
    SELECT @REGISTRANTID = ID from dbo.REGISTRANT WHERE CONSTITUENTID = @CONSTITUENTID and EVENTID = @EVENTID  
    END  

    declare @ManagerNotificationPageID int  
    select top 1 @ManagerNotificationPageID = VPC.PageID  
    from vwPageContent VPC  
    inner join dbo.SitePages SP on SP.ID = VPC.PageID  
    inner join dbo.EVENTEXTENSION EE ON EE.CLIENTSITESID = SP.ClientSitesID and EE.EVENTID = @EVENTID  
    LEFT OUTER JOIN  
    (select PAGEMODELITEM.OBJECTGUID  
    from dbo.PAGEMODELITEM   
    inner join dbo.PAGEMODEL on PAGEMODEL.ID = PAGEMODELITEM.PAGEMODELID  
    where PAGEMODEL.LOCKARTIFACTS = 1  
    ) PMI on PMI.OBJECTGUID = VPC.PageGuid   
    inner join dbo.APEXFORMCONTENT AFC ON AFC.ID = VPC.Guid  
    inner join dbo.APEXFORM AF ON AF.ID = AFC.FORMID AND AF.FORMTYPEID = '89D3C4CC-4D01-4E8B-B82E-04AD966EEE09'    
    WHERE VPC.IsTemplatePage = 0  
    and VPC.ContentTypesID = 121  
    and (PMI.OBJECTGUID is null)  

    select   
    IPID = C.lookupid   
    ,IPName = C.NAME  
    ,IPFirstName = C.FIRSTNAME  
    ,IPLastName = C.KEYNAME  
    ,IPPageUrl = @url  
    ,IPManageNotificationUrl = cmss3.VALUE + 'page.aspx?pid=' + CAST(@ManagerNotificationPageID AS NVARCHAR(50)) + '&frmfaf=1' -- to identify that the link is in a faf email  

    ,IPUserName = CU.USERNAME    
    ,IPMinFundraisingGoal = RGE.FUNDRAISINGGOAL     
    ,IPPaysBalanceMessage = IFRGTG.PARTICIPANTPAYSBALANCEMESSAGE   
    ,IPTargetFundraisingGoal = RGE.TARGETFUNDRAISINGGOAL  
    ,IPTotalFundraisingAmount = cast(@IPTotalFundraisingAmount as money)   
    ,IPPercentageOfTargetFundraisingGoal = (case when ISNULL(RGE.TARGETFUNDRAISINGGOAL,0) = 0 then 0 else cast(@IPTotalFundraisingAmount as money) / RGE.TARGETFUNDRAISINGGOAL end)  
    ,IPNumberOfParticipantsToRecruit = RGE.MEMBERECRUITMENTGOAL    
    ,IPPercentageOfDonorsToRetain = RGE.DONORRETENTIONGOAL  
    ,IPNumberOfCommunicationsToSend = RGE.COMMUNICATIONGOAL    
    ,INumberForOtherGoal = RGE.OTHERUNITGOAL  

    ,IPNumberOfParticipantsRecruited=(select  COUNT(fc.TYPEGUID)    
                                            from   FAFCOMMUNICATIONSLOG fl  
                                            join   FAFEVENTCOMMUNICATIONCHANNEL fc on fl.EMAILJOBID = fc.EMAILJOBID  
                                            WHERE   fl.CLIENTUSERSID  IN (SELECT dbo.UFN_CLIENTUSERID_GET_BY_CONSTITUENT (RG.CONSTITUENTID)))  

    ,IPParOfParticipantsRecruited= case when isnull(RGE.MEMBERECRUITMENTGOAL,0) =0 then 0 else   
          Convert(decimal,(select  COUNT(fc.TYPEGUID)    
                                            from   FAFCOMMUNICATIONSLOG fl  
                                            join   FAFEVENTCOMMUNICATIONCHANNEL fc on fl.EMAILJOBID = fc.EMAILJOBID  
                                            WHERE   fl.CLIENTUSERSID  IN (SELECT dbo.UFN_CLIENTUSERID_GET_BY_CONSTITUENT (RG.CONSTITUENTID)) AND EVENTID=EV.ID))/RGE.MEMBERECRUITMENTGOAL  
          End  

    ,IPParOfDonorsRetained=isnull((select RetainedDonorCount from dbo.UFN_PARTICIPANT_DONOR_RETENTION(@CONSTITUENTID, @EVENTID)),0)  
    ,IPNumberOfCommunicationsSent=dbo.UFN_FAFGETTOTALCOMMUNICATIONS(EV.ID, dbo.UFN_CLIENTUSERID_GET_BY_CONSTITUENT(RG.CONSTITUENTID))  
    ,IPParOfCommunicationsSent=case when isnull(RGE.COMMUNICATIONGOAL,0) = 0 then 0 else   
         CONVERT(DECIMAL,dbo.UFN_FAFGETTOTALCOMMUNICATIONS(EV.ID, dbo.UFN_CLIENTUSERID_GET_BY_CONSTITUENT(RG.CONSTITUENTID)))/RGE.COMMUNICATIONGOAL END  

    ,ILYMinFundraisingGoal=isnull(LYRGE.FUNDRAISINGGOAL,0.00)  
    ,ILYTargetFundraisingGoal=isnull(LYRGE.TARGETFUNDRAISINGGOAL ,0.00)  
    ,ILYTotalAmoutRaised= (case when @PREVIOUSEVENTID is null then dbo.UFN_REVENUE_GETPARTICIPANTRAISEDTOTAL(LYRG.ID,LYRG.EVENTID) else dbo.UFN_REVENUE_GETPARTICIPANTRAISEDTOTAL(@REGISTRANTID,@EVENTID) end)  
    ,IPDashboardURL=@dashboardURL    

    /*future sprint*/  
    --,ILYNumberOfParticipantsToRecruit=null  

    --,ILYNumberOfParticipantsRecruited=nulL  

    --,ILYPercentageOfDonorsToRetain=null  

    --,ILYPercentageOfDonorsRetained=null  

    --,ILYNumberOfCommunicationsToSend=null  

    --,ILYNumberOfCommunicationsSent=null 


    ,IPPageUrlWithoutTracking = @IPPageUrlWithoutTracking

    ,RG.ID REGISTRANTID

    from dbo.REGISTRANT RG      
    inner join [EVENT] EV on EV.ID = RG.EVENTID and EV.ID = @EVENTID    
    inner join EVENTEXTENSION EEXT on EV.ID = EEXT.EVENTID  
    inner join dbo.CONSTITUENT C on C.ID = RG.CONSTITUENTID   
    left outer join REGISTRANTEXTENSION RGE on RGE.REGISTRANTID = RG.ID    
    left outer join REGISTRANTREGISTRATION RGG on RGG.REGISTRANTID =RG.ID   
    left outer join EVENTPRICE EVP on EVP.EVENTID=@EVENTID and EVP.ID=RGG.EVENTPRICEID   
    left outer join FAFREGISTRATIONTYPEGOAL IFRGTG on IFRGTG.EVENTPRICEID=EVP.ID and IFRGTG.REGTYPEGOALCODE=0   
    left outer join BACKOFFICESYSTEMPEOPLE BOSP on BOSP.BackofficeRecordID=C.SEQUENCEID and BOSP.BACKOFFICESYSTEMID = 0    
    left outer join BACKOFFICESYSTEMUSERS BOSU on  BOSU.BACKOFFICEPEOPLEID=BOSP.ID and BOSU.[CURRENT] = 1  
    left outer join CLIENTUSERS CU on CU.ID = BOSU.CLIENTUSERSID and CU.DELETED = 0   
    left outer join CMSSITESETTING CMS1 on CMS1.CLIENTSITESID = EEXT.CLIENTSITESID and CMS1.SETTING = 'PAGEBASEURL'  
    left outer join CMSSITESETTING CMS2 on CMS2.CLIENTSITESID = EEXT.CLIENTSITESID and CMS2.SETTING = 'FAFPARTICIPANTPAGEID'  
    --  LEFT JOIN dbo.V_QUERY_REGISTRANT_FUNDRAISINGTOTAL V ON RG.ID= V.ID  

    --Last year  

    left join dbo.EVENTEXTENSION LYET ON LYET.EVENTID=EEXT.PRIORYEAREVENTID  
    left join dbo.REGISTRANT LYRG ON LYRG.CONSTITUENTID=RG.CONSTITUENTID AND LYRG.EVENTID=LYET.EVENTID  
    left join dbo.REGISTRANTEXTENSION LYRGE ON LYRGE.REGISTRANTID=LYRG.ID   
    --Url  

    left join dbo.CMSSITESETTING CMSS3 on EEXT.CLIENTSITESID = CMSS3.CLIENTSITESID and CMSS3.ENUMID = 11  
    WHERE RG.ID = @REGISTRANTID