/// <summary> /// Checks the status of the recently added ContainerFormatDefinition and it's children to ensure all are added/updated as they should be /// </summary> /// <param name="container">The container to add or update</param> private void CheckContainerDefinitionStatus(ContainerFormatDefinition container) { if (this.context.ContainerFormatDefinitions.Any(c => c.ContainerDefinitionName == container.ContainerDefinitionName)) { this.context.Entry(container).State = EntityState.Modified; } foreach (ElementFormatDefinition elementFormat in container.ElementFormatDefinitions) { elementFormat.ContainerDefinitionName = container.ContainerDefinitionName; if (this.context.ElementFormatDefinitions.Any(e => e.ElementFormatDefinitionName == elementFormat.ElementFormatDefinitionName)) { this.context.Entry(elementFormat).State = EntityState.Modified; } if (elementFormat.GetType() == typeof(ItemFormatDefinition)) { ItemFormatDefinition item = (ItemFormatDefinition)elementFormat; foreach (ItemGroupOptionsFormatDefinition optionsFormat in item.ItemGroupOptionsFormatDefinitions) { optionsFormat.ItemFormatDefinitionName = item.ElementFormatDefinitionName; if (this.context.ItemGroupOptionsFormatDefinitions.Any(i => i.GroupOptionDefinitionName == optionsFormat.GroupOptionDefinitionName)) { this.context.Entry(optionsFormat).State = EntityState.Modified; } List <ItemGroupOptionsForEachOptionDefinition> tmp = new List <ItemGroupOptionsForEachOptionDefinition>(optionsFormat.ForEachOption); optionsFormat.ForEachOption = tmp; // Delete the old options before adding the new ones this.context.ItemGroupOptionsForEachOptionDefinitions.Where(o => o.ItemGroupOptionsFormatDefinition.GroupOptionDefinitionName == optionsFormat.GroupOptionDefinitionName).ToList().ForEach(o => this.context.Entry(o).State = EntityState.Deleted); int forEachOrder = 0; foreach (ItemGroupOptionsForEachOptionDefinition forEachOptionText in optionsFormat.ForEachOption) { forEachOptionText.OrderInItemGroupOptionsFormatDefinition = forEachOrder++; forEachOptionText.ItemGroupOptionsFormatDefinition = optionsFormat; } } } } foreach (ContainerFormatDefinition child in container.ChildContainers) { child.ParentContainer = container; this.CheckContainerDefinitionStatus(child); } }
public void AddQuestionnaireFormatDefinition() { { ContainerFormatDefinition canvasFormatDef = new ContainerFormatDefinition(); canvasFormatDef.ContainerDefinitionName = "GenericQuestionnaireCanvas"; canvasFormatDef.StartHtml = "<table>"; canvasFormatDef.EndHtml = "</table>"; canvasFormatDef.StartEndRepeat = 0; ItemFormatDefinition rowFormatDefn = new ItemFormatDefinition(); rowFormatDefn.ElementFormatDefinitionName = "GenericQuestionnaireItem"; rowFormatDefn.Html = "<tr><td><%DisplayId%/></td><td><%Text%/></td></tr>"; rowFormatDefn.ContainerFormatDefinition = canvasFormatDef; canvasFormatDef.ElementFormatDefinitions.Add(rowFormatDefn); ItemGroupOptionsFormatDefinition horizontalRadioFormatDef = new ItemGroupOptionsFormatDefinition(); rowFormatDefn.ItemGroupOptionsFormatDefinitions.Add(horizontalRadioFormatDef); horizontalRadioFormatDef.GroupOptionDefinitionName = "LikertHorizontalRadio"; horizontalRadioFormatDef.StartHtml = "<tr><td></td><td><table>"; horizontalRadioFormatDef.EndHtml = "</table></td></tr>"; horizontalRadioFormatDef.ForEachOptionStart = "<tr>"; horizontalRadioFormatDef.ForEachOptionEnd = "</tr>"; horizontalRadioFormatDef.ForEachOption.Add(new ItemGroupOptionsForEachOptionDefinition() { StartText = "<td><%OptionText%/></td>" }); horizontalRadioFormatDef.ForEachOption.Add(new ItemGroupOptionsForEachOptionDefinition() { StartText = "<td>", ItemOptionDisplayType = ItemOptionDisplayType.RadioButton, EndText = "</td>" }); ItemGroupOptionsFormatDefinition verticalRadioFormatDef = new ItemGroupOptionsFormatDefinition(); rowFormatDefn.ItemGroupOptionsFormatDefinitions.Add(verticalRadioFormatDef); verticalRadioFormatDef.GroupOptionDefinitionName = "LikertVerticalRadio"; verticalRadioFormatDef.StartHtml = "<tr><td></td><td><table>"; verticalRadioFormatDef.EndHtml = "</table></td></tr>"; verticalRadioFormatDef.ForEachOption.Add(new ItemGroupOptionsForEachOptionDefinition() { StartText = "<tr><td>", ItemOptionDisplayType = ItemOptionDisplayType.RadioButton, EndText = "</td><td><%OptionText%/></td></tr>" }); ItemFormatDefinition rowSliderFormatDefn = new ItemFormatDefinition(); rowSliderFormatDefn.ElementFormatDefinitionName = "SliderQuestionnaireItem"; rowSliderFormatDefn.Html = "<tr><td><%DisplayId%/></td><td><%Text%/></td></tr>"; rowSliderFormatDefn.ContainerFormatDefinition = canvasFormatDef; canvasFormatDef.ElementFormatDefinitions.Add(rowSliderFormatDefn); ItemGroupOptionsFormatDefinition sliderDef = new ItemGroupOptionsFormatDefinition(); rowSliderFormatDefn.ItemGroupOptionsFormatDefinitions.Add(sliderDef); sliderDef.GroupOptionDefinitionName = "LikertSlider"; sliderDef.StartHtml = "<tr><td></td><td><table>"; sliderDef.EndHtml = "</table></td></tr>"; sliderDef.ForEachOptionStart = "<tr>"; sliderDef.ForEachOptionEnd = "</tr>"; sliderDef.ForEachOption.Add(new ItemGroupOptionsForEachOptionDefinition() { StartText = "<td><%OptionText%/></td><td>", ItemOptionDisplayType = ItemOptionDisplayType.Slider, EndText = "</td><td><%OptionText%/></td>" }); ItemFormatDefinition conditionalRowFormatDefn = new ItemFormatDefinition(); conditionalRowFormatDefn.ElementFormatDefinitionName = "ConditionalQuestionnaireItem"; conditionalRowFormatDefn.Html = "<tr><td><%DisplayId%/></td><td><%Text%/></td></tr>"; conditionalRowFormatDefn.ContainerFormatDefinition = canvasFormatDef; canvasFormatDef.ElementFormatDefinitions.Add(conditionalRowFormatDefn); ItemGroupOptionsFormatDefinition conditionalItemDef = new ItemGroupOptionsFormatDefinition(); conditionalRowFormatDefn.ItemGroupOptionsFormatDefinitions.Add(conditionalItemDef); //conditionalRowFormatDefn.ItemGroupOptionsFormatDefinitions.Add(sliderDef); conditionalItemDef.GroupOptionDefinitionName = "ConditionalItem"; conditionalItemDef.StartHtml = "<tr><td></td><td><table>"; conditionalItemDef.EndHtml = "</table></td></tr>"; conditionalItemDef.ForEachOptionStart = "<tr>"; conditionalItemDef.ForEachOptionEnd = "</tr>"; conditionalItemDef.ForEachOption.Add(new ItemGroupOptionsForEachOptionDefinition() { StartText = "<td>", EndText = "</td><td><%OptionText%/></td>" }); //conditionalItemDef.ForEachOption.Add(new ItemGroupOptionsForEachOptionDefinition() { StartText = "<td><%OptionText%/></td><td>", ItemOptionDisplayType = ItemOptionDisplayType.Slider, EndText = "</td><td><%OptionText%/></td>" }); ItemFormatDefinition rowTextBoxFormatDefn = new ItemFormatDefinition(); rowTextBoxFormatDefn.ElementFormatDefinitionName = "TextBoxQuestionnaireItem"; rowTextBoxFormatDefn.Html = "<tr><td><%DisplayId%/></td><td><%Text%/></td></tr>"; rowTextBoxFormatDefn.ContainerFormatDefinition = canvasFormatDef; canvasFormatDef.ElementFormatDefinitions.Add(rowTextBoxFormatDefn); ItemGroupOptionsFormatDefinition textBoxDef = new ItemGroupOptionsFormatDefinition(); rowTextBoxFormatDefn.ItemGroupOptionsFormatDefinitions.Add(textBoxDef); textBoxDef.GroupOptionDefinitionName = "TextBox"; textBoxDef.StartHtml = "<tr><td></td><td><table>"; textBoxDef.EndHtml = "</table></td></tr>"; textBoxDef.ForEachOptionStart = "<tr>"; textBoxDef.ForEachOptionEnd = "</tr>"; textBoxDef.ForEachOption.Add(new ItemGroupOptionsForEachOptionDefinition() { StartText = "<td>", ItemOptionDisplayType = ItemOptionDisplayType.TextBox, EndText = "</td>" }); ItemFormatDefinition rowTextAreaFormatDefn = new ItemFormatDefinition(); rowTextAreaFormatDefn.ElementFormatDefinitionName = "TextAreaQuestionnaireItem"; rowTextAreaFormatDefn.Html = "<tr><td><%DisplayId%/></td><td><%Text%/></td></tr>"; rowTextAreaFormatDefn.ContainerFormatDefinition = canvasFormatDef; canvasFormatDef.ElementFormatDefinitions.Add(rowTextAreaFormatDefn); ItemGroupOptionsFormatDefinition textAreaDef = new ItemGroupOptionsFormatDefinition(); rowTextAreaFormatDefn.ItemGroupOptionsFormatDefinitions.Add(textAreaDef); textAreaDef.GroupOptionDefinitionName = "TextArea"; textAreaDef.StartHtml = "<tr><td></td><td><table>"; textAreaDef.EndHtml = "</table></td></tr>"; textAreaDef.ForEachOptionStart = "<tr>"; textAreaDef.ForEachOptionEnd = "</tr>"; textAreaDef.ForEachOption.Add(new ItemGroupOptionsForEachOptionDefinition() { StartText = "<td>", ItemOptionDisplayType = ItemOptionDisplayType.TextArea, EndText = "</td>" }); ItemFormatDefinition rowBodyControlFormatDefn = new ItemFormatDefinition(); rowBodyControlFormatDefn.ElementFormatDefinitionName = "BodyControlQuestionnaireItem"; rowBodyControlFormatDefn.Html = "<tr><td><%DisplayId%/></td><td><%Text%/></td></tr>"; rowBodyControlFormatDefn.ContainerFormatDefinition = canvasFormatDef; string bodyControlStartTag = "<img src=\"~/Content/images/BodyControl/bodyFront.png\" alt=\"\" usemap=\"#bodyFront\" id=\"imgBodyFront\" /><map name=\"bodyFront\">"; bodyControlStartTag += "<area alt=\"\" title=\"\" href=\"#\" name=\"headFront\" shape=\"poly\" coords=\"83,1,75,3,71,4,67,8,64,13,64,16,64,20,64,23,65,25,63,26,61,26,61,29,61,34,64,36,65,39,66,42,68,46,71,50,76,54,81,57,86,58,91,55,94,52,97,48,99,44,99,41,102,39,104,34,105,31,105,27,104,25,104,19,103,15,101,10,98,7,94,4,89,1\" />"; bodyControlStartTag += "<area alt=\"\" title=\"\" href=\"#\" name=\"leftHandFront\" shape=\"poly\" coords=\"143,201,147,200,151,199,155,198,158,199,161,202,163,204,165,206,166,210,168,214,170,217,172,220,171,222,168,219,166,217,164,215,165,219,165,223,167,225,167,229,169,232,168,235,165,232,163,229,162,225,161,222,159,224,160,228,161,230,161,233,162,235,162,237,159,236,158,230,157,227,156,224,155,222,154,225,155,228,155,230,155,232,155,235,152,236,151,233,150,229,150,227,151,224,151,222,149,222,148,225,148,230,148,232,146,233,146,222,146,220,145,217,144,215,143,212,143,207,143,205\" />"; bodyControlStartTag += "<area alt=\"\" title=\"\" href=\"#\" name=\"leftForearmFront\" shape=\"poly\" coords=\"127,149,131,148,135,146,139,145,142,144,145,147,146,153,150,158,150,161,151,167,152,172,152,178,153,182,155,188,156,191,156,194,153,197,149,198,146,198,143,199,142,196,140,193,138,188,137,183,134,178,132,174,131,169,129,164,127,156,127,152\" />"; bodyControlStartTag += "<area alt=\"\" title=\"\" href=\"#\" name=\"rightFootFront\" shape=\"poly\" coords=\"64,368,67,368,72,368,73,370,74,375,75,378,76,383,76,387,76,392,78,397,79,401,80,405,78,407,75,407,71,406,68,405,64,405,62,404,57,404,55,403,55,399,57,394,59,390,59,383,59,380,59,375,58,371,58,369\" />"; bodyControlStartTag += "<area alt=\"\" title=\"\" href=\"#\" name=\"leftFootFront\" shape=\"poly\" coords=\"94,370,98,370,100,370,103,370,105,370,108,371,108,376,107,382,108,387,108,389,109,393,110,397,111,401,111,403,108,404,105,405,100,406,98,405,95,405,92,406,89,406,87,404,86,401,88,395,91,392,90,385,93,373\" />"; bodyControlStartTag += "<area alt=\"\" title=\"\" href=\"#\" name=\"rightHandFront\" shape=\"poly\" coords=\"11,198,14,199,17,200,21,201,23,201,23,204,23,210,22,214,21,217,21,221,22,225,21,228,21,231,20,233,18,232,17,227,17,223,17,221,15,224,15,227,15,231,15,234,15,236,12,235,12,232,12,228,12,224,10,227,9,230,9,233,8,235,7,238,5,239,3,239,3,235,6,229,7,226,7,223,4,225,3,227,1,229,1,220,2,217,2,214,1,206,5,202,9,199\" />"; bodyControlStartTag += "<area alt=\"\" title=\"\" href=\"#\" name=\"rightForearmFront\" shape=\"poly\" coords=\"25,141,29,142,31,143,37,144,41,146,42,149,42,152,42,157,41,161,39,166,37,172,35,177,33,180,31,184,28,189,27,192,25,197,19,197,16,196,13,194,13,190,13,186,14,181,14,175,15,170,16,164,18,158,20,152,21,147,23,142\" />"; bodyControlStartTag += "<area alt=\"\" title=\"\" href=\"#\" name=\"rightLegFront\" shape=\"poly\" coords=\"42,225,49,226,56,226,64,226,69,226,75,226,80,228,79,236,77,254,76,265,76,275,74,284,74,289,74,298,72,303,70,312,71,318,74,325,74,330,74,335,73,337,72,340,71,345,71,350,71,353,71,357,71,361,71,365,67,366,64,365,60,365,55,361,54,354,51,349,50,345,49,340,47,336,47,332,48,326,48,319,50,314,50,311,51,307,51,296,50,292,49,289,47,279,46,274,44,268,43,254,41,248,42,243,41,236,41,232,41,228\" />"; bodyControlStartTag += "<area alt=\"\" title=\"\" href=\"#\" name=\"leftLegFront\" shape=\"poly\" coords=\"86,227,91,227,95,226,101,226,107,226,110,227,116,227,124,238,124,241,124,245,124,248,124,253,123,256,123,260,122,263,121,267,121,272,119,275,118,279,118,283,117,286,117,291,116,297,115,303,116,306,115,310,116,315,117,320,118,324,119,328,120,332,119,337,118,342,116,344,114,348,112,352,111,357,110,360,108,364,107,367,104,368,100,368,96,368,95,366,94,359,95,353,95,347,93,338,93,328,95,322,94,320,95,313,94,306,94,301,94,297,93,292,93,286,92,283,91,276,91,271,90,267,90,263,89,257,87,253,87,248,87,244,88,238,85,235,86,230\" />"; bodyControlStartTag += "<area alt=\"\" title=\"\" href=\"#\" name=\"rightArmFront\" shape=\"poly\" coords=\"25,140,30,141,35,142,38,143,40,143,43,143,44,139,46,132,48,123,50,114,51,111,50,107,49,99,48,94,48,91,48,87,49,84,50,78,50,76,51,72,52,69,48,67,43,67,39,70,36,72,33,76,32,79,30,84,29,88,28,93,27,99,28,103,27,108,27,113,27,119,28,124,27,129,26,135,25,137\" />"; bodyControlStartTag += "<area alt=\"\" title=\"\" href=\"#\" name=\"leftArmFront\" shape=\"poly\" coords=\"114,68,117,72,118,78,118,80,118,85,119,89,119,96,118,101,118,104,117,107,117,110,117,115,118,121,119,129,120,134,122,139,125,144,126,149,131,146,135,146,139,144,142,144,143,142,141,135,140,126,140,120,139,112,138,108,139,100,139,95,138,90,136,85,135,79,132,74,129,70,126,68,121,67\" />"; bodyControlStartTag += "<area alt=\"\" title=\"\" href=\"#\" name=\"neckFront\" shape=\"poly\" coords=\"70,53,69,59,66,61,62,64,57,66,54,68,54,71,62,71,72,71,77,72,80,74,86,74,89,72,94,71,101,71,107,72,115,72,110,67,104,65,99,60,98,58,97,56,97,53,94,54,92,56,88,58,81,59,75,56\" />"; bodyControlStartTag += "<area alt=\"\" title=\"\" href=\"#\" name=\"chestFront\" shape=\"poly\" coords=\"53,76,52,80,51,89,51,102,53,108,53,116,59,118,64,118,71,118,78,119,86,119,92,120,100,120,109,119,115,119,117,118,118,92,118,75,113,74,102,74,96,73,93,73,85,76,78,74,75,73,70,73,65,73,60,73\" />"; bodyControlStartTag += "<area alt=\"\" title=\"\" href=\"#\" name=\"stomachFront\" shape=\"poly\" coords=\"51,117,51,122,49,128,49,133,49,139,50,143,51,149,52,157,53,162,52,169,52,176,52,178,60,179,69,179,78,180,84,180,92,180,97,180,102,181,105,179,111,178,114,177,118,176,117,169,118,165,118,159,118,155,117,149,118,143,119,140,120,137,119,131,117,121,112,121,107,122,98,122,93,122,88,121,85,121,81,121,75,121,65,120,59,120,53,118\" />"; bodyControlStartTag += "<area alt=\"\" title=\"\" href=\"#\" name=\"hipFront\" shape=\"poly\" coords=\"49,180,46,187,45,191,43,196,42,201,41,207,41,213,41,217,41,222,47,224,67,225,73,224,77,226,84,229,86,226,91,226,97,225,101,225,106,225,108,224,114,224,117,227,119,229,124,230,125,227,125,223,126,219,125,212,125,207,124,201,122,197,121,191,120,187,120,183,119,179,117,177,113,178,108,179,105,181,100,181,94,181,89,181,78,180,70,180,64,180,59,180,53,179,49,179\" />"; bodyControlStartTag += "</map>"; string bodyControlEndTag = "<div style=\"clear: both; width: 500px; height: 170px; border: 1px solid black;\" id=\"selections\"></div>"; rowBodyControlFormatDefn.StartHtml = bodyControlStartTag; rowBodyControlFormatDefn.EndHtml = bodyControlEndTag; canvasFormatDef.ElementFormatDefinitions.Add(rowBodyControlFormatDefn); ItemGroupOptionsFormatDefinition bodyControlDef = new ItemGroupOptionsFormatDefinition(); rowBodyControlFormatDefn.ItemGroupOptionsFormatDefinitions.Add(bodyControlDef); bodyControlDef.GroupOptionDefinitionName = "BodyControl"; bodyControlDef.StartHtml = "<tr><td></td><td><table>"; bodyControlDef.EndHtml = "</table></td></tr>"; bodyControlDef.ForEachOptionStart = "<tr>"; bodyControlDef.ForEachOptionEnd = "</tr>"; bodyControlDef.ForEachOption.Add(new ItemGroupOptionsForEachOptionDefinition() { StartText = "<td><%Image%></td><td>", ItemOptionDisplayType = ItemOptionDisplayType.CheckBox, EndText = "</td>" }); TextFormatDefinition textFormatDef = new TextFormatDefinition(); textFormatDef.ElementFormatDefinitionName = "GenericQuestionnaireText"; textFormatDef.Html = "<tr><td colspan=\"2\"><%Text%/></td></tr>"; textFormatDef.ContainerFormatDefinition = canvasFormatDef; canvasFormatDef.ElementFormatDefinitions.Add(textFormatDef); new AccessHandlerManager().QuestionnaireFormatAccessHandler.AddOrUpdateFullDefinitionContainer(canvasFormatDef); } }