/// <summary>
        /// 错题详情vm
        /// </summary>
        /// <param name="wrongSubjectId"></param>
        /// <returns></returns>
        public ActionResult WrongDetailVm(int wrongSubjectId)
        {
            StudentWrongBookBll wrongBookBll = new StudentWrongBookBll();
            KnowledgeBll        knowledgeBll = new KnowledgeBll();
            Tuple <StudentAnswerBase, Yw_SubjectContent, Yw_Subject, Yw_StudentWrongSubject> wrongSubjectVm = wrongBookBll.GetWorngSubjectVm(GetCurrentUser().StudentId, wrongSubjectId);

            if (wrongSubjectVm == null)
            {
                return(SimpleResult(false));
            }
            WrongSubjectVm vm = new WrongSubjectVm();

            if (wrongSubjectVm.Item1.KnowledgeId > 0)
            {
                vm.KnowledgeInfo = knowledgeBll.GetMediaByKnowledgeId(wrongSubjectVm.Item1.KnowledgeId);
            }
            vm.Report = SubjectReportVmFactory.Create(wrongSubjectVm.Item2, wrongSubjectVm.Item1, wrongSubjectVm.Item3);
            return(Json(new SuccessJsonResponse(vm), JsonRequestBehavior.AllowGet));
        }
        public ActionResult GetSubjectsToPractice(int taskId, int pageIndex)
        {
            StudentReportBll bll = new StudentReportBll();
            var answer           = bll.GetReportSubject(GetCurrentUser().StudentId, taskId, pageIndex);

            List <ReportVm> vms = new List <ReportVm>();

            for (int i = 0; i < answer.Item1.Count; i++)
            {
                StudentAnswerBase answerobj = answer.Item1[i];
                if (answer.Item2.ContainsKey(answerobj.SubjectId) && answer.Item3.ContainsKey(answerobj.SubjectId))
                {
                    vms.Add(SubjectReportVmFactory.Create(answer.Item2[answerobj.SubjectId], answer.Item1[i], answer.Item3[answerobj.SubjectId]));
                }
            }
            return(Json(new PageJsonResponse <List <ReportVm> >()
            {
                Data = vms, PageSize = answer.Item4, TotalCount = answer.Item5
            }, JsonRequestBehavior.AllowGet));
        }