private Task <Either <ActionResult, FastTrackViewModel> > BuildViewModel(FastTrack fastTrack) { return(_releaseRepository .FindOrNotFoundAsync(fastTrack.ReleaseId) .OnSuccessCombineWith(_ => _tableBuilderService.Query(fastTrack.ReleaseId, fastTrack.Query)) .OnSuccess(releaseAndResults => { var(release, result) = releaseAndResults; var viewModel = _mapper.Map <FastTrackViewModel>(fastTrack); viewModel.FullTable = result; viewModel.Query.PublicationId = release.PublicationId; viewModel.ReleaseSlug = release.Slug; var latestRelease = _releaseRepository.GetLatestPublishedRelease(release.PublicationId); viewModel.LatestData = latestRelease?.Id == release.Id; viewModel.LatestReleaseTitle = latestRelease != null ? TimePeriodLabelFormatter.Format(latestRelease.Year, latestRelease.TimeIdentifier, FullLabelBeforeYear) : null; return viewModel; })); }