public async Task <IActionResult> JoinAndEvaluateAsync( [FromQuery] int primaryExamId, [FromQuery] int secondaryExamId) { var primaryExamForms = await _studentOpticalFormRepository.GetStudentOpticalFormsByExamIdAsync(primaryExamId); var secondaryExamForms = await _studentOpticalFormRepository.GetStudentOpticalFormsByExamIdAsync(secondaryExamId); var combinedExamForms = _evaluator.JoinSets(primaryExamForms, secondaryExamForms); var answerKeyOpticalForms = await _answerKeyOpticalFormRepository.GetByExamIdAsync(primaryExamId); var forms = _evaluator.Evaluate(answerKeyOpticalForms.ToList(), combinedExamForms.ToList()) .ToList(); return(Ok(new JoinResult() { ExamStatistics = StatisticsCalculator.Calculate(forms), Forms = forms, })); }
private async Task RunAsync(int examId) { var answerKeyForms = await _answerKeyOpticalFormRepository.GetByExamIdAsync(examId); var studentForms = await _studentOpticalFormRepository.GetStudentOpticalFormsByExamIdAsync(examId); studentForms = _evaluator.Evaluate(answerKeyForms, studentForms).ToList(); await _studentOpticalFormRepository.AddOrUpdateManyAsync(studentForms); var examStatistics = StatisticsCalculator.Calculate(studentForms); await _examStatisticsRepository.AddOrUpdateAsync(examStatistics); _logger.LogInformation($"Evaluation for exam {examId} ended..."); if (answerKeyForms.First().SharedExam) { var results = _evaluator.EvaluateSchoolResults(examStatistics, studentForms); await _schoolResultRepository.AddOrUpdateManyAsync(results); } }
public async Task <IActionResult> GetAnswerKeyFormsAsync(int examId) { return(Ok(await _answerKeyOpticalFormRepository.GetByExamIdAsync(examId))); }