public async Task <IActionResult> Grade(string sectionName)
        {
            var section = Classroom.Sections
                          .SingleOrDefault(s => s.Name == sectionName);

            if (section == null)
            {
                return(NotFound());
            }

            var submissions = await SubmissionService.GradeSubmissionsAsync
                              (
                ClassroomName,
                ProjectName,
                CheckpointName,
                sectionName
                              );

            var viewModels = submissions.Select
                             (
                submissionResult => new GradeSubmissionViewModel
                (
                    Checkpoint,
                    submissionResult,
                    testResult => Url.Action
                    (
                        "TestResult",
                        "Build",
                        new
            {
                buildId      = testResult.BuildId,
                testResultId = testResult.Id
            }
                    ),
                    buildId => Url.Action
                    (
                        "BuildResult",
                        "Build",
                        new { buildId }
                    ),
                    (commit, pullRequestNumber) => Url.GitHub().PullRequest
                    (
                        Classroom.GitHubOrganization,
                        commit.GetRepoName(),
                        pullRequestNumber
                    ),
                    TimeZoneProvider
                )
                             )
                             .OrderBy(viewModel => viewModel.FeedbackSent)
                             .ThenBy(viewModel => viewModel.LastName)
                             .ThenBy(viewModel => viewModel.FirstName)
                             .ToList();

            return(View(viewModels));
        }