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); } } } }