Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public List <BasicReportData.RequirementControl> GetControls()
        {
            List <BasicReportData.RequirementControl> controls = new List <BasicReportData.RequirementControl>();

            using (var db = new CSET_Context())
            {
                db.FillEmptyQuestionsForAnalysis(_assessmentId);

                var q = (from rs in db.REQUIREMENT_SETS
                         join r in db.NEW_REQUIREMENT on rs.Requirement_Id equals r.Requirement_Id
                         join rl in db.REQUIREMENT_LEVELS on r.Requirement_Id equals rl.Requirement_Id
                         join s in db.SETS on rs.Set_Name equals s.Set_Name
                         join av in db.AVAILABLE_STANDARDS on s.Set_Name equals av.Set_Name
                         join rqs in db.REQUIREMENT_QUESTIONS_SETS on new { r.Requirement_Id, s.Set_Name } equals new { rqs.Requirement_Id, rqs.Set_Name }
                         join qu in db.NEW_QUESTION on rqs.Question_Id equals qu.Question_Id
                         join a in db.Answer_Questions_No_Components on qu.Question_Id equals a.Question_Or_Requirement_Id
                         where rl.Standard_Level == _standardLevel && av.Selected == true && rl.Level_Type == "NST" &&
                         av.Assessment_Id == _assessmentId && a.Assessment_Id == _assessmentId
                         orderby r.Standard_Category, r.Standard_Sub_Category, rs.Requirement_Sequence
                         select new { r, rs, rl, s, qu, a }).ToList();

                //get all the questions for this control
                //determine the percent implemented.
                int prev_requirement_id = 0;
                int questionCount       = 0;
                int questionsAnswered   = 0;
                BasicReportData.RequirementControl       control   = null;
                List <BasicReportData.Control_Questions> questions = null;
                foreach (var a in q.ToList())
                {
                    double implementationstatus = 0;
                    if (prev_requirement_id != a.r.Requirement_Id)
                    {
                        questionCount     = 0;
                        questionsAnswered = 0;
                        questions         = new List <BasicReportData.Control_Questions>();
                        control           = new BasicReportData.RequirementControl()
                        {
                            ControlDescription = a.r.Requirement_Text,
                            RequirementTitle   = a.r.Requirement_Title,
                            Level             = a.rl.Standard_Level,
                            StandardShortName = a.s.Short_Name,
                            Standard_Category = a.r.Standard_Category,
                            SubCategory       = a.r.Standard_Sub_Category,
                            Control_Questions = questions
                        };
                        controls.Add(control);
                    }
                    questionCount++;

                    switch (a.a.Answer_Text)
                    {
                    case Constants.ALTERNATE:
                    case Constants.YES:
                        questionsAnswered++;
                        break;
                    }

                    questions.Add(new BasicReportData.Control_Questions()
                    {
                        Answer          = a.a.Answer_Text,
                        Comment         = a.a.Comment,
                        Simple_Question = a.qu.Simple_Question
                    });

                    control.ImplementationStatus = StatUtils.Percentagize(questionsAnswered, questionCount, 2).ToString("##.##");
                    prev_requirement_id          = a.r.Requirement_Id;
                }
            }
            return(controls);
        }