public (string content, string token) GenerateSurveyPage(string token, int pageNbr)
        {
            var(survey, user, _, userCollector) = SurveyUtils.GetSurveyAndUser(graph, token);
            // Redirect with new token as anonymous surveys will pass the SurveyID as a token
            //userCollector.RefNoteID = new System.Guid();
            if (userCollector.Token != token)
            {
                return(null, userCollector.Token);
            }
            graph.Survey.Current = survey;
            var    mainTemplateID   = survey.TemplateID;
            var    mainTemplate     = SurveyComponent.PK.Find(graph, mainTemplateID);
            string mainTemplateText = mainTemplate.Body;

            if (string.IsNullOrEmpty(mainTemplateText?.Trim()))
            {
                throw new PXException(Messages.TemplateNeeded);
            }
            var template = Template.Parse(mainTemplateText);
            var context  = GetSurveyContext(survey, user, token);

            FillEntityInfo(survey, user, userCollector, graph, context);
            var renderedComps = RenderComponentsForPage(survey, user, context, pageNbr);

            context.SetValue(new ScriptVariableGlobal(INNER_CONTENT_LIST), renderedComps);
            context.SetValue(new ScriptVariableGlobal(INNER_CONTENT), string.Join("\n", renderedComps));
            var rendered = template.Render(context);

            return(rendered, null);
        }
 public string GetUrl(string token, int?pageNbr)
 {
     var(survey, _, answerCollector, _) = SurveyUtils.GetSurveyAndUser(graph, token);
     return(GetUrl(survey, answerCollector.Token, pageNbr));
 }