Ejemplo n.º 1
0
        public Form ToForm()
        {
            var formId   = Guid.NewGuid();
            var sections = SectionRules?.Select(sr => sr.ToSection(formId)).ToList();

            Dictionary <Guid, Guid> mapQuestions = new Dictionary <Guid, Guid>();
            List <FormItem>         items        = new List <FormItem>();

            Questions?.ForEach((question) =>
            {
                FormItem item = question.ToFormItem(formId, sections);
                mapQuestions.Add(question.Id, item.Id);
                items.Add(item);
            });

            sections.ForEach((section) =>
            {
                if (section.VisibleCondition != null)
                {
                    FormFilterCondition.MapVisibleConditionQuestionToItemId(section.VisibleCondition, mapQuestions);
                }
            });

            items.ForEach((item) =>
            {
                if (item.VisibleCondition != null)
                {
                    FormFilterCondition.MapVisibleConditionQuestionToItemId(item.VisibleCondition, mapQuestions);
                }
            });

            return(new Form
            {
                Id = formId,
                TemplateId = Id,
                Subject = Subject,
                MustDisplayElementsCode = MustDisplayElementsCode,
                Type = Type,
                Language = Language,
                Sections = sections,
                Items = items,
                IsSignatureAllowed = IsSignatureAllowed,
            });
        }
 public static void MapVisibleConditionQuestionToItemId(FormFilterCondition condition, Dictionary <Guid, Guid> mapQuestions)
 {
     if (condition != null)
     {
         FilterProperty propertyFilter = condition as FilterProperty;
         if (propertyFilter != null)
         {
             if (mapQuestions.ContainsKey(propertyFilter.ItemId))
             {
                 propertyFilter.ItemId = mapQuestions[propertyFilter.ItemId];
             }
         }
         else
         {
             FilterCombination filterCombination = condition as FilterCombination;
             if (filterCombination != null)
             {
                 MapVisibleConditionQuestionToItemId(filterCombination.LeftFilter, mapQuestions);
                 MapVisibleConditionQuestionToItemId(filterCombination.RightFilter, mapQuestions);
             }
         }
     }
 }