/// <summary> /// /// </summary> /// <param name="export"></param> private void ProcessIRP(int assessmentID, ACETDashboard acetDashboard, ref SingleRowExport export) { // build a quick dictionary for textual risk level values Dictionary <int, string> riskLevelDescription = new Dictionary <int, string> { { 0, "0" }, { 1, "1 - Least" }, { 2, "2 - Minimal" }, { 3, "3 - Moderate" }, { 4, "4 - Significant" }, { 5, "5 - Most" } }; for (int i = 0; i < acetDashboard.IRPs.Count; i++) { export.d["IRPC" + (i + 1)] = riskLevelDescription[acetDashboard.IRPs[i].RiskLevel]; } var irpAnswers = db.ASSESSMENT_IRP .Include(x => x.IRP_) .Where(x => x.Assessment_Id == assessmentID) .OrderBy(i => i.IRP_.Item_Number) .ToList(); foreach (var irpAnswer in irpAnswers) { export.d["IRP" + irpAnswer.IRP_.Item_Number] = irpAnswer.Response.ToString(); } }
/// <summary> /// Get matrix for maturity determination based on total irp rating /// </summary> /// <param name="irpRating"></param> /// <returns></returns> public List <string> GetMaturityRange(int assessmentId) { ACETDashboardManager manager = new ACETDashboardManager(); ACETDashboard irpCalculation = manager.GetIrpCalculation(assessmentId); bool targetBandOnly = GetTargetBandOnly(assessmentId); int irpRating = irpCalculation.Override > 0 ? irpCalculation.Override : irpCalculation.SumRiskLevel; if (!targetBandOnly) { irpRating = 6; //Do the default configuration } return(irpSwitch(irpRating)); }
/// <summary> /// Get IRP calculations and domains for dashboard display /// </summary> /// <param name="assessmentId"></param> /// <returns></returns> public ACETDashboard LoadDashboard(int assessmentId) { ACETDashboard result = GetIrpCalculation(assessmentId); result.Domains = new List <DashboardDomain>(); MaturityManager matManager = new MaturityManager(); List <MaturityDomain> domains = matManager.GetMaturityAnswers(assessmentId); foreach (var d in domains) { result.Domains.Add(new DashboardDomain { Maturity = d.DomainMaturity, Name = d.DomainName }); } return(result); }
/// <summary> /// Get all of the maturity levels. /// </summary> /// <param name="export"></param> private void ProcessMaturity(ACETDashboard acetDashboard, List <MaturityDomain> maturityDomains, ref SingleRowExport export) { // gather Domain Maturity 1 - 5 for (int i = 0; i < acetDashboard.Domains.Count; i++) { export.d["Dom Mat " + (i + 1)] = acetDashboard.Domains[i].Maturity; } // gather the maturity levels for all factors and components foreach (var m in maturityDomains) { foreach (var a in m.Assessments) { string factorName = a.AssessmentFactor; // A few factor headings have a unique suffix to avoid name conflicts in the dictionary if (!export.d.ContainsKey(factorName)) { factorName = factorName + "[FACTOR]"; } export.d[factorName] = a.AssessmentFactorMaturity; foreach (var x in a.Components) { string compName = x.ComponentName.Substring(x.ComponentName.IndexOf(':') + 1).Trim(); // A few component headings have a unique suffix to avoid name conflicts in the dictionary if (!export.d.ContainsKey(compName)) { compName = compName + "[COMPONENT]"; } export.d[compName] = x.AssessedMaturityLevel; } } } }
public void UpdateACETDashboardSummary(int assessmentId, ACETDashboard summary) { if (assessmentId == 0 || summary == null) { return; } using (var db = new CSET_Context()) { ASSESSMENTS assessment = db.ASSESSMENTS.FirstOrDefault(a => a.Assessment_Id == assessmentId); if (assessment != null) { assessment.CreditUnionName = summary.CreditUnionName; assessment.Charter = summary.Charter; assessment.Assets = summary.Assets; assessment.IRPTotalOverride = summary.Override; assessment.IRPTotalOverrideReason = summary.OverrideReason; } foreach (IRPSummary irp in summary.IRPs) { ASSESSMENT_IRP_HEADER dbSummary = db.ASSESSMENT_IRP_HEADER.FirstOrDefault(s => s.ASSESSMENT_ID == assessment.Assessment_Id && s.HEADER_RISK_LEVEL_ID == irp.RiskLevelId); if (dbSummary != null) { dbSummary.RISK_LEVEL = irp.RiskLevel; dbSummary.COMMENT = irp.Comment; } // the else should never happen else { return; } } db.SaveChanges(); } }
/// <summary> /// Get all IRP calculations for display /// </summary> /// <param name="assessmentId"></param> /// <returns></returns> public ACETDashboard GetIrpCalculation(int assessmentId) { ACETDashboard result = new ACETDashboard(); int idOffset = 1; using (var db = new CSET_Context()) { // now just properties on an Assessment ASSESSMENTS assessment = db.ASSESSMENTS.FirstOrDefault(a => a.Assessment_Id == assessmentId); if (assessment == null) { return(null); } result.CreditUnionName = assessment.CreditUnionName; result.Charter = assessment.Charter; result.Assets = assessment.Assets; result.Hours = (new AdminTabManager()).GetTabData(assessmentId).GrandTotal; //IRP Section result.Override = assessment.IRPTotalOverride ?? 0; result.OverrideReason = assessment.IRPTotalOverrideReason; foreach (IRP_HEADER header in db.IRP_HEADER) { IRPSummary summary = new IRPSummary(); summary.HeaderText = header.Header; ASSESSMENT_IRP_HEADER headerInfo = db.ASSESSMENT_IRP_HEADER.FirstOrDefault(h => h.IRP_HEADER_.IRP_Header_Id == header.IRP_Header_Id && h.ASSESSMENT_.Assessment_Id == assessmentId); if (headerInfo != null) { summary.RiskLevelId = headerInfo.HEADER_RISK_LEVEL_ID ?? 0; summary.RiskLevel = headerInfo.RISK_LEVEL.Value; summary.Comment = headerInfo.COMMENT; } List <IRP> irps = db.IRP.Where(i => i.Header_Id == header.IRP_Header_Id).ToList(); Dictionary <int, ASSESSMENT_IRP> dictionaryIRPS = db.ASSESSMENT_IRP.Where(x => x.Assessment_Id == assessmentId).ToDictionary(x => x.IRP_Id, x => x); foreach (IRP irp in irps) { ASSESSMENT_IRP answer = null; dictionaryIRPS.TryGetValue(irp.IRP_ID, out answer); //ASSESSMENT_IRP answer = irp.ASSESSMENT_IRP.FirstOrDefault(i => i.Assessment_.Assessment_Id == assessmentId); if (answer != null && answer.Response != 0) { summary.RiskCount[answer.Response.Value - 1]++; summary.RiskSum++; result.SumRisk[answer.Response.Value - 1]++; result.SumRiskTotal++; } } result.IRPs.Add(summary); } //go back through the IRPs and calculate the Risk Level for each section foreach (IRPSummary irp in result.IRPs) { int MaxRisk = 0; irp.RiskLevel = 0; for (int i = 0; i < irp.RiskCount.Length; i++) { if (irp.RiskCount[i] >= MaxRisk && irp.RiskCount[i] > 0) { MaxRisk = irp.RiskCount[i]; irp.RiskLevel = i + 1; } } } db.SaveChanges(); result.SumRiskLevel = 1; int maxRisk = 0; for (int i = 0; i < result.SumRisk.Length; i++) { if (result.SumRisk[i] >= maxRisk && result.SumRisk[i] > 0) { result.SumRiskLevel = i + 1; maxRisk = result.SumRisk[i]; } } } return(result); }
public ACETDashboard LoadDashboard(int assessmentId) { ACETDashboard result = new ACETDashboard(); int idOffset = 1; using (var db = new CSET_Context()) { // now just properties on an Assessment ASSESSMENTS assessment = db.ASSESSMENTS.FirstOrDefault(a => a.Assessment_Id == assessmentId); if (assessment == null) { return(null); } result.CreditUnionName = assessment.CreditUnionName; result.Charter = assessment.Charter; result.Assets = assessment.Assets; result.Hours = (new AdminTabManager()).GetTabData(assessmentId).GrandTotal; //IRP Section result.Override = assessment.IRPTotalOverride ?? 0; result.OverrideReason = assessment.IRPTotalOverrideReason; foreach (IRP_HEADER header in db.IRP_HEADER) { IRPSummary summary = new IRPSummary(); summary.HeaderText = header.Header; ASSESSMENT_IRP_HEADER headerInfo = db.ASSESSMENT_IRP_HEADER.FirstOrDefault(h => h.IRP_Header_.IRP_Header_Id == header.IRP_Header_Id && h.Assessment_.Assessment_Id == assessmentId); if (headerInfo != null) { summary.RiskLevelId = headerInfo.Header_Risk_Level_Id ?? 0; summary.RiskLevel = headerInfo.Risk_Level.Value; summary.Comment = headerInfo.Comment; } else { summary.RiskLevel = 0; headerInfo = new ASSESSMENT_IRP_HEADER() { Risk_Level = 0, IRP_Header_ = header }; headerInfo.Assessment_ = assessment; if (db.ASSESSMENT_IRP_HEADER.Count() == 0) { headerInfo.Header_Risk_Level_Id = header.IRP_Header_Id; } else { headerInfo.Header_Risk_Level_Id = db.ASSESSMENT_IRP_HEADER.Max(i => i.Header_Risk_Level_Id) + idOffset; idOffset++; } summary.RiskLevelId = headerInfo.Header_Risk_Level_Id ?? 0; db.ASSESSMENT_IRP_HEADER.Add(headerInfo); } List <IRP> irps = db.IRP.Where(i => i.Header_Id == header.IRP_Header_Id).ToList(); foreach (IRP irp in irps) { ASSESSMENT_IRP answer = db.ASSESSMENT_IRP.FirstOrDefault(a => a.IRP_Id == irp.IRP_ID && a.Assessment_Id == assessmentId); //ASSESSMENT_IRP answer = irp.ASSESSMENT_IRP.FirstOrDefault(i => i.Assessment_.Assessment_Id == assessmentId); if (answer != null && answer.Response != 0) { summary.RiskCount[answer.Response.Value - 1]++; summary.RiskSum++; result.SumRisk[answer.Response.Value - 1]++; result.SumRiskTotal++; } } result.IRPs.Add(summary); } //go back through the IRPs and calculate the Risk Level for each section foreach (IRPSummary irp in result.IRPs) { int MaxRisk = 0; irp.RiskLevel = 0; for (int i = 0; i < irp.RiskCount.Length; i++) { if (irp.RiskCount[i] >= MaxRisk && irp.RiskCount[i] > 0) { MaxRisk = irp.RiskCount[i]; irp.RiskLevel = i + 1; } } } db.SaveChanges(); result.SumRiskLevel = 1; int maxRisk = 0; for (int i = 0; i < result.SumRisk.Length; i++) { if (result.SumRisk[i] >= maxRisk && result.SumRisk[i] > 0) { result.SumRiskLevel = i + 1; maxRisk = result.SumRisk[i]; } } } result.Domains = new List <DashboardDomain>(); MaturityManager matManager = new MaturityManager(); List <MaturityDomain> domains = matManager.GetMaturityAnswers(assessmentId); foreach (var d in domains) { result.Domains.Add(new DashboardDomain { Maturity = d.DomainMaturity, Name = d.DomainName }); } return(result); }
public void UpdateACETDashboardSummary(ACETDashboard summary) { int assessmentId = Auth.AssessmentForUser(); (new ACETDashboardManager()).UpdateACETDashboardSummary(assessmentId, summary); }