/// <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();
            }
        }
Exemple #2
0
        /// <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));
        }
Exemple #3
0
        /// <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;
                    }
                }
            }
        }
Exemple #5
0
        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();
            }
        }
Exemple #6
0
        /// <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);
        }
Exemple #7
0
        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);
        }