/// <summary> /// Loads the Format Container with the given Id recursively /// </summary> /// <param name="formatContainerId">The Id of the format container to load</param> /// <returns>The requested format container</returns> private FormatContainer GetContainer(int formatContainerId) { FormatContainer root = this.context.QuestionnaireFormatContainers.Where(c => c.Id == formatContainerId).Include(c => c.ContainerFormatDefinition).Include(c => c.Children).SingleOrDefault(); List <FormatContainer> children = root.Children.ToList(); root.Children = root.Children.OrderBy(c => c.OrderInParent).ToList(); for (int i = 0; i < children.Count; i++) { children[i] = this.GetContainer(children[i].Id); } root.Children = children; root.Elements = this.context.QuestionnaireFormatContainers.Where(c => c.Id == root.Id).Select(c => c.Elements).Single(); root.Elements = root.Elements.OrderBy(e => e.OrderInSection).ToList(); if (root.GetType() == typeof(TextFormatContainer)) { TextFormatContainer textFormatRoot = (TextFormatContainer)root; textFormatRoot.TextFormatDefinition = this.context.QuestionnaireFormatContainers.OfType <TextFormatContainer>().Where(c => c.Id == textFormatRoot.Id).Select(c => c.TextFormatDefinition).SingleOrDefault(); } else if (root.GetType() == typeof(ItemFormatContainer)) { ItemFormatContainer ifRoot = (ItemFormatContainer)root; ifRoot.ItemFormatDefinition = this.context.QuestionnaireFormatContainers.OfType <ItemFormatContainer>().Where(c => c.Id == ifRoot.Id).Select(c => c.ItemFormatDefinition).SingleOrDefault(); ifRoot.ItemGroupFormats = this.context.QuestionnaireFormatContainers.OfType <ItemFormatContainer>().Where(c => c.Id == ifRoot.Id).Select(c => c.ItemGroupFormats).Single(); foreach (ItemGroupFormat igf in ifRoot.ItemGroupFormats) { igf.ItemGroupOptionsFormatDefinition = this.context.ItemGroupFormats.Where(f => f.Id == igf.Id).Select(f => f.ItemGroupOptionsFormatDefinition).Single(); igf.ItemGroupOptionsFormatDefinition.ForEachOption = this.context.ItemGroupOptionsForEachOptionDefinitions.Where(o => o.ItemGroupOptionsFormatDefinition.GroupOptionDefinitionName == igf.ItemGroupOptionsFormatDefinition.GroupOptionDefinitionName).OrderBy(o => o.OrderInItemGroupOptionsFormatDefinition).ToList(); } } return(root); }
/// <summary> /// Adds a format container and it's children (but not Definition References) to the database recursively. /// Does not call context.SaveChanges() /// </summary> /// <param name="container">The container to add</param> private void AddFormatContainersRecursive(FormatContainer container) { container.ContainerFormatDefinition_Name = container.ContainerFormatDefinition == null ? container.ContainerFormatDefinition_Name : container.ContainerFormatDefinition.ContainerDefinitionName; container.ContainerFormatDefinition = null; if (container.GetType() == typeof(TextFormatContainer)) { TextFormatContainer tf = (TextFormatContainer)container; tf.TextFormatDefinition_Name = tf.TextFormatDefinition.ElementFormatDefinitionName == null ? tf.TextFormatDefinition_Name : tf.TextFormatDefinition.ElementFormatDefinitionName; tf.TextFormatDefinition = null; int orderInSection = 0; foreach (FormatContainerElement element in tf.Elements) { element.OrderInSection = orderInSection++; element.FormatContainer = tf; this.context.QuestionnaireFormatContainerElements.Add(element); } } else if (container.GetType() == typeof(ItemFormatContainer)) { ItemFormatContainer ifc = (ItemFormatContainer)container; ifc.ItemFormatDefinition_Name = ifc.ItemFormatDefinition.ElementFormatDefinitionName == null ? ifc.ItemFormatDefinition_Name : ifc.ItemFormatDefinition.ElementFormatDefinitionName; ifc.ItemFormatDefinition = null; foreach (ItemGroupFormat igf in ifc.ItemGroupFormats) { igf.ItemFormatContainer = ifc; igf.ItemGroupOptionsFormatDefinition_Name = igf.ItemGroupOptionsFormatDefinition == null ? igf.ItemGroupOptionsFormatDefinition_Name : igf.ItemGroupOptionsFormatDefinition.GroupOptionDefinitionName; igf.ItemGroupOptionsFormatDefinition = null; this.context.ItemGroupFormats.Add(igf); } int orderInSection = 0; foreach (FormatContainerElement item in ifc.Elements) { item.OrderInSection = orderInSection++; item.FormatContainer = ifc; this.context.QuestionnaireFormatContainerElements.Add(item); } } int orderInParent = 0; foreach (FormatContainer child in container.Children) { child.Parent = container; child.OrderInParent = orderInParent++; this.AddFormatContainersRecursive(child); } this.context.QuestionnaireFormatContainers.Add(container); }
public static void LoadItemsFormatDefinition(XmlElement root, ref FormatContainer proContainer) { ItemFormatContainer items = new ItemFormatContainer(); foreach (XmlElement ItemsFormatDefinition in root.GetElementsByTagName("ItemsFormatDefinition")) { items.ItemFormatDefinition = new ItemFormatDefinition() { ElementFormatDefinitionName = ItemsFormatDefinition.Attributes["ElementFormatDefinitionName"].Value }; foreach (XmlElement ItemGroupFormat in ItemsFormatDefinition.GetElementsByTagName("ItemGroupFormat")) { switch (ItemGroupFormat.Attributes["GroupOptionDefinitionName"].Value) { case "LikertHorizontalRadio": items.ItemGroupFormats.Add(new ItemGroupFormat() { ItemGroupOptionsFormatDefinition = new ItemGroupOptionsFormatDefinition() { GroupOptionDefinitionName = "LikertHorizontalRadio" }, ResponseType = QuestionnaireResponseType.List }); break; case "BodyControl": items.ItemGroupFormats.Add(new ItemGroupFormat() { ItemGroupOptionsFormatDefinition = new ItemGroupOptionsFormatDefinition() { GroupOptionDefinitionName = "BodyControl" }, ResponseType = QuestionnaireResponseType.MultiSelect }); break; default: break; } foreach (XmlElement QuestionnaireElementFormatDefinition in ItemGroupFormat.GetElementsByTagName("QuestionnaireElementFormatDefinition")) { string OrderInSectionString = QuestionnaireElementFormatDefinition.Attributes["OrderInSection"].Value; int num1; bool res = int.TryParse(OrderInSectionString, out num1); if (res == false) { Form1.Print("The OrderInSection: " + OrderInSectionString + " need to be a number"); } else { int OrderInSectionInt = int.Parse(OrderInSectionString); items.Elements.Add(new FormatContainerElement() { OrderInSection = OrderInSectionInt, QuestionnaireElementActionId = (QuestionnaireElementFormatDefinition.Attributes["QuestionnaireElementActionId"]).Value }); } } } } proContainer.Children.Add(items); }
public void AddQuestionnaireFormat() { Format format = new Format(); format.Name = "OES"; format.SupportedPlatform = Platform.Classic; FormatContainer pro = new FormatContainer(); format.Containers.Add(pro); pro.ContainerFormatDefinition = new ContainerFormatDefinition() { ContainerDefinitionName = "GenericQuestionnaireCanvas" }; { TextFormatContainer intro = new TextFormatContainer(); //container.ContainerFormatDefinition = new ContainerFormatDefinition() { ContainerDefinitionName = "Defines start and end of Table" }; intro.TextFormatDefinition = new TextFormatDefinition() { ElementFormatDefinitionName = "GenericQuestionnaireText" }; intro.Elements.Add(new FormatContainerElement() { OrderInSection = 1, QuestionnaireElementActionId = "Intro1" }); intro.Elements.Add(new FormatContainerElement() { OrderInSection = 2, QuestionnaireElementActionId = "Intro2" }); pro.Children.Add(intro); } { ItemFormatContainer items = new ItemFormatContainer(); //container.ContainerFormatDefinition = "" items.ItemFormatDefinition = new ItemFormatDefinition() { ElementFormatDefinitionName = "GenericQuestionnaireItem" }; items.ItemGroupFormats.Add(new ItemGroupFormat() { ItemGroupOptionsFormatDefinition = new ItemGroupOptionsFormatDefinition() { GroupOptionDefinitionName = "LikertHorizontalRadio" }, ResponseType = QuestionnaireResponseType.List }); items.Elements.Add(new FormatContainerElement() { QuestionnaireElementActionId = "OES.1", OrderInSection = 1 }); items.Elements.Add(new FormatContainerElement() { QuestionnaireElementActionId = "OES.2", OrderInSection = 2 }); //items.Elements.Add(new FormatContainerElement() { QuestionnaireElementActionId = "OES.3", OrderInSection = 3 }); //items.Elements.Add(new FormatContainerElement() { QuestionnaireElementActionId = "OES.4", OrderInSection = 4 }); pro.Children.Add(items); } { ItemFormatContainer items = new ItemFormatContainer(); //container.ContainerFormatDefinition = "" items.ItemFormatDefinition = new ItemFormatDefinition() { ElementFormatDefinitionName = "GenericQuestionnaireItem" }; items.ItemGroupFormats.Add(new ItemGroupFormat() { ItemGroupOptionsFormatDefinition = new ItemGroupOptionsFormatDefinition() { GroupOptionDefinitionName = "LikertVerticalRadio" }, ResponseType = QuestionnaireResponseType.List }); items.Elements.Add(new FormatContainerElement() { QuestionnaireElementActionId = "OES.3", OrderInSection = 3 }); items.Elements.Add(new FormatContainerElement() { QuestionnaireElementActionId = "OES.4", OrderInSection = 4 }); pro.Children.Add(items); } { ItemFormatContainer items = new ItemFormatContainer(); //container.ContainerFormatDefinition = "" items.ItemFormatDefinition = new ItemFormatDefinition() { ElementFormatDefinitionName = "SliderQuestionnaireItem" }; items.ItemGroupFormats.Add(new ItemGroupFormat() { ItemGroupOptionsFormatDefinition = new ItemGroupOptionsFormatDefinition() { GroupOptionDefinitionName = "LikertSlider" }, ResponseType = QuestionnaireResponseType.Range }); items.Elements.Add(new FormatContainerElement() { QuestionnaireElementActionId = "OES.5", OrderInSection = 5 }); pro.Children.Add(items); } { ItemFormatContainer items = new ItemFormatContainer(); //container.ContainerFormatDefinition = "" items.ItemFormatDefinition = new ItemFormatDefinition() { ElementFormatDefinitionName = "ConditionalQuestionnaireItem" }; //items.ItemFormatDefinition.ItemGroupOptionsFormatDefinitions = new ItemGroupOptionsFormatDefinition() { }; items.ItemGroupFormats.Add(new ItemGroupFormat() { ItemGroupOptionsFormatDefinition = new ItemGroupOptionsFormatDefinition() { GroupOptionDefinitionName = "ConditionalItem" }, ResponseType = QuestionnaireResponseType.ConditionalItem }); items.ItemGroupFormats.Add(new ItemGroupFormat() { ItemGroupOptionsFormatDefinition = new ItemGroupOptionsFormatDefinition() { GroupOptionDefinitionName = "LikertSlider" }, ResponseType = QuestionnaireResponseType.Range }); items.Elements.Add(new FormatContainerElement() { QuestionnaireElementActionId = "OES.6", OrderInSection = 6 }); items.Elements.Add(new FormatContainerElement() { QuestionnaireElementActionId = "OES.7", OrderInSection = 7 }); items.Elements.Add(new FormatContainerElement() { QuestionnaireElementActionId = "OES.8", OrderInSection = 8 }); pro.Children.Add(items); } { ItemFormatContainer items = new ItemFormatContainer(); //container.ContainerFormatDefinition = "" items.ItemFormatDefinition = new ItemFormatDefinition() { ElementFormatDefinitionName = "TextBoxQuestionnaireItem" }; items.ItemGroupFormats.Add(new ItemGroupFormat() { ItemGroupOptionsFormatDefinition = new ItemGroupOptionsFormatDefinition() { GroupOptionDefinitionName = "TextBox" }, ResponseType = QuestionnaireResponseType.Text }); items.Elements.Add(new FormatContainerElement() { QuestionnaireElementActionId = "OES.9", OrderInSection = 9 }); pro.Children.Add(items); } { ItemFormatContainer items = new ItemFormatContainer(); //container.ContainerFormatDefinition = "" items.ItemFormatDefinition = new ItemFormatDefinition() { ElementFormatDefinitionName = "TextAreaQuestionnaireItem" }; items.ItemGroupFormats.Add(new ItemGroupFormat() { ItemGroupOptionsFormatDefinition = new ItemGroupOptionsFormatDefinition() { GroupOptionDefinitionName = "TextArea" }, ResponseType = QuestionnaireResponseType.Text }); items.Elements.Add(new FormatContainerElement() { QuestionnaireElementActionId = "OES.10", OrderInSection = 10 }); pro.Children.Add(items); } { ItemFormatContainer items = new ItemFormatContainer(); //container.ContainerFormatDefinition = "" items.ItemFormatDefinition = new ItemFormatDefinition() { ElementFormatDefinitionName = "BodyControlQuestionnaireItem" }; items.ItemGroupFormats.Add(new ItemGroupFormat() { ItemGroupOptionsFormatDefinition = new ItemGroupOptionsFormatDefinition() { GroupOptionDefinitionName = "BodyControl" }, ResponseType = QuestionnaireResponseType.MultiSelect }); items.Elements.Add(new FormatContainerElement() { QuestionnaireElementActionId = "OES.11", OrderInSection = 11 }); pro.Children.Add(items); } { TextFormatContainer footer = new TextFormatContainer(); //container.ContainerFormatDefinition = new ContainerFormatDefinition() { ContainerDefinitionName = "Defines start and end of Table" }; footer.TextFormatDefinition = new TextFormatDefinition() { ElementFormatDefinitionName = "GenericQuestionnaireText" }; footer.Elements.Add(new FormatContainerElement() { OrderInSection = 1, QuestionnaireElementActionId = "Footer1" }); pro.Children.Add(footer); } new AccessHandlerManager().QuestionnaireFormatAccessHandler.AddOrUpdateFullFormat(format); }