public async Task ProcessResult(ULearnDb db, UserExerciseSubmission submission, RunningResults result) { if (!isEnabled) { return; } if (result.Verdict != Verdict.Ok) { return; } /* Send to antiplagiarism service only accepted submissions */ var checking = submission.AutomaticChecking; if (!checking.IsRightAnswer) { return; } var parameters = new AddSubmissionParameters { TaskId = submission.SlideId, Language = AntiPlagiarism.Api.Models.Language.CSharp, Code = submission.SolutionCode.Text, AuthorId = Guid.Parse(submission.UserId), AdditionalInfo = new AntiPlagiarismAdditionalInfo { SubmissionId = submission.Id }.ToJsonString(), }; antiPlagiarismClient.AddSubmissionAsync(parameters).ConfigureAwait(false).GetAwaiter().OnCompleted(() => { }); }
public async Task ProcessResult(UserExerciseSubmission submission, RunningResults result) { if (!isEnabled) { return; } if (result.Verdict != Verdict.Ok) { return; } /* Send to antiplagiarism service only accepted submissions */ var checking = submission.AutomaticChecking; if (!checking.IsRightAnswer) { return; } var parameters = new AddSubmissionParameters { TaskId = submission.SlideId, Language = submission.Language, Code = submission.SolutionCode.Text, AuthorId = Guid.Parse(submission.UserId), AdditionalInfo = JsonConvert.SerializeObject(new AntiPlagiarismAdditionalInfo { SubmissionId = submission.Id }), ClientSubmissionId = submission.Id.ToString() }; await antiPlagiarismClient.AddSubmissionAsync(parameters).ConfigureAwait(false); }
public async Task <IActionResult> AddSubmission(AddSubmissionParameters parameters) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (parameters.Code.Length > configuration.MaxCodeLength) { return(Json(ApiError.Create($"Code is too long. Maximum length is {configuration.MaxCodeLength} bytes"))); } var tokensCount = GetTokensCount(parameters.Code); var submission = await submissionsRepo.AddSubmissionAsync( client.Id, parameters.TaskId, parameters.AuthorId, parameters.Language, parameters.Code, tokensCount, parameters.AdditionalInfo ); logger.Information( "Добавлено новое решение {submissionId} по задаче {taskId}, автор {authorId}, язык {language}, доп. информация {additionalInfo}", submission.Id, parameters.TaskId, parameters.AuthorId, parameters.Language, parameters.AdditionalInfo ); await ExtractSnippetsFromSubmissionAsync(submission); if (await NeedToRecalculateTaskStatistics(client.Id, submission.TaskId)) { await CalculateTaskStatisticsParametersAsync(client.Id, submission.TaskId); } return(Json(new AddSubmissionResult { SubmissionId = submission.Id, })); }
public async Task ProcessResult(ULearnDb db, UserExerciseSubmission submission, RunningResults result) { if (!isEnabled) { return; } if (result.Verdict != Verdict.Ok) { return; } /* Send to antiplagiarism service only accepted submissions */ var checking = submission.AutomaticChecking; if (!checking.IsRightAnswer) { return; } var parameters = new AddSubmissionParameters { TaskId = submission.SlideId, Language = AntiPlagiarism.Api.Models.Language.CSharp, Code = submission.SolutionCode.Text, AuthorId = Guid.Parse(submission.UserId), AdditionalInfo = new AntiPlagiarismAdditionalInfo { SubmissionId = submission.Id }.ToJsonString(), }; var antiPlagiarismResult = await antiPlagiarismClient.AddSubmissionAsync(parameters).ConfigureAwait(false); log.Info($"Получил ответ от сервиса антиплагиата: {antiPlagiarismResult}"); var userSolutionsRepo = new UserSolutionsRepo(db, WebCourseManager.Instance); await userSolutionsRepo.SetAntiPlagiarismSubmissionId(submission, antiPlagiarismResult.SubmissionId).ConfigureAwait(false); }
public async Task <ActionResult <AddSubmissionResponse> > AddSubmission([FromQuery] string token, AddSubmissionParameters parameters) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (parameters.Code.Length > configuration.AntiPlagiarism.MaxCodeLength) { return(BadRequest(new ErrorResponse($"Code is too long. Maximum length is {configuration.AntiPlagiarism.MaxCodeLength} bytes"))); } var tokensCount = GetTokensCount(parameters.Code, parameters.Language); var submission = await submissionsRepo.AddSubmissionAsync( client.Id, parameters.TaskId, parameters.AuthorId, parameters.Language, parameters.Code, tokensCount, parameters.AdditionalInfo, parameters.ClientSubmissionId ).ConfigureAwait(false); log.Info( "Добавлено новое решение {submissionId} по задаче {taskId}, автор {authorId}, язык {language}, доп. информация {additionalInfo}", submission.Id, parameters.TaskId, parameters.AuthorId, parameters.Language, parameters.AdditionalInfo ); await workQueueRepo.Add(QueueIds.NewSubmissionsQueue, submission.Id.ToString()).ConfigureAwait(false); return(new AddSubmissionResponse { SubmissionId = submission.Id, }); }
public Task <AddSubmissionResponse> AddSubmissionAsync(AddSubmissionParameters parameters) { return(MakeRequestAsync <AddSubmissionParameters, AddSubmissionResponse>(HttpMethod.Post, Urls.AddSubmission, parameters)); }
public Task <AddSubmissionResult> AddSubmissionAsync(AddSubmissionParameters parameters) { return(MakeRequestAsync <AddSubmissionParameters, AddSubmissionResult>(Urls.AddSubmission, parameters, HttpMethod.Post)); }