public async Task <IActionResult> LatestBuildResult(int?userId)
        {
            if (!Project.ExplicitSubmissionRequired)
            {
                return(NotFound());
            }

            if (userId == null)
            {
                userId = User.Id;
            }

            if (userId != User.Id && ClassroomRole < ClassroomRole.Admin)
            {
                return(Forbid());
            }

            var latestBuildResult = await BuildService.GetLatestBuildResultAsync
                                    (
                ClassroomName,
                ProjectName,
                userId.Value
                                    );

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

            var unreadFeedback = await SubmissionService.GetUnreadFeedbackAsync
                                 (
                ClassroomName,
                userId.Value
                                 );

            if (latestBuildResult.BuildResult != null)
            {
                var buildViewModel = GetBuildViewModelAsync
                                     (
                    latestBuildResult.BuildResult,
                    unreadFeedback
                                     );

                return(View("BuildResult", buildViewModel));
            }
            else
            {
                var buildInProgressViewModel = new BuildInProgressViewModel
                                               (
                    latestBuildResult.Commit,
                    latestBuildResult.EstimatedBuildDuration.Value
                                               );

                return(View("BuildInProgress", buildInProgressViewModel));
            }
        }