Пример #1
0
        /// <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);
        }
Пример #3
0
        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();
        }
Пример #4
0
        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);
            }
        }
Пример #5
0
        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);
        }