public async Task <IActionResult> Submit(int?userId) { if (userId == null) { userId = User.Id; } if (userId != User.Id && ClassroomRole < ClassroomRole.Admin) { return(Forbid()); } if (ClassroomRole < ClassroomRole.Admin) { var unreadFeedback = await SubmissionService.GetUnreadFeedbackAsync ( ClassroomName, userId.Value ); if (unreadFeedback.Any()) { var viewModel = unreadFeedback.Select ( uf => new UnreadFeedbackViewModel ( uf, (projectName, checkpointName, submissionId) => Url.Action ( "ViewFeedback", "Submission", new { projectName, checkpointName, submissionId } ), TimeZoneProvider ) ).ToList(); return(View("UnreadFeedback", viewModel)); } } var candidates = await SubmissionService.GetSubmissionCandidatesAsync ( ClassroomName, ProjectName, userId.Value ); var submissions = await SubmissionService.GetUserSubmissionsAsync ( ClassroomName, ProjectName, userId.Value ); var user = await UserService.GetUserAsync(userId.Value); var candidatesViewModel = new SubmissionCandidatesViewModel ( user, candidates, commit => commit.GetCommitUrl(Url), Checkpoint, submissions .OrderByDescending(s => s.DateSubmitted) .FirstOrDefault(s => s.Checkpoint == Checkpoint), TimeZoneProvider ); return(View(candidatesViewModel)); }