Exemplo n.º 1
0
 public IActionResult GetCorrectAnswerReport([FromBody] CorrectAnswerRequest request)
 {
     if (!ModelState.IsValid)
     {
         return(BadRequest(ModelState));
     }
     return(Ok(_reportManager.BuildAnswerReport(request)));
 }
Exemplo n.º 2
0
        public CorrectAnswerReport BuildAnswerReport(CorrectAnswerRequest request)
        {
            IEnumerable <AnsweredDateResult> answeredResults = _context.Answers
                                                               .Where(x => x.SubmitedDate <= request.ToDate.ToUniversalTime() && x.SubmitedDate >= request.FromDate.ToUniversalTime())
                                                               .Where(x => x.Exercise.LearningObjective.Domain.Subject.Name == request.Subject)
                                                               .Where(x => string.IsNullOrEmpty(request.Domain) || x.Exercise.LearningObjective.Domain.Name == request.Domain)
                                                               .Where(x => string.IsNullOrEmpty(request.LearningObjective) || x.Exercise.LearningObjective.Name == request.LearningObjective)
                                                               .GroupBy(x => x.SubmitedDate.Date)
                                                               .Select(group => new AnsweredDateResult()
            {
                CorrectCount   = group.Count(x => x.Correct),
                IncorrectCount = group.Count(x => !x.Correct),
                AnsweredDate   = group.Key
            }).ToList();

            return(new CorrectAnswerReport()
            {
                AnsweredDateResults = answeredResults,
                MaxAnsweredCount = answeredResults.Select(x => x.CorrectCount + x.IncorrectCount)
                                   .DefaultIfEmpty(0)
                                   .Max()
            });
        }