Beispiel #1
0
        public MaturityReportDetailData GetRRADetailReport()
        {
            int assessmentId = Auth.AssessmentForUser();

            using (CSET_Context context = new CSET_Context())
            {
                context.FillEmptyMaturityQuestionsForAnalysis(assessmentId);

                RRASummary summary            = new RRASummary(context);
                MaturityReportDetailData data = new MaturityReportDetailData();
                data.RRASummaryOverall       = summary.getSummaryOverall(context, assessmentId);
                data.RRASummary              = summary.getRRASummary(context, assessmentId);
                data.RRASummaryByGoal        = summary.getRRASummaryByGoal(context, assessmentId);
                data.RRASummaryByGoalOverall = summary.getRRASummaryByGoalOverall(context, assessmentId);
                return(data);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Assembles a response consisting of maturity settings for the assessment
        /// as well as the question set in its hierarchy of domains, practices, etc.
        /// </summary>
        /// <param name="assessmentId"></param>
        public MaturityResponse GetMaturityQuestions(int assessmentId, bool isAcetInstallation, bool fill)
        {
            var response = new MaturityResponse();

            using (var db = new CSET_Context())
            {
                if (fill)
                {
                    db.FillEmptyMaturityQuestionsForAnalysis(assessmentId);
                }

                var myModel = ProcessModelDefaults(db, assessmentId, isAcetInstallation);


                var myModelDefinition = db.MATURITY_MODELS.Where(x => x.Maturity_Model_Id == myModel.model_id).FirstOrDefault();

                if (myModelDefinition == null)
                {
                    return(response);
                }


                response.ModelName = myModelDefinition.Model_Name;

                response.QuestionsAlias = myModelDefinition.Questions_Alias ?? "Questions";


                if (myModelDefinition.Answer_Options != null)
                {
                    response.AnswerOptions = myModelDefinition.Answer_Options.Split(',').ToList();
                    response.AnswerOptions.ForEach(x => x = x.Trim());
                }


                response.MaturityTargetLevel = this.GetMaturityTargetLevel(assessmentId, db);

                if (response.ModelName == "ACET")
                {
                    response.OverallIRP          = new ACETDashboardManager().GetOverallIrpNumber(assessmentId);
                    response.MaturityTargetLevel = response.OverallIRP;
                }


                // get the levels and their display names for this model
                response.Levels = this.GetMaturityLevelsForModel(myModel.model_id, response.MaturityTargetLevel, db);



                // Get all maturity questions for the model regardless of level.
                // The user may choose to see questions above the target level via filtering.
                var questions = db.MATURITY_QUESTIONS
                                .Include(x => x.Maturity_LevelNavigation)
                                .Where(q =>
                                       myModel.model_id == q.Maturity_Model_Id).ToList();


                // Get all MATURITY answers for the assessment
                var answers = from a in db.ANSWER.Where(x => x.Assessment_Id == assessmentId && x.Question_Type == "Maturity")
                              from b in db.VIEW_QUESTIONS_STATUS.Where(x => x.Answer_Id == a.Answer_Id).DefaultIfEmpty()
                              select new FullAnswer()
                {
                    a = a, b = b
                };


                // Get all subgroupings for this maturity model
                var allGroupings = db.MATURITY_GROUPINGS
                                   .Include(x => x.Type)
                                   .Where(x => x.Maturity_Model_Id == myModel.model_id).ToList();


                // Recursively build the grouping/question hierarchy
                var tempModel = new MaturityGrouping();
                BuildSubGroupings(tempModel, null, allGroupings, questions, answers.ToList());

                //GRAB all the domain remarks and assign them if necessary
                Dictionary <int, MATURITY_DOMAIN_REMARKS> domainRemarks =
                    db.MATURITY_DOMAIN_REMARKS.Where(x => x.Assessment_Id == assessmentId)
                    .ToDictionary(x => x.Grouping_ID, x => x);
                foreach (MaturityGrouping g in tempModel.SubGroupings)
                {
                    MATURITY_DOMAIN_REMARKS dm;
                    if (domainRemarks.TryGetValue(g.GroupingID, out dm))
                    {
                        g.DomainRemark = dm.DomainRemarks;
                    }
                }

                response.Groupings = tempModel.SubGroupings;


                // Add any glossary terms
                response.Glossary = this.GetGlossaryEntries(myModel.model_id);
            }

            return(response);
        }
Beispiel #3
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        ///
        public List <MaturityReportData.MaturityModel> getMaturityModelData()
        {
            List <MaturityReportData.MaturityQuestion> mat_questions = new List <MaturityReportData.MaturityQuestion>();
            List <MaturityReportData.MaturityModel>    mat_models    = new List <MaturityReportData.MaturityModel>();

            using (var db = new CSET_Context())
            {
                db.FillEmptyMaturityQuestionsForAnalysis(assessmentID);

                var query = (
                    from amm in db.AVAILABLE_MATURITY_MODELS
                    join mm in db.MATURITY_MODELS on amm.model_id equals mm.Maturity_Model_Id
                    join mq in db.MATURITY_QUESTIONS on mm.Maturity_Model_Id equals mq.Maturity_Model_Id
                    join ans in db.ANSWER on mq.Mat_Question_Id equals ans.Question_Or_Requirement_Id
                    join asl in db.ASSESSMENT_SELECTED_LEVELS on amm.Assessment_Id equals asl.Assessment_Id
                    where amm.Assessment_Id == assessmentID &&
                    ans.Assessment_Id == assessmentID &&
                    ans.Is_Maturity == true &&
                    asl.Level_Name == "Maturity_Level"
                    select new { amm, mm, mq, ans, asl }
                    ).ToList();
                var models = query.Select(x => new { x.mm, x.asl }).Distinct();
                foreach (var model in models)
                {
                    MaturityReportData.MaturityModel newModel = new MaturityReportData.MaturityModel();
                    newModel.MaturityModelName = model.mm.Model_Name;
                    newModel.MaturityModelID   = model.mm.Maturity_Model_Id;
                    if (Int32.TryParse(model.asl.Standard_Specific_Sal_Level, out int lvl))
                    {
                        newModel.TargetLevel = lvl;
                    }
                    else
                    {
                        newModel.TargetLevel = null;
                    }
                    mat_models.Add(newModel);
                }

                foreach (var queryItem in query)
                {
                    MaturityReportData.MaturityQuestion newQuestion = new MaturityReportData.MaturityQuestion();
                    newQuestion.Mat_Question_Id   = queryItem.mq.Mat_Question_Id;
                    newQuestion.Question_Title    = queryItem.mq.Question_Title;
                    newQuestion.Question_Text     = queryItem.mq.Question_Text;
                    newQuestion.Supplemental_Info = queryItem.mq.Supplemental_Info;
                    newQuestion.Category          = queryItem.mq.Category;
                    newQuestion.Sub_Category      = queryItem.mq.Sub_Category;
                    newQuestion.Maturity_Level    = queryItem.mq.Maturity_Level;
                    newQuestion.Set_Name          = queryItem.mm.Model_Name;
                    newQuestion.Sequence          = queryItem.mq.Sequence;
                    //newQuestion.Text_Hash = queryItem.mq.Text_Hash;
                    newQuestion.Maturity_Model_Id = queryItem.mm.Maturity_Model_Id;
                    newQuestion.Answer            = queryItem.ans;

                    mat_models.Where(x => x.MaturityModelID == newQuestion.Maturity_Model_Id)
                    .FirstOrDefault()
                    .MaturityQuestions.Add(newQuestion);

                    mat_questions.Add(newQuestion);
                }
                return(mat_models);
            }
        }