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); } }
/// <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); }
/// <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); } }