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"));
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        /// <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
            });
        }