Ejemplo n.º 1
0
        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);
            }
        }