public async Task <TelevisionEpisodeCardResultsViewModel> Handle( GetTelevisionEpisodeCards request, CancellationToken cancellationToken) { int count = await _televisionRepository.GetEpisodeCount(request.TelevisionSeasonId); Option <JellyfinMediaSource> maybeJellyfin = await _mediaSourceRepository.GetAllJellyfin() .Map(list => list.HeadOrNone()); Option <EmbyMediaSource> maybeEmby = await _mediaSourceRepository.GetAllEmby() .Map(list => list.HeadOrNone()); List <EpisodeMetadata> episodes = await _televisionRepository .GetPagedEpisodes(request.TelevisionSeasonId, request.PageNumber, request.PageSize); var results = new List <TelevisionEpisodeCardViewModel>(); foreach (EpisodeMetadata episodeMetadata in episodes) { string localPath = await episodeMetadata.Episode.GetLocalPath( _plexPathReplacementService, _jellyfinPathReplacementService, _embyPathReplacementService, false); results.Add(ProjectToViewModel(episodeMetadata, maybeJellyfin, maybeEmby, false, localPath)); } return(new TelevisionEpisodeCardResultsViewModel(count, results, Option <SearchPageMap> .None)); }