From ac2f3399f0bb306d3f30c4c66244a87f9fcc2b09 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Thu, 17 May 2012 18:14:44 -0700 Subject: [PATCH] New: Upcoming page is now broken down by day. --- .../Providers/UpcomingEpisodesProvider.cs | 3 +- .../Controllers/UpcomingController.cs | 16 ++- NzbDrone.Web/Models/UpcomingEpisodesModel.cs | 7 +- NzbDrone.Web/Views/Upcoming/Index.cshtml | 117 ++++++++++++++++-- 4 files changed, 125 insertions(+), 18 deletions(-) diff --git a/NzbDrone.Core/Providers/UpcomingEpisodesProvider.cs b/NzbDrone.Core/Providers/UpcomingEpisodesProvider.cs index cba27572e..00c924d84 100644 --- a/NzbDrone.Core/Providers/UpcomingEpisodesProvider.cs +++ b/NzbDrone.Core/Providers/UpcomingEpisodesProvider.cs @@ -36,10 +36,9 @@ namespace NzbDrone.Core.Providers public virtual List Week() { return RecentEpisodes().Where(c => c.AirDate >= DateTime.Today.AddDays(2).Date).ToList(); - } - private List RecentEpisodes() + public virtual List RecentEpisodes() { return _database.Fetch(@"SELECT * FROM Episodes INNER JOIN Series ON Episodes.SeriesId = Series.SeriesId diff --git a/NzbDrone.Web/Controllers/UpcomingController.cs b/NzbDrone.Web/Controllers/UpcomingController.cs index 29957d561..c3bf6b8e0 100644 --- a/NzbDrone.Web/Controllers/UpcomingController.cs +++ b/NzbDrone.Web/Controllers/UpcomingController.cs @@ -23,12 +23,20 @@ namespace NzbDrone.Web.Controllers public ActionResult Index() { + var upcomingEpisodes = GetUpcomingEpisodeModels(_upcomingEpisodesProvider.RecentEpisodes()); + + var upcoming = new UpcomingEpisodesModel { - Yesterday = GetUpcomingEpisodeModels(_upcomingEpisodesProvider.Yesterday()), - Today = GetUpcomingEpisodeModels(_upcomingEpisodesProvider.Today()), - Tomorrow = GetUpcomingEpisodeModels(_upcomingEpisodesProvider.Tomorrow()), - Week = GetUpcomingEpisodeModels(_upcomingEpisodesProvider.Week()) + Yesterday = upcomingEpisodes.Where(e => e.AirDateTime.Date == DateTime.Today.AddDays(-1)).ToList(), + Today = upcomingEpisodes.Where(e => e.AirDateTime.Date == DateTime.Today).ToList(), + Tomorrow = upcomingEpisodes.Where(e => e.AirDateTime.Date == DateTime.Today.AddDays(1)).ToList(), + TwoDays = upcomingEpisodes.Where(e => e.AirDateTime.Date == DateTime.Today.AddDays(2)).ToList(), + ThreeDays = upcomingEpisodes.Where(e => e.AirDateTime.Date == DateTime.Today.AddDays(3)).ToList(), + FourDays = upcomingEpisodes.Where(e => e.AirDateTime.Date == DateTime.Today.AddDays(4)).ToList(), + FiveDays = upcomingEpisodes.Where(e => e.AirDateTime.Date == DateTime.Today.AddDays(5)).ToList(), + SixDays = upcomingEpisodes.Where(e => e.AirDateTime.Date == DateTime.Today.AddDays(6)).ToList(), + Later = upcomingEpisodes.Where(e => e.AirDateTime.Date >= DateTime.Today.AddDays(7)).ToList() }; return View(upcoming); diff --git a/NzbDrone.Web/Models/UpcomingEpisodesModel.cs b/NzbDrone.Web/Models/UpcomingEpisodesModel.cs index 411237491..c060d7ad2 100644 --- a/NzbDrone.Web/Models/UpcomingEpisodesModel.cs +++ b/NzbDrone.Web/Models/UpcomingEpisodesModel.cs @@ -10,6 +10,11 @@ namespace NzbDrone.Web.Models public List Yesterday { get; set; } public List Today { get; set; } public List Tomorrow { get; set; } - public List Week { get; set; } + public List TwoDays { get; set; } + public List ThreeDays { get; set; } + public List FourDays { get; set; } + public List FiveDays { get; set; } + public List SixDays { get; set; } + public List Later { get; set; } } } \ No newline at end of file diff --git a/NzbDrone.Web/Views/Upcoming/Index.cshtml b/NzbDrone.Web/Views/Upcoming/Index.cshtml index 127c94bd3..0e08dd2dd 100644 --- a/NzbDrone.Web/Views/Upcoming/Index.cshtml +++ b/NzbDrone.Web/Views/Upcoming/Index.cshtml @@ -111,25 +111,120 @@ Html.RenderPartial("UpcomingEpisode", episode, new ViewDataDictionary { new KeyValuePair("AltRow", true) }); } } + + + @DateTime.Today.AddDays(2).DayOfWeek + + + @for (int i = 0; i < Model.TwoDays.Count; i++) + { + var episode = Model.TwoDays[i]; + + if (i % 2 == 0) + { + Html.RenderPartial("UpcomingEpisode", episode); + } + + else + { + Html.RenderPartial("UpcomingEpisode", episode, new ViewDataDictionary { new KeyValuePair("AltRow", true) }); + } + } + + + @DateTime.Today.AddDays(3).DayOfWeek + + + @for (int i = 0; i < Model.ThreeDays.Count; i++) + { + var episode = Model.ThreeDays[i]; + + if (i % 2 == 0) + { + Html.RenderPartial("UpcomingEpisode", episode); + } + + else + { + Html.RenderPartial("UpcomingEpisode", episode, new ViewDataDictionary { new KeyValuePair("AltRow", true) }); + } + } + + + @DateTime.Today.AddDays(4).DayOfWeek + + + @for (int i = 0; i < Model.FourDays.Count; i++) + { + var episode = Model.FourDays[i]; + + if (i % 2 == 0) + { + Html.RenderPartial("UpcomingEpisode", episode); + } + + else + { + Html.RenderPartial("UpcomingEpisode", episode, new ViewDataDictionary { new KeyValuePair("AltRow", true) }); + } + } + + + @DateTime.Today.AddDays(5).DayOfWeek + + + @for (int i = 0; i < Model.FiveDays.Count; i++) + { + var episode = Model.FiveDays[i]; + + if (i % 2 == 0) + { + Html.RenderPartial("UpcomingEpisode", episode); + } + + else + { + Html.RenderPartial("UpcomingEpisode", episode, new ViewDataDictionary { new KeyValuePair("AltRow", true) }); + } + } + + + @DateTime.Today.AddDays(6).DayOfWeek + + + @for (int i = 0; i < Model.SixDays.Count; i++) + { + var episode = Model.SixDays[i]; + + if (i % 2 == 0) + { + Html.RenderPartial("UpcomingEpisode", episode); + } + + else + { + Html.RenderPartial("UpcomingEpisode", episode, new ViewDataDictionary { new KeyValuePair("AltRow", true) }); + } + } Later - @for (int i = 0; i < Model.Week.Count; i++) - { - var episode = Model.Week[i]; - - if (i % 2 == 0) + @for (int i = 0; i < Model.Later.Count; i++) { - Html.RenderPartial("UpcomingEpisode", episode); - } + var episode = Model.Later[i]; - else - { - Html.RenderPartial("UpcomingEpisode", episode, new ViewDataDictionary { new KeyValuePair("AltRow", true) }); + if (i % 2 == 0) + { + Html.RenderPartial("UpcomingEpisode", episode); + } + + else + { + Html.RenderPartial("UpcomingEpisode", episode, new ViewDataDictionary { new KeyValuePair("AltRow", true) }); + } } - } @section Scripts{