示例#1
0
        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));
        }
示例#2
0
        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));
        }