Example #1
0
        /// <summary>
        /// Renders a condition step
        /// </summary>
        /// <param name="template">Export template</param>
        /// <param name="data">Dialog Step Data</param>
        /// <param name="flexFieldObject">Flex field object to which the dialog belongs</param>
        /// <param name="conditionNode">Condition node to render</param>
        /// <returns>Dialog Step Render Result</returns>
        public async Task <ExportDialogStepRenderResult> RenderDialogStep(ExportTemplate template, ExportDialogData data, FlexFieldObject flexFieldObject, ConditionNode conditionNode)
        {
            ExportDialogStepRenderResult renderResult = new ExportDialogStepRenderResult();

            Template parsedTemplate = ScribanParsingUtil.ParseTemplate(template.Code, _errorCollection);

            if (parsedTemplate == null)
            {
                return(renderResult);
            }

            ScribanCondition conditionData = new ScribanCondition();

            SetRenderObjectBaseDataFromFlexFieldObject(conditionData, data, flexFieldObject);
            conditionData.AllConditions = await BuildAllConditions(data, flexFieldObject, conditionNode);

            conditionData.Conditions = conditionData.AllConditions.Where(c => c.ChildNode != null).ToList();
            conditionData.Else       = BuildElsePart(data, flexFieldObject);

            TemplateContext context = BuildTemplateContext(conditionData);

            renderResult.StepCode = await parsedTemplate.RenderAsync(context);

            return(renderResult);
        }
Example #2
0
        /// <summary>
        /// Builds the template context for exporting
        /// </summary>
        /// <param name="conditionData">Condition data to export</param>
        /// <returns>Template context</returns>
        private TemplateContext BuildTemplateContext(ScribanCondition conditionData)
        {
            ScriptObject exportObject = new ScriptObject();

            exportObject.Add(ConditionKey, conditionData);
            TemplateContext context = new TemplateContext();

            context.TemplateLoader = new ScribanIncludeTemplateLoader(_exportCachedDbAccess, _errorCollection);
            context.PushGlobal(exportObject);
            return(context);
        }