private void MirrorPlexSeasons(PlexMediaItemRow plexItem, TvRequestRow request, bool createExtraSeason, bool createExtraEpisode) { foreach (var season in plexItem.PlexSeasons) { var requestSeason = new TvRequestSeasonRow { SeasonIndex = season.Season, TvRequestEpisodes = new List <TvRequestEpisodeRow>() }; foreach (var episode in season.PlexEpisodes) { var requestEpisode = new TvRequestEpisodeRow { EpisodeIndex = episode.Episode }; requestSeason.TvRequestEpisodes.Add(requestEpisode); } request.TvRequestSeasons.Add(requestSeason); } if (createExtraSeason) { var season = new TvRequestSeasonRowBuilder().Build(); request.TvRequestSeasons.Add(season); } if (createExtraEpisode) { var episode = new TvRequestEpisodeRowBuilder().Build(); request.TvRequestSeasons.ElementAt(0).TvRequestEpisodes.Add(episode); } }
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); } }
private async Task AddNewRootLevelRequests(TvRequestRow existingRequest, List <TvRequestSeasonRow> seasonsToRequest) { foreach (var seasonToRequest in seasonsToRequest) { var seasonDetails = await _theMovieDbService.GetTvSeasonDetails(existingRequest.TheMovieDbId, seasonToRequest.SeasonIndex); var rootSeason = existingRequest.TvRequestSeasons.FirstOrDefault(x => x.SeasonIndex == seasonToRequest.SeasonIndex); if (seasonDetails != null && rootSeason == null) { rootSeason = new TvRequestSeasonRow { AirDateUtc = DateTime.Parse(seasonDetails.Air_Date), Title = seasonDetails.Name, ImagePath = seasonDetails.Poster_Path, RequestStatus = RequestStatuses.PendingApproval }; } SetEpisodeDetails(rootSeason, seasonToRequest.TvRequestEpisodes, seasonDetails); existingRequest.TvRequestSeasons.Add(rootSeason); } }