USP_DATALIST_FAFTASKS

Parameters

Parameter Parameter Type Mode Description
@CLIENTUSERSID int IN
@EVENTID uniqueidentifier IN
@ROLEID int IN

Definition

Copy


CREATE procedure dbo.USP_DATALIST_FAFTASKS
     (
         @CLIENTUSERSID   int,
         @EVENTID         uniqueidentifier,
         @ROLEID          int
     )
as
    set nocount on;

  DECLARE @TASKLIST table (
                        TASKID    uniqueidentifier,
              TASKNAME  varchar(50),
              TYPE      varchar(20)
                 )
    /***********************************************
        RoleID:
          1: Team Leader and household leader
          2. Company Leader
          3. Personal
          4. Team and household member
    ************************************************/

   DECLARE @CONSTITUENTID uniqueidentifier 
   DECLARE @TEAMID uniqueidentifier
   DECLARE @TEAMIMAGESTATUS bit
   DECLARE @PERSONALIMAGESTATUS bit
   DECLARE @TEAMSTORYSTATUS bit
   DECLARE @PERSONALSTORYSTATUS bit
   DECLARE @SOCIALNETWORKSTATUS bit
   DECLARE @REGISTRANTID uniqueidentifier
   DECLARE @SOCIALNETWORKPOSTCOUNT int
   DECLARE @ABCONTACTCOUNT int
   --DECLARE @TEAMLEADERS int 

   DECLARE @TEAMMEMBERS int
   DECLARE @PREVIOUSEVENT uniqueidentifier  
   DECLARE @EVENTSTATUS bit -- 1:active, 0:not active  

   DECLARE @MONEYRAISED money 

   SET @CONSTITUENTID = dbo.UFN_CONSTITUENT_GET_BY_CLIENTUSERID(@CLIENTUSERSID)
   SELECT @TEAMID = TEAMID, @REGISTRANTID = RegistrantID 
             from dbo.UFN_FAF_GETTEAMINFO_BY_REGISTRANT(@CONSTITUENTID, @EVENTID)

   -- check event status

   IF EXISTS (Select 1 from dbo.EVENT (NOLOCK) WHERE ID = @EVENTID AND ENDDATE IS NOT NULL AND ENDDATE < getdate() AND DATEADD(dd,7,ENDDATE) > getdate())  
        SET @EVENTSTATUS = 0  
   Else
        SET @EVENTSTATUS = 1

   --check image status          

   IF EXISTS (Select 1 from dbo.STORY (NOLOCK) WHERE EVENTID = @EVENTID AND TEAMFUNDRAISINGTEAMID = @TEAMID AND FAFIMAGESID IS NOT NULL)
       SET @TEAMIMAGESTATUS = 0
   ELSE 
       SET @TEAMIMAGESTATUS = 1

   IF EXISTS (Select 1 from dbo.STORY (NOLOCK) WHERE EVENTID = @EVENTID AND REGISTRANTID = @REGISTRANTID AND FAFIMAGESID IS NOT NULL)
       SET @PERSONALIMAGESTATUS = 0
   ELSE 
       SET @PERSONALIMAGESTATUS = 1

   -- check story status

   IF EXISTS (Select 1 from dbo.STORY (NOLOCK) WHERE EVENTID = @EVENTID AND TEAMFUNDRAISINGTEAMID = @TEAMID AND ISNULL(STORYTEXT,'') > '' AND isnull(STORYTEXT,'') not in (select STORYTEXT from dbo.STORY where EVENTID=@EVENTID and TEAMFUNDRAISINGTEAMID is null AND TYPECODE <> 0) AND isnull(STORYTEXT,'') <> ('Thanks for your support! Your contribution is greatly appreciated.'))
       SET @TEAMSTORYSTATUS = 0
   ELSE 
       SET @TEAMSTORYSTATUS = 1

  IF EXISTS (Select 1 from dbo.STORY (NOLOCK) WHERE EVENTID = @EVENTID AND REGISTRANTID = @REGISTRANTID AND ISNULL(STORYTEXT,'') > '' AND isnull(STORYTEXT,'') <> isnull((select STORYTEXT from dbo.STORY where EVENTID=@EVENTID and REGISTRANTID is null AND TYPECODE=0),'') AND isnull(STORYTEXT,'') <> ('Thanks for your support! Your contribution is greatly appreciated.'))
        SET @PERSONALSTORYSTATUS = 0
   ELSE 
        SET @PERSONALSTORYSTATUS = 1

   --check social status

   SELECT @SOCIALNETWORKPOSTCOUNT = COUNT(ID) FROM dbo.FAFEVENTSOCIALNETWORKPOST (NOLOCK) where REGISTRANTID = @REGISTRANTID
   IF @SOCIALNETWORKPOSTCOUNT > 0
       SET @SOCIALNETWORKSTATUS = 0
   ELSE
       SET @SOCIALNETWORKSTATUS = 1

   --SELECT @TEAMLEADERS = count(*) from dbo.UFN_FAF_COMPANYTEAMLEADERLIST(@CONSTITUENTID,@EVENTID)  

   SELECT @TEAMMEMBERS = count(ID) from dbo.TEAMFUNDRAISINGTEAMMEMBER where TEAMFUNDRAISINGTEAMID = @TEAMID

   SELECT @ABCONTACTCOUNT = count(ID) from AddressBookFAF Where CLIENTUSERSID in (select CLIENTUSERID from dbo.UFN_CLIENTUSERS_GETIDLISTBYCONSTITUENTID(@CONSTITUENTID)) and CONSTITUENTID is null

   -- get team's goal and raised

   SELECT @MONEYRAISED = dbo.UFN_REVENUE_GETTEAMRAISEDTOTAL(@TEAMID, @EVENTID)  

   DECLARE @ACKNOWLEDGEGIFT table (  
               CONSTITUENTID uniqueidentifier,  
               DONATIONDATE datetime,  
               DONATIONAMOUNT money,  
               ISACKNOWLEDGED bit,  
               REVENUEID uniqueidentifier,  
               REVENUESPLITID uniqueidentifier,  
               TYPE varchar(20),  
               NAME varchar(250)  
         )  

   Insert into @ACKNOWLEDGEGIFT  
             exec USP_DATALIST_FAF_GIFT_ACKNOWLEDGEMENT_TEAM @EVENTID,@TEAMID,@CLIENTUSERSID  

   -- load tasks based on the role

   If @ROLEID = 1
      Begin
            INSERT INTO @TASKLIST
          Select ID, Name, Type From FAFTASK 
            Where TypeCode in (1, 3) Order By TypeCode
      End
   Else If @ROLEID = 2
      Begin
            INSERT INTO @TASKLIST
          Select ID, Name, Type From FAFTASK 
            Where TypeCode in (2, 3) Order By TypeCode
      End
   Else 
      Begin
            INSERT INTO @TASKLIST
          Select ID, Name, Type From FAFTASK 
            Where TypeCode =3 Order By TypeCode
      End

   -- for team and family member

   If @ROLEID = 4 Begin
          INSERT INTO @TASKLIST
            Select ID, Name, Type From FAFTASK Where ID = '4381BC96-7888-4F63-A022-D443AFD43730'
      End

 -- check for business logic to make sure that task is valid 

   if @TEAMIMAGESTATUS = 0 Begin
          Delete @TASKLIST Where TaskName in ('Upload a team photo', 'Upload a company photo')
      End 

   if @PERSONALIMAGESTATUS = 0 Begin
          Delete @TASKLIST Where TaskName = 'Upload a personal photo'
      End 

   IF @TEAMSTORYSTATUS = 0 Begin
          Delete @TASKLIST Where TaskName in ('Write your company story', 'Write your team story')
      End

   IF @PERSONALSTORYSTATUS = 0 Begin
          Delete @TASKLIST Where TaskName = 'Write your personal story'
      End

   if @SOCIALNETWORKSTATUS = 0 Begin
          Delete @TASKLIST Where TaskName = 'Post to social networks'
      End

   if @ABCONTACTCOUNT > 0 Begin
          Delete @TASKLIST Where TaskName = 'Add contacts'
      End
   Else Begin
          Delete @TASKLIST Where TaskName = 'Follow up - ask again to donate'
          Delete @TASKLIST Where TaskName = 'Follow up - ask again to join'
      End

   --check Recruit team leaders

   Declare @NumParticipants   int
   Select @NumParticipants = COUNT(*) from dbo.UFN_FAF_COMPANYMEMBERLIST(@CONSTITUENTID, @EventID)   
   IF not EXISTS (SELECT 1 FROM dbo.TEAMEXTENSION (NOLOCK) where TEAMFUNDRAISINGTEAMID = @TEAMID and PARTICIPANTGOAL > 0 and PARTICIPANTGOAL > @NumParticipants)  
      Begin
         Delete @TASKLIST Where TaskName = 'Recruit team leaders'
      End

   IF not EXISTS (SELECT 1 FROM dbo.TEAMFUNDRAISINGTEAM (NOLOCK)   
                      where ID = @TEAMID and GOAL > 0 and GOAL >= ISNULL(@MONEYRAISED,0))  
      Begin
          Delete @TASKLIST Where TaskName = 'Remind leaders to ask new donors'
          Delete @TASKLIST Where TaskName = 'Help team leaders reach their goal'
          Delete @TASKLIST Where TaskName = 'Remind members to ask new donors'
      End

   SELECT @PREVIOUSEVENT = PRIORYEAREVENTID from dbo.EVENTEXTENSION (NOLOCK) WHERE EVENTID = @EVENTID  
   IF @PREVIOUSEVENT IS NULL Begin
         Delete @TASKLIST Where TaskName = 'Remind leaders to ask prior event donors'
         Delete @TASKLIST Where TaskName = 'Invite prior event members to join your team'
         Delete @TASKLIST Where TaskName = 'Ask prior event donors to donate'
      End


   IF not EXISTS (select 1 from @ACKNOWLEDGEGIFT  WHERE ISACKNOWLEDGED = 0) or 
      not EXISTS (select 1 from @ACKNOWLEDGEGIFT) Begin
         Delete @TASKLIST Where TaskName = 'Thank company donors'
         Delete @TASKLIST Where TaskName = 'Thank team donors'
         Delete @TASKLIST Where TaskName = 'Congratulate members on gifts received'

      End

   IF Not EXISTS (Select 1 from dbo.TEAMEXTENSION (NOLOCK) Where TEAMFUNDRAISINGTEAMID = @TEAMID and TEAMMEMBERGOAL > 0 and TEAMMEMBERGOAL > @TEAMMEMBERS)
       Begin
           Delete @TASKLIST Where TaskName = 'Ask leaders to recruit more members'
       End

   If @EVENTSTATUS = 1 Begin
               Delete @TASKLIST Where TaskName = 'Thank your team leaders'
               Delete @TASKLIST Where TaskName = 'Thank your team members'
            End

   If @RoleID = 1 or @RoleID = 4   --team specific

      Begin
         if Not EXISTS (SELECT 1 FROM dbo.TEAMEXTENSION (NOLOCK)   
                            where TEAMFUNDRAISINGTEAMID = @TEAMID and TEAMMEMBERGOAL > 0 and TEAMMEMBERGOAL >= ISNULL(@TEAMMEMBERS,0))  
             Begin
                 Delete @TASKLIST Where TaskName = 'Ask members to recruit more members'
                 Delete @TASKLIST Where TaskName = 'Invite contacts to join your team'
             End

         DECLARE @TeamMemberGoalRaised table (    
              MEMBERNAME   nvarchar(100),    
              GOAL         money,
              RAISED       money
         )  

         Insert @TeamMemberGoalRaised
            Select  c.NAME, rge.FUNDRAISINGGOAL As Goal,
                    IsNull(dbo.UFN_REVENUE_GETPARTICIPANTRAISEDTOTAL(rg.ID, @EventID), 0) As Raised
                   from REGISTRANT rg
                      inner join REGISTRANTEXTENSION rge on rg.ID = rge.REGISTRANTID
                      inner join CONSTITUENT c on c.ID = rg.CONSTITUENTID 
                      inner join TEAMFUNDRAISER tr on c.ID = tr.CONSTITUENTID
                      inner join TEAMFUNDRAISINGTEAMMEMBER tra on tra.TEAMFUNDRAISERID = tr.ID
                      inner join TEAMFUNDRAISINGTEAM trt on trt.ID = tra.TEAMFUNDRAISINGTEAMID
                   Where trt.ID = @TeamID

          if not exists(Select 1 from @TeamMemberGoalRaised where Goal > 0 and Goal > Raised)
               Delete @TASKLIST Where TaskName = 'Help members reach their goal'

      End

    -- personal tasks

     DECLARE @PersonalGoalRaised table (    
              GOAL         money,
              RAISED       money
         )  

      Insert into @PersonalGoalRaised
           Select re.FUNDRAISINGGOAL, IsNull(dbo.UFN_REVENUE_GETPARTICIPANTRAISEDTOTAL(rg.ID, @EventID), 0) As Raised 
            from Registrant rg
            Inner Join REGISTRANTEXTENSION re on rg.ID = re.RegistrantID
            where rg.CONSTITUENTID = @ConstituentID
            and rg.EVENTID = @EventID

     if not exists(Select 1 from @PersonalGoalRaised where Goal >= Raised) 
            Delete @TASKLIST Where TaskName = 'Ask contacts to donate' 

    DECLARE @PERSONALACKNOWLEDGEGIFT table (  
             DONORCONSTITUENTID uniqueidentifier,  
             DONATIONDATE datetime,  
             DONATIONAMOUNT money,  
             CONSTITUENTID uniqueidentifier,  
             ISACKNOWLEDGED bit,  
             REVENUEID uniqueidentifier,  
             REVENUESPLITID uniqueidentifier,  
             NAME varchar(250),  
            TRANSACTIONTYPE varchar(250)  
       ) 

   Insert into @PERSONALACKNOWLEDGEGIFT
           exec dbo.USP_DATALIST_FAF_GIFT_ACKNOWLEDGEMENT @CLIENTUSERSID,@EVENTID  

   IF Not EXISTS (select 1 from @PERSONALACKNOWLEDGEGIFT WHERE CONSTITUENTID = @CONSTITUENTID AND ISACKNOWLEDGED = 0)  
      Begin
          Delete @TASKLIST Where TaskName = 'Thank donors'
      End


   -- remove new message

   Delete @TASKLIST where TaskName = 'Send new message'

   -- final task load

   Select TASKID, TaskName, Type from @TASKLIST