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 async Task <TvRequestRow> CreateRequest(CreateTvRequestCommand request) { var tvDetails = _theMovieDbService.GetTvDetails(request.TheMovieDbId); var externalIds = _theMovieDbService.GetTvExternalIds(request.TheMovieDbId); await Task.WhenAll(tvDetails, externalIds); var tvRequest = new TvRequestRow { RequestStatus = RequestStatuses.PendingApproval, Title = tvDetails.Result.Name, AirDateUtc = DateTime.Parse(tvDetails.Result.First_Air_Date), ImagePath = tvDetails.Result.Poster_Path, Track = request.TrackShow, TheMovieDbId = request.TheMovieDbId }; tvRequest.TvRequestAgents.Add(new TvRequestAgentRow(AgentTypes.TheMovieDb, request.TheMovieDbId.ToString())); if (!string.IsNullOrEmpty(externalIds.Result.TvDb_Id)) { tvRequest.TvRequestAgents.Add(new TvRequestAgentRow(AgentTypes.TheTvDb, externalIds.Result.TvDb_Id)); } await _requestService.Add(tvRequest); return(tvRequest); }
private void PartialReject(TvRequestRow request, Dictionary <int, List <int> > episodesBySeason) { if (episodesBySeason == null) { return; } foreach (var season in request.TvRequestSeasons) { if (episodesBySeason.TryGetValue(season.SeasonIndex, out var requestEpisodes)) { if (requestEpisodes == null) { continue; } foreach (var episode in season.TvRequestEpisodes) { if (requestEpisodes.Contains(episode.EpisodeIndex)) { RejectEpisode(episode); } } } } }
private void AutoCompleteTvSeasonEpisodes(TvRequestRow incompleteRequest, PlexMediaItemRow plexMediaItem) { foreach (var season in incompleteRequest.TvRequestSeasons) { var matchingSeason = plexMediaItem.PlexSeasons.FirstOrDefault(x => x.Season == season.SeasonIndex); if (matchingSeason == null) { continue; } season.PlexSeason = matchingSeason; foreach (var episode in season.TvRequestEpisodes) { if (episode.RequestStatus == RequestStatuses.Completed) { continue; } var matchingEpisode = matchingSeason.PlexEpisodes.FirstOrDefault(x => x.Episode == episode.EpisodeIndex); if (matchingEpisode == null) { continue; } episode.PlexEpisode = matchingEpisode; episode.RequestStatus = RequestStatuses.Completed; } } _requestService.SetAggregatedStatus(incompleteRequest); }
private void GivenOneEpisodeOfStatus(RequestStatuses status, RequestStatuses allOtherEpisodeStatus) { _request = new TvRequestRowBuilder().WithTrack(false).Build(); SetEpisodeStatuses(allOtherEpisodeStatus); _request.TvRequestSeasons.ElementAt(0).TvRequestEpisodes.ElementAt(0).RequestStatus = status; }
private void GivenARequestIsFound() { _request = new TvRequestRowBuilder().WithRequestStatus(RequestStatuses.PendingApproval).WithTrack(false).Build(); SetEpisodeStatus(_request, RequestStatuses.PendingApproval); _requestService.GetRequestById(Arg.Any <int>()).Returns(_request); }
private static void SetEpisodeStatus(TvRequestRow request, RequestStatuses status) { foreach (var season in request.TvRequestSeasons) { foreach (var episode in season.TvRequestEpisodes) { episode.RequestStatus = status; } } }
private void GivenARequestIsFoundWithACompletedEpisode() { _request = new TvRequestRowBuilder().WithRequestStatus(RequestStatuses.PendingApproval).WithTrack(false).Build(); SetEpisodeStatus(_request, RequestStatuses.PendingApproval); _request.TvRequestSeasons.ElementAt(0).TvRequestEpisodes.ElementAt(0).RequestStatus = RequestStatuses.Completed; _requestService.GetRequestById(Arg.Any <int>()).Returns(_request); }
private static void ApproveAllEpisodes(TvRequestRow request) { foreach (var season in request.TvRequestSeasons) { foreach (var episode in season.TvRequestEpisodes) { ApproveEpisode(episode); } } }
private void RejectAll(TvRequestRow request) { foreach (var season in request.TvRequestSeasons) { foreach (var episode in season.TvRequestEpisodes) { RejectEpisode(episode); } } }
private static void ApproveEpisodes(TvRequestRow request, IReadOnlyDictionary <int, List <int> > commandEpisodesBySeason) { foreach (var season in request.TvRequestSeasons) { if (!commandEpisodesBySeason.TryGetValue(season.SeasonIndex, out var commandEpisodes)) { continue; } foreach (var episode in season.TvRequestEpisodes) { if (!commandEpisodes.Contains(episode.EpisodeIndex)) { continue; } ApproveEpisode(episode); } } }
private void AddUserRequests(TvRequestRow existingRequest, List <TvRequestSeasonRow> seasonsToRequest) { var userId = _claimsPrincipalAccessor.UserId; foreach (var seasonToRequest in seasonsToRequest) { var userRequest = new TvRequestUserRow { UserId = userId, Season = seasonToRequest.SeasonIndex }; foreach (var episodeToRequest in seasonToRequest.TvRequestEpisodes) { userRequest.Episode = episodeToRequest.EpisodeIndex; } existingRequest.TvRequestUsers.Add(userRequest); } }
private void GivenAMatchingTvRequestWithAllMatchingEpisodes(bool istracked) { var plexItem = _agentsForPlexItems.First().Value; _request = new TvRequestRowBuilder().Build(); _request.TvRequestAgents.Add(GetMatchingAgent()); _request.TvRequestSeasons = new List <TvRequestSeasonRow>(); _request.Track = istracked; if (!istracked) { MirrorPlexSeasons(plexItem, _request, false, false); } _tvRequests = new List <TvRequestRow> { _request }; _requestService.GetIncompleteRequests().Returns(_tvRequests); }
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); } }
public void SetAggregatedStatus(TvRequestRow request) { if (request.Track) { return; } var allStatusCounts = _allStatuses.ToDictionary(status => status, count => 0); foreach (var season in request.TvRequestSeasons) { var seasonStatusCounts = _allStatuses.ToDictionary(status => status, count => 0); foreach (var episode in season.TvRequestEpisodes) { allStatusCounts[episode.RequestStatus]++; seasonStatusCounts[episode.RequestStatus]++; } season.RequestStatus = CalculateStatus(seasonStatusCounts); } request.RequestStatus = CalculateStatus(allStatusCounts); }
public async Task Add(TvRequestRow request) { await _requestRepository.Add(request); }
private void GivenAllRequestEpisodesOfStatus(RequestStatuses status) { _request = new TvRequestRowBuilder().WithTrack(false).Build(); SetEpisodeStatuses(status); }
private void GivenTrackedRequest(RequestStatuses status) { _request = new TvRequestRowBuilder().WithTrack(true).WithRequestStatus(status).Build(); }
public async Task Add(TvRequestRow request) { await base.Add(request); }
public void SetAggregatedStatus(TvRequestRow request) { _requestHelper.SetAggregatedStatus(request); }
private void GivenARequestIsFound() { _request = new TvRequestRowBuilder().Build(); _requestService.GetRequestById(Arg.Any <int>()).Returns(_request); }