public static string CreateExclusiveChoiceQuestion(XElement questionIterator, Category parent, XDocument xmlDocument) { var questionId = questionIterator.Name.LocalName; var label = xmlDocument.Element(Namespaces.XHtmlNamespace + "html").Element(Namespaces.XHtmlNamespace + "head") .Element(Namespaces.DefaultNamespace + "model").Element(Namespaces.DefaultNamespace + "itext").Element(Namespaces.DefaultNamespace + "translation") .Elements().ToList().Where(e => e.Attribute("id").Value.Equals(string.Format("/data/{0}/{1}:label", parent.SystemID, questionId))).Single().Element(Namespaces.DefaultNamespace + "value").Value; var choiceElements = xmlDocument.Element(Namespaces.XHtmlNamespace + "html").Element(Namespaces.XHtmlNamespace + "head") .Element(Namespaces.DefaultNamespace + "model").Element(Namespaces.DefaultNamespace + "itext").Element(Namespaces.DefaultNamespace + "translation") .Elements().ToList().Where(e => e.Attribute("id").Value.StartsWith(string.Format("/data/{0}/{1}:option", parent.SystemID, questionId))); var defaultAnswer = questionIterator.Value.Trim(); var required = xmlDocument.Element(Namespaces.XHtmlNamespace + "html").Element(Namespaces.XHtmlNamespace + "head") .Element(Namespaces.DefaultNamespace + "model").Elements(Namespaces.DefaultNamespace + "bind").ToList() .Where(e => e.Attribute("nodeset").Value.Equals(string.Format("/data/{0}/{1}", parent.SystemID, questionId))).Single().Attribute("required"); var isRequired = false; if (required != null) { isRequired = GetRequired(required.Value, @"\w+"); } var exclusiveQuestion = new ExclusiveChocieQuestionData { Label = label, Required = isRequired, }; foreach (var item in choiceElements) { var itemIdTest = GetConstraints(item.Attribute("id").Value, string.Format(@"/data/{0}/{1}:(?'id'\w+)", parent.SystemID, questionId)); var itemId = itemIdTest["id"]; var itemText = item.Element(Namespaces.DefaultNamespace + "value").Value; var itemValue = xmlDocument.Element(Namespaces.XHtmlNamespace + "html").Element(Namespaces.XHtmlNamespace + "body") .Elements(Namespaces.DefaultNamespace + "group").ToList().Where(e => e.Element(Namespaces.DefaultNamespace + "label").Attribute("ref").Value.Equals(string.Format("jr:itext('/data/{0}:label')", parent.SystemID))).Single() .Elements(Namespaces.DefaultNamespace + "select1").ToList().Where(e => e.Attribute("ref").Value.Equals(string.Format("/data/{0}/{1}", parent.SystemID, questionId))).Single() .Elements(Namespaces.DefaultNamespace + "item").ToList().Where(e => e.Element(Namespaces.DefaultNamespace + "label").Attribute("ref").Value.Equals(string.Format("jr:itext('/data/{0}/{1}:{2}')", parent.SystemID, questionId, itemId))).Single() .Element(Namespaces.DefaultNamespace + "value").Value; var choiceItem = new ChoiceTextValuePair { Text = itemText, Value = itemValue, }; exclusiveQuestion.Options.Add(choiceItem); if (choiceItem.Value.Equals(defaultAnswer)) { exclusiveQuestion.Answer = choiceItem; } } return(new TypedXmlSerializer <ExclusiveChocieQuestionData>().SerializeToXmlString(exclusiveQuestion)); }
public static string CreateMultipleChoiceQuestion(XElement questionIterator, Category parent, XDocument xmlDocument) { var questionId = questionIterator.Name.LocalName; var label = xmlDocument.Element(Namespaces.XHtmlNamespace + "html").Element(Namespaces.XHtmlNamespace + "head") .Element(Namespaces.DefaultNamespace + "model").Element(Namespaces.DefaultNamespace + "itext").Element(Namespaces.DefaultNamespace + "translation") .Elements().ToList().Where(e => e.Attribute("id").Value.Equals(string.Format("/data/{0}/{1}:label", parent.SystemID, questionId))).Single().Element(Namespaces.DefaultNamespace + "value").Value; var choiceElements = xmlDocument.Element(Namespaces.XHtmlNamespace + "html").Element(Namespaces.XHtmlNamespace + "head") .Element(Namespaces.DefaultNamespace + "model").Element(Namespaces.DefaultNamespace + "itext").Element(Namespaces.DefaultNamespace + "translation") .Elements().ToList().Where(e => e.Attribute("id").Value.StartsWith(string.Format("/data/{0}/{1}:option", parent.SystemID, questionId))); var defaultAnswers = questionIterator.Value.Split(new string[1] { " " }, StringSplitOptions.RemoveEmptyEntries); var required = xmlDocument.Element(Namespaces.XHtmlNamespace + "html").Element(Namespaces.XHtmlNamespace + "head") .Element(Namespaces.DefaultNamespace + "model").Elements(Namespaces.DefaultNamespace + "bind").ToList() .Where(e => e.Attribute("nodeset").Value.Equals(string.Format("/data/{0}/{1}", parent.SystemID, questionId))).Single().Attribute("required"); var isRequired = false; if (required != null) { isRequired = GetRequired(required.Value, @"\w+"); } var multipleQuestion = new MultipleChoiceQuestionData { Label = label, Answers = new System.Collections.ObjectModel.ObservableCollection <ChoiceTextValuePair>(), Required = isRequired, }; foreach (var item in choiceElements) { var itemIdTest = GetConstraints(item.Attribute("id").Value, string.Format(@"/data/{0}/{1}:(?'id'\w+)", parent.SystemID, questionId)); var itemId = itemIdTest["id"]; var itemText = item.Element(Namespaces.DefaultNamespace + "value").Value; var itemValue = xmlDocument.Element(Namespaces.XHtmlNamespace + "html").Element(Namespaces.XHtmlNamespace + "body") .Elements(Namespaces.DefaultNamespace + "group").ToList().Where(e => e.Element(Namespaces.DefaultNamespace + "label").Attribute("ref").Value.Equals(string.Format("jr:itext('/data/{0}:label')", parent.SystemID))).Single() .Elements(Namespaces.DefaultNamespace + "select").ToList().Where(e => e.Attribute("ref").Value.Equals(string.Format("/data/{0}/{1}", parent.SystemID, questionId))).Single() .Elements(Namespaces.DefaultNamespace + "item").ToList().Where(e => e.Element(Namespaces.DefaultNamespace + "label").Attribute("ref").Value.Equals(string.Format("jr:itext('/data/{0}/{1}:{2}')", parent.SystemID, questionId, itemId))).Single() .Element(Namespaces.DefaultNamespace + "value").Value; var choiceItem = new ChoiceTextValuePair { Text = itemText, Value = itemValue, }; multipleQuestion.Options.Add(choiceItem); if (defaultAnswers.Contains(choiceItem.Value)) { multipleQuestion.Answers.Add(choiceItem); } } return(new TypedXmlSerializer <MultipleChoiceQuestionData>().SerializeToXmlString(multipleQuestion)); }