NOTE: DATABASE NEEDS TO BE DELETED AND RECREATED
This commit is contained in:
tidusjar 2017-11-03 00:57:09 +00:00
commit dedf42ac87
33 changed files with 386 additions and 3294 deletions

View file

@ -163,7 +163,7 @@ namespace Ombi.Core.Engine
// But we only pass down the SearchViewModel that doesn't contain this
// So set the ImdbId to viewMovie.Id and then set it back afterwards
var oldId = viewMovie.Id;
viewMovie.CustomId = viewMovie.ImdbId ?? string.Empty;
viewMovie.TheMovieDbId = viewMovie.TheMovieDbId;
await RunSearchRules(viewMovie);

View file

@ -194,7 +194,8 @@ namespace Ombi.Core.Engine
private async Task<SearchTvShowViewModel> ProcessResult(SearchTvShowViewModel item)
{
item.CustomId = item.Id.ToString();
item.TheTvDbId = item.Id.ToString();
await RunSearchRules(item);
return item;

View file

@ -22,7 +22,6 @@ namespace Ombi.Core.Models.Search
public bool AlreadyInCp { get; set; }
public string Trailer { get; set; }
public string Homepage { get; set; }
public string ImdbId { get; set; }
public int RootPathOverride { get; set; }
public int QualityOverride { get; set; }
public override RequestType Type => RequestType.Movie;

View file

@ -22,7 +22,6 @@ namespace Ombi.Core.Models.Search
public string AirsDayOfWeek { get; set; }
public string AirsTime { get; set; }
public string Rating { get; set; }
public string ImdbId { get; set; }
public int SiteRating { get; set; }
/// <summary>

View file

@ -21,6 +21,10 @@ namespace Ombi.Core.Models.Search
/// The custom identifier.
/// </value>
[NotMapped]
public string CustomId { get; set; }
public string ImdbId { get; set; }
[NotMapped]
public string TheTvDbId { get; set; }
[NotMapped]
public string TheMovieDbId { get; set; }
}
}

View file

@ -19,7 +19,7 @@ namespace Ombi.Core.Rule.Rules.Search
public async Task<RuleResult> Execute(SearchViewModel obj)
{
var item = await EmbyContentRepository.Get(obj.CustomId);
var item = await EmbyContentRepository.Get(obj.ImdbId);
if (item != null)
{
obj.Available = true;

View file

@ -3,6 +3,7 @@ using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Ombi.Core.Models.Search;
using Ombi.Core.Rule.Interfaces;
using Ombi.Helpers;
using Ombi.Store.Entities;
using Ombi.Store.Repository;
@ -19,7 +20,42 @@ namespace Ombi.Core.Rule.Rules.Search
public async Task<RuleResult> Execute(SearchViewModel obj)
{
var item = await PlexContentRepository.Get(obj.CustomId);
PlexServerContent item = null;
var useImdb = false;
var useTheMovieDb = false;
var useTvDb = false;
if (obj.ImdbId.HasValue())
{
item = await PlexContentRepository.Get(obj.ImdbId);
if (item != null)
{
useImdb = true;
}
}
if (item == null)
{
if (obj.TheMovieDbId.HasValue())
{
item = await PlexContentRepository.Get(obj.TheMovieDbId);
if (item != null)
{
useTheMovieDb = true;
}
}
if (item == null)
{
if (obj.TheTvDbId.HasValue())
{
item = await PlexContentRepository.Get(obj.TheTvDbId);
if (item != null)
{
useTvDb = true;
}
}
}
}
if (item != null)
{
obj.Available = true;
@ -37,9 +73,26 @@ namespace Ombi.Core.Rule.Rules.Search
{
foreach (var episode in season.Episodes)
{
var epExists = await allEpisodes.FirstOrDefaultAsync(x =>
x.EpisodeNumber == episode.EpisodeNumber && x.SeasonNumber == season.SeasonNumber &&
x.Series.ProviderId == item.ProviderId.ToString());
PlexEpisode epExists = null;
if (useImdb)
{
epExists = await allEpisodes.FirstOrDefaultAsync(x =>
x.EpisodeNumber == episode.EpisodeNumber && x.SeasonNumber == season.SeasonNumber &&
x.Series.ImdbId == item.ImdbId.ToString());
}
if (useTheMovieDb)
{
epExists = await allEpisodes.FirstOrDefaultAsync(x =>
x.EpisodeNumber == episode.EpisodeNumber && x.SeasonNumber == season.SeasonNumber &&
x.Series.TheMovieDbId == item.TheMovieDbId.ToString());
}
if (useTvDb)
{
epExists = await allEpisodes.FirstOrDefaultAsync(x =>
x.EpisodeNumber == episode.EpisodeNumber && x.SeasonNumber == season.SeasonNumber &&
x.Series.TvDbId == item.TvDbId.ToString());
}
if (epExists != null)
{
episode.Available = true;