/// <summary> /// Constructor. /// </summary> public LatestBuildResult( Commit commit, BuildResult buildResult, TimeSpan? estimatedBuildDuration) { Commit = commit; BuildResult = buildResult; EstimatedBuildDuration = estimatedBuildDuration; }
/// <summary> /// Constructor. /// </summary> public BuildViewModel( BuildResult buildResult, IList<UnreadFeedbackResult> unreadFeedback, Func<Model.Projects.Build, string> commitUrlBuilder, Func<TestResult, string> testUrlBuilder, Func<string, string, int, string> feedbackUrlBuilder, ITimeZoneProvider timeZoneProvider) { User = buildResult.Build.Commit.User; Submissions = new CheckpointSubmissionsViewModel ( buildResult.Submissions, timeZoneProvider ); PushDate = buildResult.Build.Commit.PushDate; CommitMessage = buildResult.Build.Commit.Message; CommitSha = buildResult.Build.Commit.Sha; CommitUrl = commitUrlBuilder(buildResult.Build); BuildStatus = buildResult.Build.Status; BuildDuration = buildResult.Build.DateCompleted - buildResult.Build.DateStarted; BuildOutput = buildResult.Build.Output; TestClassResults = TestClassTableEntry.GetTestClassResults ( null /*checkpoint*/, buildResult.Build, testUrlBuilder ); IsLatestBuild = buildResult.LatestBuild; TestTrend = buildResult.Build.Status == BuildStatus.Completed ? new TestTrendViewModel ( buildResult.AllBuildTestCounts, buildResult.Build.Commit.Project.Name, buildResult.Build, thumbnail: false ) : null; UnreadFeedback = unreadFeedback.Select ( uf => new UnreadFeedbackViewModel ( uf, feedbackUrlBuilder, timeZoneProvider ) ).ToList(); }
/// <summary> /// Returns the view model for the given build. /// </summary> private BuildViewModel GetBuildViewModelAsync( BuildResult buildResult, IList<UnreadFeedbackResult> unreadFeedback) { return new BuildViewModel ( buildResult, unreadFeedback, b => b.Commit.GetCommitUrl(Url), testResult => Url.Action ( "TestResult", new { buildId = testResult.BuildId, testResultId = testResult.Id } ), (projectName, checkpointName, submissionId) => Url.Action ( "ViewFeedback", "Submission", new { projectName, checkpointName, submissionId } ), TimeZoneProvider ); }