public async Task <JsonResult> Post(int id, [FromBody] UpdateQuizAttemptStatus data) { var result = await quizAttemptManager.UpdateStatus(Token.UserId, id, data); return (result.Result == UpdateQuizAttemptStatusResult.Success ? ControllerHelper.CreateResponse(result.Attempt) : result.Result == UpdateQuizAttemptStatusResult.NotAuthorized ? ControllerHelper.CreateErrorResponse(HttpStatusCode.Unauthorized, "Unauthorized") : result.Result == UpdateQuizAttemptStatusResult.StatusError ? ControllerHelper.CreateErrorResponse(HttpStatusCode.Conflict, "StatusError") : result.Result == UpdateQuizAttemptStatusResult.TimeUp ? ControllerHelper.CreateErrorResponse(HttpStatusCode.ExpectationFailed, "TimeUp") : ControllerHelper.CreateErrorResponse(HttpStatusCode.NotAcceptable, "DateError")); }
private async Task <JsonResult> ExecutePost(int userId, int attemptId, UpdateQuizAttemptStatus data, UpdateQuizAttemptResponse response) { var quizAttemptsManager = new Mock <IQuizAttemptManager>(); quizAttemptsManager.Setup(c => c.UpdateStatus(userId, attemptId, It.IsAny <UpdateQuizAttemptStatus>())) .Returns <int, int, UpdateQuizAttemptStatus>((u, q, s) => Task.FromResult(response)); var controller = new QuizAttemptsController(quizAttemptsManager.Object); controller.Token = new AuthToken { Token = "token", UserId = userId, ValidUntil = DateTime.Now.AddDays(1), IsVerified = true }; var result = await controller.Post(attemptId, data); return(result); }
/// <summary> /// /// </summary> /// <param name="userId"></param> /// <param name="attemptId"></param> /// <param name="status"></param> /// <returns></returns> public async Task <UpdateQuizAttemptResponse> UpdateStatus(int userId, int attemptId, UpdateQuizAttemptStatus status) { var verifyResponse = await VerifyRequest(userId, attemptId, status.TimeSpent); var attempt = verifyResponse.attempt; var quiz = verifyResponse.quiz; if (verifyResponse.response != null) { return(verifyResponse.response); } if (status.EndQuiz) { await FinishQuizAsync(attempt, quiz.PassScore, status.TimeSpent); return(new UpdateQuizAttemptResponse { Result = UpdateQuizAttemptStatusResult.Success, Attempt = attempt }); } attempt.TimeSpent = status.TimeSpent; Context.QuizAttempts.Update(attempt); return(new UpdateQuizAttemptResponse { Result = UpdateQuizAttemptStatusResult.Success, Attempt = attempt }); }