public static string CreateIntegerQuestion(XElement questionIterator, Category parent, XDocument xmlDocument) { var questionId = questionIterator.Name.LocalName; var constraint = 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("constraint"); int? min = null, max = null; if (constraint != null) { var contraints = GetConstraints(constraint.Value, @"\((\. >= (?'min'\d+(\.\d+)?))?( and )?(\. <= (?'max'\d+(\.\d+)?))?\)"); var minString = contraints["min"]; var maxString = contraints["max"]; if (!string.IsNullOrEmpty(minString)) min = int.Parse(minString); if (!string.IsNullOrEmpty(maxString)) max = int.Parse(maxString); } var intialDefaultAnswer = 0; int? defaultAnswer = null; if (Int32.TryParse(questionIterator.Value, out intialDefaultAnswer)) { defaultAnswer = intialDefaultAnswer; } 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 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 integerQuestionData = new IntegerQuestionData { Label = label, Answer = defaultAnswer, MinValue = min, MaxValue = max, Required = isRequired, }; return new TypedXmlSerializer<IntegerQuestionData>().SerializeToXmlString(integerQuestionData); }
public static string GetRelevantString(XElement questionIterator, Category parent, XDocument xmlDocument) { var questionId = questionIterator.Name.LocalName; var constraint = 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("relevant"); return constraint != null ? constraint.Value : null; }
public static string CreateDescriptiveQuestion(XElement questionIterator, Category parent, XDocument xmlDocument) { var questionId = questionIterator.Name.LocalName; var constraint = 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("constraint"); var length = 255; if (constraint != null) { var contraints = GetConstraints(constraint.Value, @"string-length\( \. \) <=(?'length'\d+)"); var lengthString = contraints["length"]; if (!string.IsNullOrEmpty(lengthString)) length = int.Parse(lengthString); } var defaultAnswer = questionIterator.Value; 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 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 descriptiveQuestionData = new DescriptiveQuestionData { Label = label, Answer = defaultAnswer, MaxLength = length, Required = isRequired, }; return new TypedXmlSerializer<DescriptiveQuestionData>().SerializeToXmlString(descriptiveQuestionData); }
public static string CreateGeopointQuestion(XElement questionIterator, Category parent, XDocument xmlDocument) { var questionId = questionIterator.Name.LocalName; 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 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 question = new GeopointQuestionData { Label = label, Answer = questionIterator.Value, Required = isRequired, }; return new TypedXmlSerializer<GeopointQuestionData>().SerializeToXmlString(question); }
public static string CreateDateQuestion(XElement questionIterator, Category parent, XDocument xmlDocument) { var questionId = questionIterator.Name.LocalName; var constraint = 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("constraint"); DateTime min = DateTime.MinValue, max = DateTime.MinValue; if (constraint != null) { var contraints = GetConstraints(constraint.Value, @"\((\. >= (?'min'\d{4}-\d{2}-\d{2}))?( and )?(\. <= (?'max'\d{4}-\d{2}-\d{2}))?\)"); var minString = contraints["min"]; var maxString = contraints["max"]; if (!string.IsNullOrEmpty(minString)) min = DateTime.ParseExact(minString, "yyyy-MM-dd", CultureInfo.InvariantCulture); if (!string.IsNullOrEmpty(maxString)) max = DateTime.ParseExact(maxString, "yyyy-MM-dd", CultureInfo.InvariantCulture); } DateTime? defaultAnswer = null; if (!string.IsNullOrEmpty(questionIterator.Value)) defaultAnswer = DateTime.ParseExact(questionIterator.Value, "yyyy-MM-dd", CultureInfo.InvariantCulture); 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 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 dateQuestion = new DateQuestionData { Label = label, Answer = defaultAnswer, MaxDate = max, MinDate = min, Required = isRequired, }; return new TypedXmlSerializer<DateQuestionData>().SerializeToXmlString(dateQuestion); }
public static string CreateTimeQuestion(XElement questionIterator, Category parent, XDocument xmlDocument) { var questionId = questionIterator.Name.LocalName; DateTime? defaultAnswer = null; if (!string.IsNullOrEmpty(questionIterator.Value)) defaultAnswer = DateTime.ParseExact(questionIterator.Value, "hh:mm:ss", CultureInfo.InvariantCulture); 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 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 timeQuestion = new TimeQuestionData { Answer = defaultAnswer, Label = label, Required = isRequired, }; return new TypedXmlSerializer<TimeQuestionData>().SerializeToXmlString(timeQuestion); }
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); }
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); }
partial void DeleteCategory(Category instance);
partial void UpdateCategory(Category instance);
partial void InsertCategory(Category instance);
private void detach_Category(Category entity) { this.SendPropertyChanging(); entity.Survey = null; }
private void attach_Category(Category entity) { this.SendPropertyChanging(); entity.Survey = this; }