diff --git a/NzbDrone.Api/Calendar/CalendarModule.cs b/NzbDrone.Api/Calendar/CalendarModule.cs index a03026cde..627dcc8a2 100644 --- a/NzbDrone.Api/Calendar/CalendarModule.cs +++ b/NzbDrone.Api/Calendar/CalendarModule.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using NzbDrone.Api.Episodes; +using NzbDrone.Api.Extensions; using NzbDrone.Api.Mapping; using NzbDrone.Common; using NzbDrone.Core.Tv; @@ -11,13 +12,13 @@ namespace NzbDrone.Api.Calendar public class CalendarModule : NzbDroneRestModule { private readonly IEpisodeService _episodeService; - private readonly SeriesService _seriesService; + private readonly SeriesRepository _seriesRepository; - public CalendarModule(IEpisodeService episodeService, SeriesService seriesService) + public CalendarModule(IEpisodeService episodeService, SeriesRepository seriesRepository) : base("/calendar") { _episodeService = episodeService; - _seriesService = seriesService; + _seriesRepository = seriesRepository; GetResourceAll = GetPaged; } @@ -33,13 +34,10 @@ private List GetPaged() if (queryStart.HasValue) start = DateTime.Parse(queryStart.Value); if (queryEnd.HasValue) end = DateTime.Parse(queryEnd.Value); - var episodes = _episodeService.EpisodesBetweenDates(start, end); - var episodeResources = ToListResource(() => episodes); + var resources = ToListResource(() => _episodeService.EpisodesBetweenDates(start, end)) + .LoadSubtype(e => e.SeriesId, _seriesRepository); - var series = _seriesService.GetSeriesInList(episodeResources.SelectDistinct(e => e.SeriesId)); - episodeResources.Join(series, episode => episode.SeriesId, s => s.Id, episode => episode.Series); - - return episodeResources; + return resources.ToList(); } } } diff --git a/NzbDrone.Api/Missing/MissingModule.cs b/NzbDrone.Api/Missing/MissingModule.cs index 57402e547..caad7dcba 100644 --- a/NzbDrone.Api/Missing/MissingModule.cs +++ b/NzbDrone.Api/Missing/MissingModule.cs @@ -1,5 +1,6 @@ using System.Linq; using NzbDrone.Api.Episodes; +using NzbDrone.Api.Extensions; using NzbDrone.Common; using NzbDrone.Core.Datastore; using NzbDrone.Core.Tv; @@ -9,13 +10,13 @@ namespace NzbDrone.Api.Missing public class MissingModule : NzbDroneRestModule { private readonly IEpisodeService _episodeService; - private readonly SeriesService _seriesService; + private readonly SeriesRepository _seriesRepository; - public MissingModule(IEpisodeService episodeService, SeriesService seriesService) + public MissingModule(IEpisodeService episodeService, SeriesRepository seriesRepository) :base("missing") { _episodeService = episodeService; - _seriesService = seriesService; + _seriesRepository = seriesRepository; GetResourcePaged = GetMissingEpisodes; } @@ -29,12 +30,10 @@ private PagingResource GetMissingEpisodes(PagingResource e.SeriesId, _seriesRepository).ToList(); - var series = _seriesService.GetSeriesInList(episodeResources.Records.SelectDistinct(e => e.SeriesId)); - episodeResources.Records.Join(series, episode => episode.SeriesId, s => s.Id, episode => episode.Series); - - return episodeResources; + return resource; } } } \ No newline at end of file diff --git a/NzbDrone.Common/EnumerableExtensions.cs b/NzbDrone.Common/EnumerableExtensions.cs deleted file mode 100644 index 2f084fffc..000000000 --- a/NzbDrone.Common/EnumerableExtensions.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Linq.Expressions; -using System.Reflection; - -namespace NzbDrone.Common -{ - public static class EnumerableExtensions - { - public static IEnumerable SelectDistinct(this IEnumerable outer, Func outerKeySelector) - { - return outer.Select(outerKeySelector).Distinct(); - } - - public static IEnumerable Join(this IEnumerable outer, IEnumerable inner, Func outerKeySelector, Func innerKeySelector, Expression> outerProperty) - { - var outerList = outer.ToList(); - var innerList = inner.ToList(); - - foreach (var outerElement in outerList) - { - var outerKey = outerKeySelector(outerElement); - - foreach (var innerElement in innerList) - { - var innerKey = innerKeySelector(innerElement); - - if (innerKey.Equals(outerKey)) - { - var prop = (PropertyInfo)((MemberExpression)outerProperty.Body).Member; - prop.SetValue(outerElement, innerElement, null); - } - } - } - - return outerList; - } - } -} \ No newline at end of file diff --git a/NzbDrone.Common/NzbDrone.Common.csproj b/NzbDrone.Common/NzbDrone.Common.csproj index e7c49248c..7410fc382 100644 --- a/NzbDrone.Common/NzbDrone.Common.csproj +++ b/NzbDrone.Common/NzbDrone.Common.csproj @@ -84,7 +84,6 @@ -