diff --git a/NzbDrone.Core/Providers/UpcomingEpisodesProvider.cs b/NzbDrone.Core/Providers/UpcomingEpisodesProvider.cs index 2b0d9c9f1..423f33947 100644 --- a/NzbDrone.Core/Providers/UpcomingEpisodesProvider.cs +++ b/NzbDrone.Core/Providers/UpcomingEpisodesProvider.cs @@ -20,8 +20,10 @@ namespace NzbDrone.Core.Providers public virtual UpcomingEpisodesModel Upcoming() { - var allEps = _database.Fetch("WHERE AirDate BETWEEN @0 AND @1", DateTime.Today.AddDays(-1), - DateTime.Today.AddDays(8)); + var allEps = _database.Fetch(@"SELECT * FROM Episodes + INNER JOIN Series ON Episodes.SeriesId = Series.SeriesId + WHERE AirDate BETWEEN @0 AND @1", + DateTime.Today.AddDays(-1), DateTime.Today.AddDays(8)); var yesterday = allEps.Where(e => e.AirDate == DateTime.Today.AddDays(-1)).ToList(); var today = allEps.Where(e => e.AirDate == DateTime.Today).ToList(); @@ -32,22 +34,30 @@ namespace NzbDrone.Core.Providers public virtual List Yesterday() { - return _database.Fetch("WHERE AirDate = @0", DateTime.Today.AddDays(-1)); + return _database.Fetch(@"SELECT * FROM Episodes + INNER JOIN Series ON Episodes.SeriesId = Series.SeriesId + WHERE AirDate = @0", DateTime.Today.AddDays(-1)); } public virtual List Today() { - return _database.Fetch("WHERE AirDate = @0", DateTime.Today); + return _database.Fetch(@"SELECT * FROM Episodes + INNER JOIN Series ON Episodes.SeriesId = Series.SeriesId + WHERE AirDate = @0", DateTime.Today); } public virtual List Tomorrow() { - return _database.Fetch("WHERE AirDate = @0", DateTime.Today.AddDays(1)); + return _database.Fetch(@"SELECT * FROM Episodes + INNER JOIN Series ON Episodes.SeriesId = Series.SeriesId + WHERE AirDate = @0", DateTime.Today.AddDays(1)); } public virtual List Week() { - return _database.Fetch("WHERE AirDate BETWEEN @0 AND @1", DateTime.Today.AddDays(2), DateTime.Today.AddDays(8)); + return _database.Fetch(@"SELECT * FROM Episodes + INNER JOIN Series ON Episodes.SeriesId = Series.SeriesId + WHERE AirDate BETWEEN @0 AND @1", DateTime.Today.AddDays(2), DateTime.Today.AddDays(8)); } } } \ No newline at end of file diff --git a/NzbDrone.Core/Repository/Episode.cs b/NzbDrone.Core/Repository/Episode.cs index 6e482e2ec..f5ce16816 100644 --- a/NzbDrone.Core/Repository/Episode.cs +++ b/NzbDrone.Core/Repository/Episode.cs @@ -32,7 +32,7 @@ namespace NzbDrone.Core.Repository /// public DateTime? GrabDate { get; set; } - [Ignore] + [ResultColumn] public EpisodeStatusType Status { get diff --git a/NzbDrone.Web/Controllers/UpcomingController.cs b/NzbDrone.Web/Controllers/UpcomingController.cs index d5c02f4a4..3ca9d69e6 100644 --- a/NzbDrone.Web/Controllers/UpcomingController.cs +++ b/NzbDrone.Web/Controllers/UpcomingController.cs @@ -30,25 +30,17 @@ namespace NzbDrone.Web.Controllers [GridAction] public ActionResult _AjaxBindingYesterday() { - var upcomingDb = _upcomingEpisodesProvider.Yesterday(); - var upcoming = new List(); - - foreach (var item in upcomingDb) + var upcoming = _upcomingEpisodesProvider.Yesterday().Select(u => new UpcomingEpisodeModel { - var series = _seriesProvider.GetSeries(item.SeriesId); - - upcoming.Add(new UpcomingEpisodeModel - { - SeriesId = series.SeriesId, - EpisodeId = item.EpisodeId, - SeriesName = series.Title, - SeasonNumber = item.SeasonNumber, - EpisodeNumber = item.EpisodeNumber, - Title = item.Title, - Overview = item.Overview, - AirDate = item.AirDate.Add(Convert.ToDateTime(series.AirTimes).TimeOfDay) - }); - } + SeriesId = u.Series.SeriesId, + EpisodeId = u.EpisodeId, + SeriesName = u.Series.Title, + SeasonNumber = u.SeasonNumber, + EpisodeNumber = u.EpisodeNumber, + Title = u.Title, + Overview = u.Overview, + AirDate = u.AirDate.Add(Convert.ToDateTime(u.Series.AirTimes).TimeOfDay) + }); return View(new GridModel(upcoming)); } @@ -56,25 +48,17 @@ namespace NzbDrone.Web.Controllers [GridAction] public ActionResult _AjaxBindingToday() { - var upcomingDb = _upcomingEpisodesProvider.Today(); - var upcoming = new List(); - - foreach (var item in upcomingDb) + var upcoming = _upcomingEpisodesProvider.Today().Select(u => new UpcomingEpisodeModel { - var series = _seriesProvider.GetSeries(item.SeriesId); - - upcoming.Add(new UpcomingEpisodeModel - { - SeriesId = series.SeriesId, - EpisodeId = item.EpisodeId, - SeriesName = series.Title, - SeasonNumber = item.SeasonNumber, - EpisodeNumber = item.EpisodeNumber, - Title = item.Title, - Overview = item.Overview, - AirDate = item.AirDate.Add(Convert.ToDateTime(series.AirTimes).TimeOfDay) - }); - } + SeriesId = u.Series.SeriesId, + EpisodeId = u.EpisodeId, + SeriesName = u.Series.Title, + SeasonNumber = u.SeasonNumber, + EpisodeNumber = u.EpisodeNumber, + Title = u.Title, + Overview = u.Overview, + AirDate = u.AirDate.Add(Convert.ToDateTime(u.Series.AirTimes).TimeOfDay) + }); return View(new GridModel(upcoming)); } @@ -82,25 +66,17 @@ namespace NzbDrone.Web.Controllers [GridAction] public ActionResult _AjaxBindingTomorrow() { - var upcomingDb = _upcomingEpisodesProvider.Tomorrow(); - var upcoming = new List(); - - foreach (var item in upcomingDb) + var upcoming = _upcomingEpisodesProvider.Tomorrow().Select(u => new UpcomingEpisodeModel { - var series = _seriesProvider.GetSeries(item.SeriesId); - - upcoming.Add(new UpcomingEpisodeModel - { - SeriesId = series.SeriesId, - EpisodeId = item.EpisodeId, - SeriesName = series.Title, - SeasonNumber = item.SeasonNumber, - EpisodeNumber = item.EpisodeNumber, - Title = item.Title, - Overview = item.Overview, - AirDate = item.AirDate.Add(Convert.ToDateTime(series.AirTimes).TimeOfDay) - }); - } + SeriesId = u.Series.SeriesId, + EpisodeId = u.EpisodeId, + SeriesName = u.Series.Title, + SeasonNumber = u.SeasonNumber, + EpisodeNumber = u.EpisodeNumber, + Title = u.Title, + Overview = u.Overview, + AirDate = u.AirDate.Add(Convert.ToDateTime(u.Series.AirTimes).TimeOfDay) + }); return View(new GridModel(upcoming)); } @@ -108,25 +84,17 @@ namespace NzbDrone.Web.Controllers [GridAction] public ActionResult _AjaxBindingWeek() { - var upcomingDb = _upcomingEpisodesProvider.Week(); - var upcoming = new List(); - - foreach (var item in upcomingDb) + var upcoming = _upcomingEpisodesProvider.Week().Select(u => new UpcomingEpisodeModel { - var series = _seriesProvider.GetSeries(item.SeriesId); - - upcoming.Add(new UpcomingEpisodeModel - { - SeriesId = series.SeriesId, - EpisodeId = item.EpisodeId, - SeriesName = series.Title, - SeasonNumber = item.SeasonNumber, - EpisodeNumber = item.EpisodeNumber, - Title = item.Title, - Overview = item.Overview, - AirDate = item.AirDate.Add(Convert.ToDateTime(series.AirTimes).TimeOfDay) - }); - } + SeriesId = u.Series.SeriesId, + EpisodeId = u.EpisodeId, + SeriesName = u.Series.Title, + SeasonNumber = u.SeasonNumber, + EpisodeNumber = u.EpisodeNumber, + Title = u.Title, + Overview = u.Overview, + AirDate = u.AirDate.Add(Convert.ToDateTime(u.Series.AirTimes).TimeOfDay) + }); return View(new GridModel(upcoming)); }