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)); }