Restore Subscribed field in search service

Let's only flag it as obsolete for now
pull/4585/head
sephrat 3 years ago
parent da0404d552
commit 10a7f8d4fb

@ -16,6 +16,7 @@ using Ombi.Store.Repository;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Security.Principal;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace Ombi.Core.Engine namespace Ombi.Core.Engine
@ -215,9 +216,34 @@ namespace Ombi.Core.Engine
await RunSearchRules(viewMovie); await RunSearchRules(viewMovie);
// This requires the rules to be run first to populate the RequestId property
await CheckForSubscription(viewMovie);
return viewMovie; return viewMovie;
} }
private async Task CheckForSubscription(SearchMovieViewModel viewModel)
{
// Check if this user requested it
var user = await GetUser();
if (user == null)
{
return;
}
var request = await RequestService.MovieRequestService.GetAll()
.AnyAsync(x => x.RequestedUserId.Equals(user.Id) && x.TheMovieDbId == viewModel.Id);
if (request || viewModel.Available)
{
viewModel.ShowSubscribe = false;
}
else
{
viewModel.ShowSubscribe = true;
var sub = await _subscriptionRepository.GetAll().FirstOrDefaultAsync(s => s.UserId == user.Id
&& s.RequestId == viewModel.RequestId && s.RequestType == RequestType.Movie);
viewModel.Subscribed = sub != null;
}
}
private async Task<SearchMovieViewModel> ProcessSingleMovie(MovieDbSearchResult movie) private async Task<SearchMovieViewModel> ProcessSingleMovie(MovieDbSearchResult movie)
{ {

@ -393,6 +393,8 @@ namespace Ombi.Core.Engine.V2
await RunSearchRules(viewMovie); await RunSearchRules(viewMovie);
// This requires the rules to be run first to populate the RequestId property
await CheckForSubscription(viewMovie);
var mapped = Mapper.Map<MovieFullInfoViewModel>(movie); var mapped = Mapper.Map<MovieFullInfoViewModel>(movie);
mapped.Available = viewMovie.Available; mapped.Available = viewMovie.Available;
@ -404,6 +406,7 @@ namespace Ombi.Core.Engine.V2
mapped.PlexUrl = viewMovie.PlexUrl; mapped.PlexUrl = viewMovie.PlexUrl;
mapped.EmbyUrl = viewMovie.EmbyUrl; mapped.EmbyUrl = viewMovie.EmbyUrl;
mapped.JellyfinUrl = viewMovie.JellyfinUrl; mapped.JellyfinUrl = viewMovie.JellyfinUrl;
mapped.Subscribed = viewMovie.Subscribed;
mapped.ShowSubscribe = viewMovie.ShowSubscribe; mapped.ShowSubscribe = viewMovie.ShowSubscribe;
mapped.DigitalReleaseDate = viewMovie.DigitalReleaseDate; mapped.DigitalReleaseDate = viewMovie.DigitalReleaseDate;
mapped.RequestedDate4k = viewMovie.RequestedDate4k; mapped.RequestedDate4k = viewMovie.RequestedDate4k;
@ -426,6 +429,8 @@ namespace Ombi.Core.Engine.V2
var mappedMovie = Mapper.Map<SearchMovieViewModel>(movie); var mappedMovie = Mapper.Map<SearchMovieViewModel>(movie);
await RunSearchRules(mappedMovie); await RunSearchRules(mappedMovie);
// This requires the rules to be run first to populate the RequestId property
await CheckForSubscription(mappedMovie);
var mapped = Mapper.Map<MovieCollection>(movie); var mapped = Mapper.Map<MovieCollection>(movie);
mapped.Available = movie.Available; mapped.Available = movie.Available;
@ -435,6 +440,7 @@ namespace Ombi.Core.Engine.V2
mapped.PlexUrl = movie.PlexUrl; mapped.PlexUrl = movie.PlexUrl;
mapped.EmbyUrl = movie.EmbyUrl; mapped.EmbyUrl = movie.EmbyUrl;
mapped.JellyfinUrl = movie.JellyfinUrl; mapped.JellyfinUrl = movie.JellyfinUrl;
mapped.Subscribed = movie.Subscribed;
mapped.ShowSubscribe = movie.ShowSubscribe; mapped.ShowSubscribe = movie.ShowSubscribe;
mapped.ReleaseDate = movie.ReleaseDate; mapped.ReleaseDate = movie.ReleaseDate;
} }
@ -464,9 +470,34 @@ namespace Ombi.Core.Engine.V2
await RunSearchRules(viewMovie); await RunSearchRules(viewMovie);
// This requires the rules to be run first to populate the RequestId property
await CheckForSubscription(viewMovie);
return viewMovie; return viewMovie;
} }
private async Task CheckForSubscription(SearchViewModel viewModel)
{
// Check if this user requested it
var user = await GetUser();
if (user == null)
{
return;
}
var request = await RequestService.MovieRequestService.GetAll()
.AnyAsync(x => x.RequestedUserId.Equals(user.Id) && x.TheMovieDbId == viewModel.Id);
if (request)
{
viewModel.ShowSubscribe = false;
}
else
{
viewModel.ShowSubscribe = true;
var sub = await _subscriptionRepository.GetAll().FirstOrDefaultAsync(s => s.UserId == user.Id
&& s.RequestId == viewModel.RequestId && s.RequestType == RequestType.Movie);
viewModel.Subscribed = sub != null;
}
}
public async Task<MovieFullInfoViewModel> GetMovieInfoByImdbId(string imdbId, CancellationToken cancellationToken) public async Task<MovieFullInfoViewModel> GetMovieInfoByImdbId(string imdbId, CancellationToken cancellationToken)
{ {

Loading…
Cancel
Save