using System; using System.Collections.Generic; using System.Linq; using Ninject; using NzbDrone.Core.Model; using NzbDrone.Core.Repository; using PetaPoco; namespace NzbDrone.Core.Providers { public class UpcomingEpisodesProvider { private readonly IDatabase _database; [Inject] public UpcomingEpisodesProvider(IDatabase database) { _database = database; } public virtual UpcomingEpisodesModel Upcoming() { 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(); var week = allEps.Where(e => e.AirDate > DateTime.Today).ToList(); return new UpcomingEpisodesModel { Yesterday = yesterday, Today = today, Week = week }; } public virtual List Yesterday() { 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(@"SELECT * FROM Episodes INNER JOIN Series ON Episodes.SeriesId = Series.SeriesId WHERE AirDate = @0", DateTime.Today); } public virtual List Tomorrow() { 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(@"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)); } } }