public async Task <TvSeasonDetailModel> CreateSeasonDetailModel(int tvId, TvSeasonDetails tvSeasonDetails) { var associatedRequestLookup = await _requestService.GetRequestsByMovieDbIds(new List <int> { tvSeasonDetails.Id }); var tvSeasonDetailModel = _mapper.Map <TvSeasonDetailModel>(tvSeasonDetails); if (associatedRequestLookup.TryGetValue(tvId, out var associatedRequest)) { var requestSeason = associatedRequest.TvRequestSeasons.FirstOrDefault(x => x.SeasonIndex == tvSeasonDetailModel.Index); if (requestSeason != null) { tvSeasonDetailModel.RequestStatus = requestSeason.RequestStatus; } } var plexMediaItem = await _mediaItemRetriever.Get(tvId); var plexMediaSeason = plexMediaItem?.PlexSeasons?.FirstOrDefault(x => x.Season == tvSeasonDetailModel.Index); if (plexMediaSeason != null) { tvSeasonDetailModel.PlexMediaUri = plexMediaSeason.MediaUri; SetEpisodePlexMediaUris(tvSeasonDetailModel, plexMediaSeason); } return(tvSeasonDetailModel); }
private static void SetEpisodeDetails(TvRequestSeasonRow rootSeason, ICollection <TvRequestEpisodeRow> tvRequestEpisodes, TvSeasonDetails seasonDetails) { foreach (var episodeToRequest in tvRequestEpisodes) { var rootEpisode = rootSeason.TvRequestEpisodes.FirstOrDefault(x => x.EpisodeIndex == episodeToRequest.EpisodeIndex); var episodeDetail = seasonDetails.Episodes.FirstOrDefault(x => x.Episode_Number == episodeToRequest.EpisodeIndex); if (episodeDetail == null || rootEpisode != null) { continue; } rootEpisode = new TvRequestEpisodeRow { AirDateUtc = DateTime.Parse(episodeDetail.Air_Date), Title = episodeDetail.Name, ImagePath = episodeDetail.Still_Path, RequestStatus = RequestStatuses.PendingApproval }; rootSeason.TvRequestEpisodes.Add(rootEpisode); } }