From 8bb4b02be7cf93f759eba0eacdd7bbcffb253b8d Mon Sep 17 00:00:00 2001 From: Leonardo Galli Date: Sun, 16 Apr 2017 00:48:39 +0200 Subject: [PATCH] Fix for sql error. Did not think everything through exactly. Fixes #1390. --- src/NzbDrone.Core/Tv/MovieRepository.cs | 44 ++++++++++++++++--------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/src/NzbDrone.Core/Tv/MovieRepository.cs b/src/NzbDrone.Core/Tv/MovieRepository.cs index e963461a3..af256dedf 100644 --- a/src/NzbDrone.Core/Tv/MovieRepository.cs +++ b/src/NzbDrone.Core/Tv/MovieRepository.cs @@ -238,29 +238,41 @@ namespace NzbDrone.Core.Tv cleanTitleWithArabicNumbers = cleanTitleWithArabicNumbers.Replace(romanNumber, arabicNumber); } - IEnumerable results = Query.Where(s => s.CleanTitle == cleanTitle); + Movie result = year.HasValue + ? Query.Where(s => s.CleanTitle == cleanTitle).FirstOrDefault(movie => movie.Year == year.Value) + : Query.Where(s => s.CleanTitle == cleanTitle).FirstOrDefault(); - if (results == null || results.Count() == 0) + if (result == null) { - results = Query.Where(movie => movie.CleanTitle == cleanTitleWithArabicNumbers) ?? - Query.Where(movie => movie.CleanTitle == cleanTitleWithRomanNumbers); + result = year.HasValue ? Query.Where(movie => movie.CleanTitle == cleanTitleWithArabicNumbers).FirstOrDefault(movie => movie.Year == year.Value) + : Query.Where(movie => movie.CleanTitle == cleanTitleWithArabicNumbers).FirstOrDefault(); ; - if (results == null || results.Count() == 0) + if (result == null) { - IEnumerable movies = All(); - Func titleCleaner = title => CoreParser.CleanSeriesTitle(title.ToLower()); - Func, string, bool> altTitleComparer = - (alternativeTitles, atitle) => - alternativeTitles.Any(altTitle => titleCleaner(altTitle) == atitle); - - results = movies.Where(m => altTitleComparer(m.AlternativeTitles, cleanTitle) || - altTitleComparer(m.AlternativeTitles, cleanTitleWithRomanNumbers) || - altTitleComparer(m.AlternativeTitles, cleanTitleWithArabicNumbers)); + result = year.HasValue ? Query.Where(movie => movie.CleanTitle == cleanTitleWithRomanNumbers).FirstOrDefault(movie => movie.Year == year.Value) + : Query.Where(movie => movie.CleanTitle == cleanTitleWithRomanNumbers).FirstOrDefault(); + + if (result == null) + { + IEnumerable movies = All(); + Func titleCleaner = title => CoreParser.CleanSeriesTitle(title.ToLower()); + Func, string, bool> altTitleComparer = + (alternativeTitles, atitle) => + alternativeTitles.Any(altTitle => titleCleaner(altTitle) == atitle); + + result = year.HasValue ? movies.Where(m => altTitleComparer(m.AlternativeTitles, cleanTitle) || + altTitleComparer(m.AlternativeTitles, cleanTitleWithRomanNumbers) || + altTitleComparer(m.AlternativeTitles, cleanTitleWithArabicNumbers)).FirstOrDefault(movie => movie.Year == year) + : movies.Where(m => altTitleComparer(m.AlternativeTitles, cleanTitle) || + altTitleComparer(m.AlternativeTitles, cleanTitleWithRomanNumbers) || + altTitleComparer(m.AlternativeTitles, cleanTitleWithArabicNumbers)).FirstOrDefault(); + } } } - return year.HasValue + return result; + /*return year.HasValue ? results?.FirstOrDefault(movie => movie.Year == year.Value) - : results?.FirstOrDefault(); + : results?.FirstOrDefault();*/ } public Movie FindByTmdbId(int tmdbid)