/// <summary> /// 统计我的考卷 /// </summary> /// <returns></returns> public ExamStatistics StatisticsForExams() { var exams = ExamUsersAccessor.GetListFor(ID); var result = new ExamStatistics(); //总数 result.TotalExams = exams.Count(); result.TotalReviewed = exams.Where(p => p.MarkingStatus == (int)ExamMarkingStatus.READED).Count(); result.TotalWaitReview = exams.Where(p => p.PostTime.HasValue && p.MarkingStatus == (int)ExamMarkingStatus.DIDNOT_READ).Count(); return(result); }
public async Task AddOrUpdateAsync(ExamStatistics examStatistics) { if (examStatistics.ExamId == default) { return; } var filter = Builders <ExamStatistics> .Filter.Eq(x => x.ExamId, examStatistics.ExamId); await _context.ExamStatistics.DeleteManyAsync(filter); await _context.ExamStatistics.InsertOneAsync(examStatistics); }
public SchoolResult( ExamStatistics examStatistics, IEnumerable <StudentOpticalForm> forms, IEnumerable <StudentOpticalFormSection> sections) { var form = forms.First(); ExamId = form.ExamId; SchoolId = form.SchoolId; SchoolName = form.SchoolName; CityId = form.CityId; CityName = form.CityName; DistrictId = form.DistrictId; DistrictName = form.DistrictName; ScoreAverage = examStatistics.SchoolAverageScores[form.SchoolId]; StudentCount = examStatistics.SchoolAttendanceCounts[form.SchoolId]; CreatedOnUtc = DateTime.UtcNow; ClassroomCount = forms.Select(f => f.ClassroomId).Distinct().Count(); SuccessPercent = forms.Average(f => f.SuccessPercent); Sections = sections .Select(s => new SchoolResultSection() { LessonName = s.LessonName, CityAverageNet = examStatistics.SectionAverages[s.LessonName.GetDeterministicHashCode().ToString()] .CityNets[form.CityId], CorrectCount = examStatistics.SectionAverages[s.LessonName.GetDeterministicHashCode().ToString()] .SchoolCorrectCounts[form.SchoolId], DistrictAverageNet = examStatistics.SectionAverages[s.LessonName.GetDeterministicHashCode().ToString()] .DistrictNets[form.DistrictId], EmptyCount = examStatistics.SectionAverages[s.LessonName.GetDeterministicHashCode().ToString()] .SchoolEmptyCounts[form.SchoolId], GeneralAverageNet = examStatistics.SectionAverages[s.LessonName.GetDeterministicHashCode().ToString()] .GeneralNet, Net = examStatistics.SectionAverages[s.LessonName.GetDeterministicHashCode().ToString()] .SchoolNets[form.SchoolId], WrongCount = examStatistics.SectionAverages[s.LessonName.GetDeterministicHashCode().ToString()] .SchoolWrongCounts[form.SchoolId], QuestionCount = (int)(examStatistics.SectionAverages[s.LessonName.GetDeterministicHashCode().ToString()] .SchoolWrongCounts[form.SchoolId] + examStatistics.SectionAverages[s.LessonName.GetDeterministicHashCode().ToString()] .SchoolCorrectCounts[form.SchoolId] + examStatistics.SectionAverages[s.LessonName.GetDeterministicHashCode().ToString()] .SchoolEmptyCounts[form.SchoolId]), SuccessPercent = examStatistics.SectionAverages[s.LessonName.GetDeterministicHashCode().ToString()] .SchoolSuccessPercents[form.SchoolId], }) .ToList(); }
public ExamStatistics getSpecifiedExamStatistics(Int64 examId) { ExamStatistics examStatistics = new ExamStatistics(); DateGraphPoint[] dateGraphPoints = null; using (var context = new ExamsDBContext()) { var basicStatsQuery = from examPercentage in context.PassedPercentage join examFlawless in context.FlawlessView on examPercentage.ExamId equals examFlawless.ExamId into tmpMap from examFlawless in tmpMap.DefaultIfEmpty() where examPercentage.ExamId == examId select new { flawlessDate = examFlawless.FlawlessDate, passedPercentage = examPercentage.PassedPercentage1 }; var graphStatsQuery = from graphStats in context.TakenCountByDate where graphStats.ExamId == examId select graphStats; var basicStatsList = basicStatsQuery.ToList(); var graphStatsList = graphStatsQuery.ToList(); if (basicStatsList.Count > 0) { examStatistics.firstTimeFlawless = basicStatsList[0].flawlessDate ?? DateTime.MinValue; examStatistics.passedPercentage = (float)(basicStatsList[0].passedPercentage ?? 0); } dateGraphPoints = new DateGraphPoint[graphStatsQuery.Count()]; for (int i = 0; i < graphStatsList.Count; ++i) { dateGraphPoints[i] = new DateGraphPoint(graphStatsList[i].DateCreated ?? DateTime.MinValue, graphStatsList[i].TakenCount ?? 0); } examStatistics.takenGraph = dateGraphPoints; return(examStatistics); } }
public IEnumerable <SchoolResult> EvaluateSchoolResults( ExamStatistics examStatistics, IEnumerable <StudentOpticalForm> forms) { var sections = forms .OrderByDescending(f => f.Sections.Count) .First() .Sections; var results = forms.GroupBy( f => f.SchoolId, f => f, (schoolId, fs) => new SchoolResult(examStatistics, fs, sections)).ToList(); var orderList = new SchoolOrderList(results, r => r.ScoreAverage); var sectionOrderList = new Dictionary <string, SchoolOrderList>(); for (var i = 0; i < sections.Count; i++) { var index = i; sectionOrderList.Add(sections[i].LessonName, new SchoolOrderList(results, r => r.Sections[index].Net)); } foreach (var result in results) { result.CityOrder = orderList.GetCityOrder(result); result.DistrictOrder = orderList.GetDistrictOrder(result); result.GeneralOrder = orderList.GetGeneralOrder(result); foreach (var section in result.Sections) { section.CityOrder = sectionOrderList[section.LessonName].GetCityOrder(result); section.DistrictOrder = sectionOrderList[section.LessonName].GetDistrictOrder(result); section.GeneralOrder = sectionOrderList[section.LessonName].GetGeneralOrder(result); } } return(results); }