示例#1
0
        public int StoreAnswer([FromBody] Answer answer)
        {
            if (answer == null)
            {
                return(0);
            }

            int    assessmentId    = Auth.AssessmentForUser();
            string applicationMode = GetApplicationMode(assessmentId);

            if (answer.Is_Component)
            {
                QuestionsManager qm = new QuestionsManager(assessmentId);
                return(qm.StoreComponentAnswer(answer));
            }

            if (answer.Is_Requirement)
            {
                RequirementsManager rm = new RequirementsManager(assessmentId);
                return(rm.StoreAnswer(answer));
            }

            if (answer.Is_Maturity)
            {
                MaturityManager mm = new MaturityManager();
                return(mm.StoreAnswer(assessmentId, answer));
            }

            QuestionsManager qm2 = new QuestionsManager(assessmentId);

            return(qm2.StoreAnswer(answer));
        }
示例#2
0
        public List <MaturityReportData.MaturityQuestion> GetRRAQuestions()
        {
            var questions = new List <MaturityReportData.MaturityQuestion>();

            int assessmentId = Auth.AssessmentForUser();

            var mm = new MaturityManager();

            var resp = mm.GetMaturityQuestions(assessmentId, false, true);

            // get all supplemental info for questions, because it is not included in the previous method
            var dict = mm.GetReferences(assessmentId);


            resp.Groupings.First().SubGroupings.ForEach(goal => goal.Questions.ForEach(q =>
            {
                var newQ = new MaturityReportData.MaturityQuestion
                {
                    Question_Title = q.DisplayNumber,
                    Question_Text  = q.QuestionText,
                    Answer         = new ANSWER()
                    {
                        Answer_Text = q.Answer
                    },
                    ReferenceText = dict[q.QuestionId]
                };

                questions.Add(newQ);
            }));

            return(questions);
        }
示例#3
0
        public IHttpActionResult GetMaturityRange()
        {
            int             assessmentId  = Auth.AssessmentForUser();
            MaturityManager manager       = new MaturityManager();
            var             maturityRange = manager.GetMaturityRange(assessmentId);

            return(Ok(maturityRange));
        }
示例#4
0
        public IHttpActionResult GetMaturityResults()
        {
            int             assessmentId = Auth.AssessmentForUser();
            MaturityManager manager      = new MaturityManager();
            var             maturity     = manager.GetMaturityAnswers(assessmentId);

            return(Ok(maturity));
        }
示例#5
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        private void GetMaturityModelDetails(ref AssessmentDetail assessment, CSET_Context db)
        {
            int assessmentId = assessment.Id;

            var maturityManager = new MaturityManager();

            assessment.MaturityModel = maturityManager.GetMaturityModel(assessmentId);
        }
示例#6
0
        public int StoreAnswer([FromBody] Answer answer)
        {
            if (answer == null)
            {
                return(0);
            }

            if (String.IsNullOrWhiteSpace(answer.QuestionType))
            {
                if (answer.Is_Component)
                {
                    answer.QuestionType = "Component";
                }
                if (answer.Is_Maturity)
                {
                    answer.QuestionType = "Maturity";
                }
                if (answer.Is_Requirement)
                {
                    answer.QuestionType = "Requirement";
                }
                if (!answer.Is_Requirement && !answer.Is_Maturity && !answer.Is_Component)
                {
                    answer.QuestionType = "Question";
                }
            }

            int    assessmentId    = Auth.AssessmentForUser();
            string applicationMode = GetApplicationMode(assessmentId);

            if (answer.Is_Component)
            {
                QuestionsManager qm = new QuestionsManager(assessmentId);
                return(qm.StoreComponentAnswer(answer));
            }

            if (answer.Is_Requirement)
            {
                RequirementsManager rm = new RequirementsManager(assessmentId);
                return(rm.StoreAnswer(answer));
            }

            if (answer.Is_Maturity)
            {
                MaturityManager mm = new MaturityManager();
                return(mm.StoreAnswer(assessmentId, answer));
            }

            QuestionsManager qm2 = new QuestionsManager(assessmentId);

            return(qm2.StoreAnswer(answer));
        }
示例#7
0
        /// <summary>
        /// Set features based on existence of data.  This is used for assessments that were
        /// created prior to incorporating features into the assessment data model.
        /// </summary>
        /// <param name="assessment"></param>
        private void DetermineFeaturesFromData(ref AssessmentDetail assessment, CSET_Context db)
        {
            var a = assessment;

            if (db.AVAILABLE_STANDARDS.Any(x => x.Assessment_Id == a.Id))
            {
                assessment.UseStandard = true;
            }


            if (db.ASSESSMENT_DIAGRAM_COMPONENTS.Any(x => x.Assessment_Id == a.Id))
            {
                BusinessManagers.DiagramManager dm = new BusinessManagers.DiagramManager(db);
                assessment.UseDiagram = dm.HasDiagram(a.Id);
            }


            // determine if there are maturity answers and attach maturity models
            var maturityAnswers = db.ANSWER.Where(x => x.Assessment_Id == a.Id && x.Question_Type.ToLower() == "maturity").ToList();

            if (maturityAnswers.Count > 0)
            {
                assessment.UseMaturity = true;

                if (!db.AVAILABLE_MATURITY_MODELS.Any(x => x.Assessment_Id == a.Id))
                {
                    // determine the maturity models represented by the questions that have been answered
                    var qqq = db.MATURITY_QUESTIONS.Where(q => maturityAnswers.Select(x => x.Question_Or_Requirement_Id).Contains(q.Mat_Question_Id)).ToList();
                    var maturityModelIds = qqq.Select(x => x.Maturity_Model_Id).Distinct().ToList();
                    foreach (var modelId in maturityModelIds)
                    {
                        var mm = new AVAILABLE_MATURITY_MODELS()
                        {
                            Assessment_Id = a.Id,
                            model_id      = modelId,
                            Selected      = true
                        };

                        db.AVAILABLE_MATURITY_MODELS.Add(mm);
                        db.SaveChanges();

                        // get the newly-attached model for the response
                        var mmm = new MaturityManager();
                        assessment.MaturityModel = mmm.GetMaturityModel(a.Id);
                    }
                }
            }

            SaveAssessmentDetail(a.Id, assessment);
        }
示例#8
0
        public IHttpActionResult GetReferenceText(string model)
        {
            try
            {
                var maturityManager = new MaturityManager();
                var refText         = maturityManager.GetReferenceText(model);

                return(Ok(refText));
            }
            catch (Exception ex)
            {
                return(BadRequest());
            }
        }
示例#9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="stream"></param>
        public DataTable BuildAssessment(int assessmentID)
        {
            var assess = db.ASSESSMENTS
                         .Include(x => x.INFORMATION)
                         .Where(x => x.Assessment_Id == assessmentID)
                         .FirstOrDefault();

            if (assess == null)
            {
                return(null);
            }

            // A few helper classes gather data
            ACETDashboardManager dm = new ACETDashboardManager();
            var acetDashboard       = dm.LoadDashboard(assessmentID);

            MaturityManager manager = new MaturityManager();

            var maturityDomains = manager.GetMaturityAnswers(assessmentID);


            // Build the row for the assessment
            var export = new SingleRowExport();

            export.d["Version"] = db.CSET_VERSION.FirstOrDefault().Cset_Version1;

            export.d["Assessment Name"] = assess.INFORMATION.Assessment_Name;
            export.d["CU Name"]         = acetDashboard.CreditUnionName;
            export.d["CU #"]            = acetDashboard.Charter;
            export.d["Assets"]          = acetDashboard.Assets;
            export.d["Hours"]           = acetDashboard.Hours.ToString();

            var fav  = db.FINANCIAL_ASSESSMENT_VALUES.Where(x => x.Assessment_Id == assessmentID).ToList();
            var fav1 = fav.Where(n => n.AttributeName == "Credit Union Completed ACET for Exam").FirstOrDefault();
            var fav2 = fav.Where(n => n.AttributeName == "Credit Union Completed CAT or ACET Prior to Exam (Self-Initiated)").FirstOrDefault();

            export.d["CU ACET for EX"] = (fav1 != null) ? fav1.AttributeValue : "";
            export.d["CU Self ACET"]   = (fav2 != null) ? fav2.AttributeValue : "";

            ProcessHours(assessmentID, ref export);

            ProcessIRP(assessmentID, acetDashboard, ref export);

            ProcessMaturity(acetDashboard, maturityDomains, ref export);

            ProcessStatementAnswers(assessmentID, ref export);

            return(export.ToDataTable());
        }
示例#10
0
        public IHttpActionResult GetEdmScores()
        {
            try
            {
                int             assessmentId    = Auth.AssessmentForUser();
                MaturityManager maturityManager = new MaturityManager();
                var             scores          = maturityManager.GetEdmScores(assessmentId);

                return(Ok(scores));
            }
            catch (Exception ex)
            {
                return(BadRequest());
            }
        }
示例#11
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);
        }
示例#12
0
        /// <summary>
        /// Persists data to the ASSESSMENTS and INFORMATION tables.
        /// Date fields should be converted to UTC before sending the Assessment
        /// to this method.
        /// </summary>
        /// <param name="assessment"></param>
        /// <returns></returns>
        public int SaveAssessmentDetail(int assessmentId, AssessmentDetail assessment)
        {
            using (var db = new DataLayerCore.Model.CSET_Context())
            {
                TokenManager tm       = new TokenManager();
                string       app_code = tm.Payload(Constants.Token_Scope);

                // Add or update the ASSESSMENTS record
                var dbAssessment = db.ASSESSMENTS.Where(x => x.Assessment_Id == assessmentId).FirstOrDefault();

                if (dbAssessment == null)
                {
                    dbAssessment = new ASSESSMENTS();
                    db.ASSESSMENTS.Add(dbAssessment);
                    db.SaveChanges();
                    assessmentId = dbAssessment.Assessment_Id;
                }

                dbAssessment.Assessment_Id         = assessmentId;
                dbAssessment.AssessmentCreatedDate = assessment.CreatedDate;
                dbAssessment.AssessmentCreatorId   = assessment.CreatorId;
                dbAssessment.Assessment_Date       = assessment.AssessmentDate ?? DateTime.Now;
                dbAssessment.LastAccessedDate      = assessment.LastModifiedDate;

                dbAssessment.UseDiagram  = assessment.UseDiagram;
                dbAssessment.UseMaturity = assessment.UseMaturity;
                dbAssessment.UseStandard = assessment.UseStandard;

                dbAssessment.Charter                  = string.IsNullOrEmpty(assessment.Charter) ? "00000" : assessment.Charter.PadLeft(5, '0');
                dbAssessment.CreditUnionName          = assessment.CreditUnion;
                dbAssessment.Assets                   = assessment.Assets;
                dbAssessment.MatDetail_targetBandOnly = (app_code == "ACET");

                dbAssessment.Diagram_Markup = assessment.DiagramMarkup;
                dbAssessment.Diagram_Image  = assessment.DiagramImage;
                dbAssessment.AnalyzeDiagram = false;

                db.ASSESSMENTS.AddOrUpdate(dbAssessment, x => x.Assessment_Id);
                db.SaveChanges();


                var user = db.USERS.FirstOrDefault(x => x.UserId == dbAssessment.AssessmentCreatorId);


                var dbInformation = db.INFORMATION.Where(x => x.Id == assessmentId).FirstOrDefault();
                if (dbInformation == null)
                {
                    dbInformation = new INFORMATION()
                    {
                        Id = assessmentId
                    };
                }

                if (app_code == "ACET")
                {
                    var creditUnion = string.IsNullOrEmpty(assessment.CreditUnion)
                        ? string.Empty
                        : assessment.CreditUnion + " ";
                    assessment.AssessmentName =
                        app_code + " " + dbAssessment.Charter + " " + creditUnion + dbAssessment.Assessment_Date.ToString("MMddyy");
                }

                // add or update the INFORMATION record
                dbInformation.Assessment_Name               = assessment.AssessmentName;
                dbInformation.Facility_Name                 = assessment.FacilityName;
                dbInformation.City_Or_Site_Name             = assessment.CityOrSiteName;
                dbInformation.State_Province_Or_Region      = assessment.StateProvRegion;
                dbInformation.Executive_Summary             = assessment.ExecutiveSummary;
                dbInformation.Assessment_Description        = assessment.AssessmentDescription;
                dbInformation.Additional_Notes_And_Comments = assessment.AdditionalNotesAndComments;
                dbInformation.IsAcetOnly = assessment.IsAcetOnly;

                db.INFORMATION.AddOrUpdate(dbInformation, x => x.Id);
                db.SaveChanges();


                // persist maturity data
                var mm = new MaturityManager();
                if (assessment.UseMaturity)
                {
                    mm.PersistSelectedMaturityModel(assessmentId, assessment.MaturityModel?.ModelName);
                }
                else
                {
                    mm.ClearMaturityModel(assessmentId);
                }

                AssessmentUtil.TouchAssessment(assessmentId);

                return(assessmentId);
            }
        }
示例#13
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);
        }
示例#14
0
        public List <GlossaryEntry> GetGlossaryEntries(string model)
        {
            MaturityManager maturityManager = new MaturityManager();

            return(maturityManager.GetGlossaryEntries(model));
        }