/// <summary> /// Create new headers for IRP calculations /// </summary> /// <param name="assessmentId"></param> public void CreateIrpHeaders(int assessmentId) { 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); 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); 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); } 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); }