示例#1
0
        /// <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();
            }
        }
示例#2
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);
        }
示例#3
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);
        }