Wordfly Pages Integration

Is anyone using the WordFly Pages integration? I'm working on configuring LP_WF_PAGE_RESPONSE_CUSTOM to write back responses to Special Activities and was wondering if anyone had any advice/suggestions based on their configuration.

Parents Reply Children
  • ,

    Can you share any of your code as a starting place for use at LSC?

    has shared a nice bit of code for RSVPs.  

  • thought you'd never ask Wink
    dgh's how to guide is in there as well.

    Re__RSVP_SPROC.zip

    USE [impresario]
    GO
    /****** Object:  StoredProcedure [dbo].[LP_WF_PAGE_RESPONSE_CUSTOM]    Script Date: 15/06/2019 9:04:53 AM ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    
    -- =============================================
    -- Author:		WordFly
    -- Create date: 2018
    -- Custom for BDT May 2019
    -- 2019-06-15 Adapted by DGH at MIAF to accomodate spec_act_no that are not always two digits
    -- =============================================
    ALTER PROCEDURE [dbo].[LP_WF_PAGE_RESPONSE_CUSTOM]
    	@pageResponseId int
    AS
    BEGIN
    
    	SET NOCOUNT ON;
    
    
    	declare  @pageId int
    			,@customer_no int
    			,@emailAddress varchar(80)
    			,@corr_id varchar(5000)
    			,@spec_act_no int
    			,@spec_act_desc varchar(30)
    			,@spec_act_date datetime
    			,@spec_act_response_date datetime
    			,@spec_act_name varchar(500)
    			,@spec_act_notes varchar(255)
    			,@resp_status int
    			,@num_attendees int
    			,@attrib_no int
    			,@pageType int
    		
    
    	create table #rsvp_page_responses(
    			id		int identity(1,1),
    			name	varchar(500),
    			url		varchar(5000),
    			customer_no	int,
    			email		varchar(80),
    			resp_dt		datetime,
    			question	varchar(max),
    			answer		varchar(max))
    
    	select top 1 @pageId = PageId,@customer_no = customer_no,@emailAddress = Email from LT_WF_PAGE_RESPONSE with (nolock) where Id = @pageResponseId
    
    
    	select @corr_id = a.CorrelationId, @pageType = PageTypeId from LT_WF_PAGE a with (nolock)
    	where a.Id = @pageId
    
    
    	--RSVP Response Special Activity Creation
    	-------------------------------------------------------------------------------------------------------------------------------
    	if @pageType = 1
    	begin
    
    		set @spec_act_no = 0
    		set @attrib_no = 0
    --		set @spec_act_date = '2000-01-01 00:00:00:0000'
    
    		--Retrieve the Activity or Attribute no from the CorrelationId
    		if substring(@corr_id, 1,8) = 'Activity'
    			/* 2019-06-15 DGH MIAF edit
    			This was designed for BDT, where their spec_act_no from TR_SPECIAL_ACTIVITY must be two characters.
    			This is not the case in all environments... */
    			-- set @spec_act_no = cast(substring(@corr_id, 10,2) as int)
    
    			/* We do this instead, because the @corr_id is always the same format: Activity:X_20xx-xx-xx 
    			So we can look at anything between the : and _ to get the spec_act_no, and it will always work */
    			set @spec_act_no = cast(substring(@corr_id,CHARINDEX(':',@corr_id)+1,CHARINDEX('_',@corr_id)-CHARINDEX(':',@corr_id)-1) as int)
    		if substring(@corr_id, 1,8) = 'Activity' and @corr_id like '%_%'
    				set @spec_act_date = substring(@corr_id, charindex('_', @corr_id )+1, len(@corr_id))
    		else if substring(@corr_id, 1,9) = 'Attribute'
    			set @attrib_no = cast(substring(@corr_id, 11,500) as int)
    
    		--Obtain special activity description
    		if @spec_act_no <> 0
    		begin
    			select @spec_act_desc = sp.description from dbo.TR_SPECIAL_ACTIVITY sp (NOLOCK) where sp.id = @spec_act_no
    
    			--Insert answers into temp table
    			insert into #rsvp_page_responses  (name, url, customer_No, email, resp_dt, question, answer) 
    			
    			select a.Name, a.Url, c.customer_no, c.Email, c.PageResponseDate, b.Question, d.Answer 
    			from LT_WF_PAGE a with (nolock)
    				inner join LT_WF_PAGE_FIELD b with (nolock) on b.PageId = a.Id
    				inner join LT_WF_PAGE_RESPONSE c with (nolock) on c.PageId = a.Id
    				inner join LT_WF_PAGE_FIELD_RESPONSE d with (nolock) on d.PageFieldId = b.Id and d.PageResponseId = c.Id
    			where c.Id =  @pageResponseId
    
    			--Debug
    			--select @spec_act_no as 'special code'
    			--select @spec_act_desc as 'special activity'
    			--select @attrib_no as 'attribute code'
    			--select * from #rsvp_page_responses
    
    			--Determine special activity status from answers 2=Declined, 4=Accepted, 1=Invited
    			select @resp_status = case when answer = 'yes' then 4
    									   when answer = 'no' then 2
    								  else 1 end
    			from #rsvp_page_responses where id = 1
    
    			--Select number of attendees, rsvp name, and response date
    			select @num_attendees = cast(answer as int),
    				   @spec_act_name = name,
    				   @spec_act_response_date = resp_dt
    			from #rsvp_page_responses where id = 2
    
    			--Select notes from responses
    			select @spec_act_notes = substring(answer,1,255)
    			from #rsvp_page_responses where id = 3
    
    			select @spec_act_date
    			select cast(@spec_act_date as datetime)
    		
    			--Insert or update retrieved data into Special Activity table
    			if not exists (select sa_no from dbo.T_SPECIAL_ACTIVITY (nolock) where customer_no = @customer_no and sp_act = @spec_act_no and sp_act_dt = cast(@spec_act_date as datetime)) 			
    				insert into dbo.T_SPECIAL_ACTIVITY (customer_no, sp_act, sp_act_dt, solicitor, perf, status, notes, num_attendees)
    				values (@customer_no, @spec_act_no, cast(@spec_act_date as datetime), NULL, substring(@spec_act_name,1,20),@resp_status,@spec_act_notes,@num_attendees)
    			else
    				update dbo.T_SPECIAL_ACTIVITY
    					set status = @resp_status,
    						sp_act = @spec_act_no,
    						perf = substring(@spec_act_name,1,20),
    						notes = @spec_act_notes,
    						num_attendees = @num_attendees
    				where customer_no = @customer_no
    				and sp_act = @spec_act_no
    				and sp_act_dt = cast(@spec_act_date as datetime)
    
    			end
    		end
    	--end
    
    --	RETURN
    
    
    RETURN
    
    
    	--declare @pageId int,@customer_no int,@emailAddress varchar(80)
    	--select top 1 @pageId = PageId,@customer_no = customer_no,@emailAddress = Email from LT_WF_PAGE_RESPONSE with (nolock) where Id = @pageResponseId
    	
    	--===  PAGE
    	select * from LT_WF_PAGE a with (nolock)
    	where a.Id = @pageId
    	
    	--==   QUESTIONS	
    	select b.*
    	from LT_WF_PAGE a with (nolock)
    	inner join LT_WF_PAGE_FIELD b with (nolock) on b.PageId = a.Id
    	where a.Id = @pageId
    
    	--==   ANSWERS	
    	select b.Question, d.Answer, COUNT(*) as AnswerCount
    	from LT_WF_PAGE a with (nolock)
    	inner join LT_WF_PAGE_FIELD b with (nolock) on b.PageId = a.Id
    	inner join LT_WF_PAGE_RESPONSE c with (nolock) on c.PageId = a.Id
    	inner join LT_WF_PAGE_FIELD_RESPONSE d with (nolock) on d.PageFieldId = b.Id and d.PageResponseId = c.Id
    	where a.Id = @pageId
    	group by b.Question, d.Answer
    	order by b.Question,COUNT(*) desc
    
    	--==  SPECIFIED RESPONSE
    	select a.Name,a.Url,c.customer_no,c.Email,c.PageResponseDate,b.Question,d.Answer 
    	from LT_WF_PAGE a with (nolock)
    	inner join LT_WF_PAGE_FIELD b with (nolock) on b.PageId = a.Id
    	inner join LT_WF_PAGE_RESPONSE c with (nolock) on c.PageId = a.Id
    	inner join LT_WF_PAGE_FIELD_RESPONSE d with (nolock) on d.PageFieldId = b.Id and d.PageResponseId = c.Id
    	where c.Id = @pageResponseId
    
    	--==  ALL RESPONSES FOR THIS PAGE
    	select a.Name,a.Url,c.customer_no,c.Email,c.PageResponseDate,b.Question,d.Answer 
    	from LT_WF_PAGE a with (nolock)
    	inner join LT_WF_PAGE_FIELD b with (nolock) on b.PageId = a.Id
    	inner join LT_WF_PAGE_RESPONSE c with (nolock) on c.PageId = a.Id
    	inner join LT_WF_PAGE_FIELD_RESPONSE d with (nolock) on d.PageFieldId = b.Id and d.PageResponseId = c.Id
    	where a.Id = @pageId
    	order by b.Id,c.Id desc
    
    	--==  ALL RESPONSES TO ALL PAGES FOR THIS CUSTOMER
    	select a.Name,a.Url,c.customer_no,c.Email,c.PageResponseDate,b.Question,d.Answer 
    	from LT_WF_PAGE a with (nolock)
    	inner join LT_WF_PAGE_FIELD b with (nolock) on b.PageId = a.Id
    	inner join LT_WF_PAGE_RESPONSE c with (nolock) on c.PageId = a.Id
    	inner join LT_WF_PAGE_FIELD_RESPONSE d with (nolock) on d.PageFieldId = b.Id and d.PageResponseId = c.Id
    	where c.customer_no = @customer_no
    	order by b.Id,c.Id desc
    
    	--==  ALL RESPONSES TO ALL PAGES FOR THIS EMAIL
    	select a.Name,a.Url,c.customer_no,c.Email,c.PageResponseDate,b.Question,d.Answer 
    	from LT_WF_PAGE a with (nolock)
    	inner join LT_WF_PAGE_FIELD b with (nolock) on b.PageId = a.Id
    	inner join LT_WF_PAGE_RESPONSE c with (nolock) on c.PageId = a.Id
    	inner join LT_WF_PAGE_FIELD_RESPONSE d with (nolock) on d.PageFieldId = b.Id and d.PageResponseId = c.Id
    	where c.Email = @emailAddress
    	order by b.Id,c.Id desc
    
    END
    

  • I will take a look when I get a moment.

    Thanks :-)

  •  

    has done some testing and I believe that he has had some good results.  Thank You.

  • Great news.  I'm installing it for the wonderful Griffin Theatre folks this arvo as well.
    Happily I've just got our WordFly Surveys going too (thanks to Sam Orr)!

  • Hi Heath, I know this is a really old thread, but we used your wonderful code here to get RSVPs working with WordFly. There's only one issue - Pages counts a Yes as 1 guest and asks about additional guests on top of that. However, it seems that Tessitura is just mapping the number of additional guests into the Attendees field (in Special Activities). Tessitura indicated that we need to update Line 108 of the code to address this:

    select @num_attendees = cast(answer as int)

    Is there a simple way to add +1 to this line of code? Full disclosure, I have no SQL experience (if you can't tell) Slight smile

  • The +1 thing I have pleaded/argued/begged with WordFly but to no avail.  It'd be nice to have to option of just asking how many people are coming.

    A couple of things about this customisation though ... it was pre covid (and worked a treat back in the day) BUT when covid came there was a serious upgrade of the Tessitura/Wordfly integration which broke this for us (but gave us other lovely things).  Now I still use RSVPs in the Tessitura beta way BUT there are a few caveats.  I'd talk to the Tessitura Consulting staff that worked hard on it to use it now.

    That being said I think that the answer would be to change line 130 to read num_attendees = @num_attendees+1