protected void GenerateIndicatorPanelDetail(RiskRuleCategory category, HealthcheckRiskRule rule) { string safeRuleId = rule.RiskId.Replace("$", "dollar"); GenerateAccordionDetail("rules" + safeRuleId, "rules" + category.ToString(), rule.Rationale, rule.Points, true, () => { var hcrule = RuleSet <T> .GetRuleFromID(rule.RiskId); if (hcrule == null) { } else { Add("<h3>"); Add(hcrule.Title); Add("</h3>\r\n<strong>Description:</strong><p class=\"text-justify\">"); Add(NewLineToBR(hcrule.Description)); Add("</p>\r\n<strong>Technical explanation:</strong><p class=\"text-justify\">"); Add(NewLineToBR(hcrule.TechnicalExplanation)); Add("</p>\r\n<strong>Advised solution:</strong><p class=\"text-justify\">"); Add(NewLineToBR(hcrule.Solution)); Add("</p>\r\n<strong>Points:</strong><p>"); Add(NewLineToBR(hcrule.GetComputationModelString())); Add("</p>\r\n"); if (!String.IsNullOrEmpty(hcrule.Documentation)) { Add("<strong>Documentation:</strong><p>"); Add(hcrule.Documentation); Add("</p>"); } } if ((rule.Details != null && rule.Details.Count > 0) || (hcrule != null && !String.IsNullOrEmpty(hcrule.ReportLocation))) { Add("<strong>Details:</strong>"); if (!String.IsNullOrEmpty(hcrule.ReportLocation)) { Add("<p>"); Add(hcrule.ReportLocation); Add("</p>"); } if (rule.Details != null && rule.Details.Count > 0) { Add("<p>"); Add(String.Join("<br>\r\n", rule.Details.ToArray())); Add("</p>"); } } }); }
protected void GenerateIndicatorPanelDetail(string category, HealthcheckRiskRule rule, string optionalId = null) { string safeRuleId = rule.RiskId.Replace("$", "dollar"); var hcrule = RuleSet <HealthcheckData> .GetRuleFromID(rule.RiskId); GenerateAccordionDetailForRule("rules" + optionalId + safeRuleId, "rules" + category, rule.Rationale, rule, hcrule, () => { if (hcrule == null) { } else { Add("<h3>"); Add(hcrule.Title); Add("</h3>\r\n<strong>Rule ID:</strong><p class=\"text-justify\">"); Add(hcrule.RiskId); Add("</p>\r\n<strong>Description:</strong><p class=\"text-justify\">"); Add(NewLineToBR(hcrule.Description)); Add("</p>\r\n<strong>Technical explanation:</strong><p class=\"text-justify\">"); Add(NewLineToBR(hcrule.TechnicalExplanation)); Add("</p>\r\n<strong>Advised solution:</strong><p class=\"text-justify\">"); Add(NewLineToBR(hcrule.Solution)); Add("</p>\r\n<strong>Points:</strong><p>"); Add(NewLineToBR(hcrule.GetComputationModelString())); Add("</p>\r\n"); if (!String.IsNullOrEmpty(hcrule.Documentation)) { Add("<strong>Documentation:</strong><p>"); Add(hcrule.Documentation); Add("</p>"); } } if ((rule.Details != null && rule.Details.Count > 0) || (hcrule != null && !String.IsNullOrEmpty(hcrule.ReportLocation))) { Add("<strong>Details:</strong>"); if (hcrule != null && !String.IsNullOrEmpty(hcrule.ReportLocation)) { Add("<p>"); Add(hcrule.ReportLocation); Add("</p>"); } if (rule.Details != null && rule.Details.Count > 0 && !string.IsNullOrEmpty(rule.Details[0])) { var tokens = GetTokens(rule.Details); if (tokens != null && tokens.Count > 0) { Add(@"<div class=""row""> <div class=""col-md-12 table-responsive""> <table class=""table table-striped table-bordered""> <thead><tr>" ); foreach (var token in tokens) { Add("<th>"); AddEncoded(token.Replace("Domain_controller:", "Domain controller:").Substring(0, token.Length - 1)); Add("</th>"); } if (ActionPlanOrchestrator != null) { Add("<th>Action Plan</th>"); } Add("</tr></thead><tbody>"); foreach (var d in rule.Details) { if (string.IsNullOrEmpty(d)) { continue; } Add("<tr>"); var t = d.Replace("Domain controller:", "Domain_controller:").Split(' '); for (int i = 0, j = 0; i < t.Length && j <= tokens.Count; i++) { if (j < tokens.Count && t[i] == tokens[j]) { if (j != 0) { Add("</td>"); } j++; Add("<td>"); } else { Add(t[i]); Add(" "); } } Add("</td>"); if (ActionPlanOrchestrator != null) { Add("<td>"); ActionPlanOrchestrator.GenerateDetailledActionPlan(sb, rule, hcrule, d); Add("</td>"); } Add("</tr>"); } Add("</tbody></table></div></div>"); } else { Add("<p>"); Add(String.Join("<br>\r\n", rule.Details.ToArray())); Add("</p>"); } } } }); }
protected void GenerateAccordionDetailForRule(string id, string dataParent, string title, HealthcheckRiskRule rule, RuleBase <HealthcheckData> hcrule, GenerateContentDelegate content) { GenerateAccordionDetail(id, dataParent, title, () => { if (rule.Points == 0) { Add(@"<i class=""float-right""><span class='float-right'>Informative rule</span>"); if (ActionPlanOrchestrator != null) { ActionPlanOrchestrator.GenerateMainActionPlan(sb, rule, hcrule); } Add("</i>"); } else { Add(@"<i class=""float-right""><span class='float-right'>+ "); Add(rule.Points); Add(@" Point(s)</span>"); if (ActionPlanOrchestrator != null) { ActionPlanOrchestrator.GenerateMainActionPlan(sb, rule, hcrule); } Add("</i>"); } }, content); }