Пример #1
0
        /// <inheritdoc />
        /// <summary>
        /// Delete a gradebook column and the associated scores.
        /// </summary>
        protected override async Task <ActionResult> OnDeleteLineItemAsync(DeleteLineItemRequest 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 (!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.Any(c => c.Id == lineItemId))
            {
                var gradebookColumn = await _context.GetGradebookColumnAsync(lineItemId);

                _context.GradebookColumns.Remove(gradebookColumn);
                await _context.SaveChangesAsync();

                return(NoContent());
            }

            return(NotFound(new ProblemDetails
            {
                Title = ReasonPhrases.GetReasonPhrase(StatusCodes.Status404NotFound),
                Detail = "Gradebook column not found"
            }));
        }
Пример #2
0
        protected override Task <ActionResult> OnDeleteLineItemAsync(DeleteLineItemRequest request)
        {
            var result = (ActionResult)Ok();

            return(Task.FromResult(result));
        }