Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }