private async Task <bool> SendSubmissionResultsToQueue(XQueueClient client, XQueueExerciseSubmission submission) { return(await FuncUtils.TrySeveralTimesAsync( () => TrySendSubmissionResultsToQueue(client, submission), 5, () => Task.Delay(TimeSpan.FromMilliseconds(1)))); }
public async Task MarkXQueueSubmissionThatResultIsSent(XQueueExerciseSubmission submission) { submission.IsResultSent = true; await db.SaveChangesAsync(); }
private async Task <bool> TrySendSubmissionResultsToQueue(XQueueClient client, XQueueExerciseSubmission submission) { var checking = submission.Submission.AutomaticChecking; var courseManager = WebCourseManager.Instance; var slide = courseManager.FindCourse(checking.CourseId)?.FindSlideById(checking.SlideId) as ExerciseSlide; if (slide == null) { log.Warn($"Can't find exercise slide {checking.SlideId} in course {checking.CourseId}. Exit"); return(false); } var score = (double)checking.Score / slide.Scoring.PassedTestsScore; if (score > 1) { score = 1; } var message = checking.IsCompilationError ? checking.CompilationError.Text : checking.Output.Text; return(await client.PutResult(new XQueueResult { header = submission.XQueueHeader, Body = new XQueueResultBody { IsCorrect = checking.IsRightAnswer, Message = message, Score = score, } }).ConfigureAwait(false)); }
private async Task <bool> TrySendSubmissionResultsToQueue(XQueueClient client, XQueueExerciseSubmission submission) { var checking = submission.Submission.AutomaticChecking; var slide = (await courseManager.FindCourseAsync(checking.CourseId))?.FindSlideById(checking.SlideId, true) as ExerciseSlide; if (slide == null) { log.Warn($"Can't find exercise slide {checking.SlideId} in course {checking.CourseId}. Exit"); return(false); } var score = checking.IsRightAnswer ? 1 : 0; var message = checking.IsCompilationError ? checking.CompilationError.Text : checking.Output.Text; return(await client.PutResult(new XQueueResult { header = submission.XQueueHeader, Body = new XQueueResultBody { IsCorrect = checking.IsRightAnswer, Message = message, Score = score, } })); }