コード例 #1
0
 public async Task <IActionResult> AddScore(string username, [FromBody] AddScoreRequest request)
 {
     if (await _command.AddScoreToUser(username, request.Score))
     {
         return(Ok());
     }
     return(NotFound());
 }
コード例 #2
0
            public AddScoreResponse Add([FromBody] AddScoreRequest request)
            {
                var response = new AddScoreResponse();

                try
                {
                    if (request == null)
                    {
                        throw new Exception("request is null - input format may be incorrect");
                    }

                    if (request.publicKey != PublicKey)
                    {
                        throw new Exception("invalid access key");
                    }

                    if (string.IsNullOrEmpty(request.game))
                    {
                        throw new Exception("no game was specified");
                    }

                    if (string.IsNullOrEmpty(request.name))
                    {
                        throw new Exception("no player name was specified");
                    }

                    if (request.score <= 0)
                    {
                        throw new Exception("invalid score: score must be >= 0");
                    }

                    response.scoreId = highScores.AddScore(request.game, request.name, request.score, request.date);
                    response.status  = 0;
                }
                catch (Exception ex)
                {
                    response.status  = 1;
                    response.message = ex.ToString();
                }

                return(response);
            }
コード例 #3
0
 public ResultJson AddScoreRecord(AddScoreRequest request)
 {
     return(ScoreBiz.Instance.AddScoreRecord(request));
 }
コード例 #4
0
        /// <inheritdoc />
        /// <summary>
        /// Add a score to a line item.
        /// </summary>
        /// <param name="request">The request parameters.</param>
        /// <returns>The score that was added.</returns>
        protected override async Task <ActionResult <Score> > OnAddScoreAsync(AddScoreRequest request)
        {
            if (!int.TryParse(request.ContextId, out var contextId))
            {
                var name = $"{nameof(request)}.{nameof(request.ContextId)}";
                ModelState.AddModelError(name, $"The {name} field cannot be converted into a course id.");
            }

            if (!int.TryParse(request.LineItemId, out var lineItemId))
            {
                var name = $"{nameof(request)}.{nameof(request.LineItemId)}";
                ModelState.AddModelError(name, $"The {name} field cannot be converted into a gradebook column id.");
            }

            if (!int.TryParse(request.Score.UserId, out var personId))
            {
                var name = $"{nameof(request)}.{nameof(request.Score)}.{nameof(request.Score.UserId)}";
                ModelState.AddModelError(name, $"The {name} field cannot be converted into a user id.");
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(new ValidationProblemDetails(ModelState)));
            }

            if (!await _courseValidator.UserHasAccess(contextId))
            {
                return(Unauthorized(new ProblemDetails
                {
                    Title = "Not authorized",
                    Detail = "User not authorized to access the requested course."
                }));
            }

            var course = await _context.GetCourseAsync(contextId);

            if (course == null)
            {
                return(NotFound(new ProblemDetails
                {
                    Title = ReasonPhrases.GetReasonPhrase(StatusCodes.Status404NotFound),
                    Detail = "Course not found"
                }));
            }

            if (course.GradebookColumns.All(c => c.Id != lineItemId))
            {
                return(NotFound(new ProblemDetails
                {
                    Title = ReasonPhrases.GetReasonPhrase(StatusCodes.Status404NotFound),
                    Detail = "Gradebook column not found"
                }));
            }

            var gradebookColumn = await _context.GetGradebookColumnAsync(lineItemId);

            var person = await _context.GetPersonAsync(personId);

            if (person == null)
            {
                return(NotFound(new ProblemDetails
                {
                    Title = ReasonPhrases.GetReasonPhrase(StatusCodes.Status404NotFound),
                    Detail = "Person not found"
                }));
            }

            var gradebookRow = new GradebookRow
            {
                ActivityProgress = request.Score.ActivityProgress,
                Comment          = request.Score.Comment,
                GradingProgress  = request.Score.GradingProgress,
                PersonId         = personId,
                ScoreGiven       = request.Score.ScoreGiven,
                ScoreMaximum     = request.Score.ScoreMaximum,
                TimeStamp        = request.Score.TimeStamp
            };

            gradebookColumn.Scores.Add(gradebookRow);
            await _context.SaveChangesAsync();

            var url = Url.Link(LtiAdvantage.Constants.ServiceEndpoints.Ags.ScoreService,
                               new { request.ContextId, lineItemId = request.LineItemId, scoreId = gradebookRow.Id });

            // Save the score
            return(Created(url, request.Score));
        }
コード例 #5
0
        protected override Task <ActionResult <Score> > OnAddScoreAsync(AddScoreRequest request)
        {
            var result = (ActionResult <Score>) new ObjectResult(request.Score);

            return(Task.FromResult(result));
        }