public IList<WebTVEpisodeDetailed> GetTVEpisodesDetailedForTVShowByRange(int? provider, string id, int start, int end, WebSortField? sort = WebSortField.TVEpisodeNumber, WebSortOrder? order = WebSortOrder.Asc) { return TVShowLibraries[provider].GetAllEpisodesDetailed().AsQueryable().Where(p => p.ShowId == id).SortMediaItemList(sort, order, WebSortField.TVEpisodeNumber).TakeRange(start, end - start).Finalize(provider, ProviderType.TVShow); }
public IList<WebActor> GetTVShowActorsByRange(int? provider, int start, int end, string filter = null, WebSortField? sort = WebSortField.Title, WebSortOrder? order = WebSortOrder.Asc) { return TVShowLibraries[provider].GetAllTVShowsBasic().AsQueryable().SelectMany(x => x.Actors).Distinct().Filter(filter).SortMediaItemList(sort, order, WebSortField.Title).TakeRange(start, end).Finalize(provider, ProviderType.TVShow); }
public IList<WebPlaylistItem> GetPlaylistItemsByRange(int? provider, string playlistId, int start, int end, WebSortField? sort = WebSortField.Title, WebSortOrder? order = WebSortOrder.Asc) { return GetAllPlaylistItems(provider, playlistId).AsQueryable().TakeRange(start, end).Finalize(provider, ProviderType.Music); }
public IList<WebTVEpisodeBasic> GetTVEpisodesBasicForTVShow(int? provider, string id, WebSortField? sort = WebSortField.TVEpisodeNumber, WebSortOrder? order = WebSortOrder.Asc) { return TVShowLibraries[provider].GetAllEpisodesBasic().AsQueryable().Where(p => p.ShowId == id).SortMediaItemList(sort, order, WebSortField.TVEpisodeNumber).Finalize(provider, ProviderType.TVShow); }
public IList<WebMusicTrackDetailed> GetMusicTracksDetailed(int? provider, string filter = null, WebSortField? sort = WebSortField.Title, WebSortOrder? order = WebSortOrder.Asc) { return MusicLibraries[provider].GetAllTracksDetailed().AsQueryable().Filter(filter).SortMediaItemList(sort, order).Finalize(provider, ProviderType.Music); }
public IList<WebPictureDetailed> GetPicturesDetailed(int? provider, WebSortField? sort = WebSortField.Title, WebSortOrder? order = WebSortOrder.Asc) { return PictureLibraries[provider].GetAllPicturesDetailed().AsQueryable().SortMediaItemList(sort, order).Finalize(provider, ProviderType.Picture); }
public IList<WebScheduledRecording> GetScheduledRecordingsForToday(string filter = null, WebSortField? sort = WebSortField.Title, WebSortOrder? order = WebSortOrder.Asc) { return GetScheduledRecordingsForDate(DateTime.Today, filter, sort, order); }
public IList<WebMusicTrackBasic> GetMusicTracksBasicByRange(int? provider, int start, int end, string filter = null, WebSortField? sort = WebSortField.Title, WebSortOrder? order = WebSortOrder.Asc) { return MusicLibraries[provider].GetAllTracks().AsQueryable().Filter(filter).SortMediaItemList(sort, order).TakeRange(start, end).Finalize(provider, ProviderType.Music); }
public IList<WebRecordingBasic> GetRecordingsByRange(int start, int end, string filter = null, WebSortField? sort = WebSortField.Title, WebSortOrder? order = WebSortOrder.Asc) { return Recording.ListAll().Select(rec => rec.ToWebRecording()).Filter(filter).SortRecordingList(sort, order).TakeRange(start, end).ToList(); }
public IList<WebScheduledRecording> GetScheduledRecordingsForDate(DateTime date, string filter = null, WebSortField? sort = WebSortField.Title, WebSortOrder? order = WebSortOrder.Asc) { return Schedule.ListAll().Select(x => GetScheduledRecording(x, date)).Where(x => x != null).Filter(filter).SortScheduledRecordingList(sort, order).ToList(); }
public IList<WebChannelGroup> GetRadioGroupsByRange(int start, int end, string filter = null, WebSortField? sort = WebSortField.User, WebSortOrder? order = WebSortOrder.Asc) { return RadioChannelGroup.ListAll().Select(chg => chg.ToWebChannelGroup()).Filter(filter).SortGroupList(sort, order).TakeRange(start, end).ToList(); }
public IList<WebChannelDetailed> GetRadioChannelsDetailedByRange(int start, int end, int? groupId, string filter = null, WebSortField? sort = WebSortField.User, WebSortOrder? order = WebSortOrder.Asc) { return GetRadioChannels(groupId, sort, order).Select(ch => ch.ToWebChannelDetailed()).Filter(filter).SortChannelList(sort, order).TakeRange(start, end).ToList(); }
public static IOrderedQueryable <T> SortMediaItemList <T>(this IQueryable <T> list, WebSortField?sortInput, WebSortOrder?orderInput, WebSortField defaultSort, WebSortOrder defaultOrder) { // parse arguments if (orderInput != null && orderInput != WebSortOrder.Asc && orderInput != WebSortOrder.Desc) { Log.Warn("Invalid OrderBy value {0} given", orderInput); throw new Exception("Invalid OrderBy value specified"); } WebSortField sort = sortInput.HasValue ? sortInput.Value : defaultSort; WebSortOrder order = orderInput.HasValue ? orderInput.Value : defaultOrder; // do the actual sorting try { switch (sort) { // generic case WebSortField.Title: return(list.OrderBy(x => ((ITitleSortable)x).Title, order)); case WebSortField.DateAdded: return(list.OrderBy(x => ((IDateAddedSortable)x).DateAdded, order)); case WebSortField.Year: return(list.OrderBy(x => ((IYearSortable)x).Year, order)); case WebSortField.Genre: return(list.OrderBy(x => ((IGenreSortable)x).Genres.First(), order)); case WebSortField.Rating: return(list.OrderBy(x => ((IRatingSortable)x).Rating, order)); case WebSortField.Categories: return(list.OrderBy(x => ((ICategorySortable)x).Categories.First().Title, order)); case WebSortField.Type: return(list.OrderBy(x => ((ITypeSortable)x).Type, order)); // music case WebSortField.MusicTrackNumber: return(list.OrderBy(x => ((IMusicTrackNumberSortable)x).TrackNumber, order)); case WebSortField.MusicComposer: return(list.OrderBy(x => ((IMusicComposerSortable)x).Composer.First(), order)); // tv case WebSortField.TVEpisodeNumber: return(list.OrderBy(x => ((ITVEpisodeNumberSortable)x).SeasonNumber, order).ThenBy(x => ((ITVEpisodeNumberSortable)x).EpisodeNumber, order)); case WebSortField.TVSeasonNumber: return(list.OrderBy(x => ((ITVSeasonNumberSortable)x).SeasonNumber, order)); case WebSortField.TVDateAired: return(list.OrderBy(x => ((ITVDateAiredSortable)x).FirstAired, order)); // picture case WebSortField.PictureDateTaken: return(list.OrderBy(x => ((IPictureDateTakenSortable)x).DateTaken, order)); default: Log.Warn("Invalid SortBy value {0}", sortInput); throw new Exception("Sorting on this property is not supported for this media type"); } } catch (Exception ex) { Log.Warn(String.Format("Tried to do invalid sorting; actual values SortBy={0}, OrderBy={1}", sort, order), ex); throw new Exception("Sorting on this property is not supported for this media type"); } }
public IList<WebTVShowBasic> GetTVShowsBasic(int? provider, string filter = null, WebSortField? sort = WebSortField.Title, WebSortOrder? order = WebSortOrder.Asc) { return TVShowLibraries[provider].GetAllTVShowsBasic().AsQueryable().Filter(filter).SortMediaItemList(sort, order).Finalize(provider, ProviderType.TVShow); }
public IList<WebScheduleBasic> GetSchedulesByRange(int start, int end, string filter = null, WebSortField? sort = WebSortField.Title, WebSortOrder? order = WebSortOrder.Asc) { return Schedule.ListAll().Select(s => s.ToWebSchedule()).Filter(filter).SortScheduleList(sort, order).TakeRange(start, end).ToList(); }
public static IOrderedQueryable <T> SortMediaItemList <T>(this IQueryable <T> list, WebSortField?sortInput, WebSortOrder?orderInput, WebSortField defaultSort) { return(SortMediaItemList <T>(list, sortInput, orderInput, defaultSort, WebSortOrder.Asc)); }
private IEnumerable<Channel> GetRadioChannels(int? groupId, WebSortField? sort, WebSortOrder? order) { return groupId == null ? (IEnumerable<Channel>)Channel.ListAll().Where(ch => ch.IsRadio).OrderBy(ch => sort == WebSortField.User ? ch.SortOrder : 1, order) : (IEnumerable<Channel>)_tvBusiness.GetRadioGuideChannelsForGroup(groupId.Value); }
public IList<WebMusicTrackBasic> GetMusicTracksBasicForAlbum(int? provider, string id, WebSortField? sort = WebSortField.Title, WebSortOrder? order = WebSortOrder.Asc) { return MusicLibraries[provider].GetAllTracks().AsQueryable().Where(p => p.AlbumId == id).SortMediaItemList(sort, order).Finalize(provider, ProviderType.Music); }
public IList<WebFileBasic> GetFileSystemFiles(int? provider, string id, WebSortField? sort = WebSortField.Title, WebSortOrder? order = WebSortOrder.Asc) { return FileSystemLibraries[provider].GetFilesListing(id).AsQueryable().SortMediaItemList(sort, order).Finalize(provider, ProviderType.Filesystem).ToList(); }
public IList<WebMusicTrackDetailed> GetMusicTracksDetailedForArtist(int? provider, string id, WebSortField? sort = WebSortField.Title, WebSortOrder? order = WebSortOrder.Asc) { return MusicLibraries[provider].GetAllTracksDetailed().AsQueryable().Where(p => p.ArtistId.Contains(id)).SortMediaItemList(sort, order).Finalize(provider, ProviderType.Music); }
public IList<WebFilesystemItem> GetFileSystemFilesAndFoldersByRange(int? provider, string id, int start, int end, WebSortField? sort = WebSortField.Title, WebSortOrder? order = WebSortOrder.Asc) { var listA = FileSystemLibraries[provider].GetFilesListing(id).AsQueryable().Select(x => x.ToWebFilesystemItem()); var listB = FileSystemLibraries[provider].GetFoldersListing(id).AsQueryable().Select(x => x.ToWebFilesystemItem()); return listA.Concat(listB).SortMediaItemList(sort, order).TakeRange(start, end).Finalize(provider, ProviderType.Filesystem).ToList(); }
public IList<Interfaces.Playlist.WebPlaylistItem> GetPlaylistItems(int? provider, string playlistId, WebSortField? sort = WebSortField.Title, WebSortOrder? order = WebSortOrder.Asc) { return PlaylistLibraries[provider].GetPlaylistItems(playlistId).Finalize(provider, ProviderType.Music); }
public IList<WebFolderBasic> GetFileSystemFoldersByRange(int? provider, string id, int start, int end, WebSortField? sort = WebSortField.Title, WebSortOrder? order = WebSortOrder.Asc) { return FileSystemLibraries[provider].GetFoldersListing(id).AsQueryable().SortMediaItemList(sort, order).TakeRange(start, end).Finalize(provider, ProviderType.Filesystem).ToList(); }
public IList<WebTVEpisodeBasic> GetTVEpisodesBasicByRange(int? provider, int start, int end, WebSortField? sort = WebSortField.TVEpisodeNumber, WebSortOrder? order = WebSortOrder.Asc) { return TVShowLibraries[provider].GetAllEpisodesBasic().AsQueryable().SortMediaItemList(sort, order, WebSortField.TVEpisodeNumber).TakeRange(start, end).Finalize(provider, ProviderType.TVShow); }
public IList<WebActor> GetMovieActors(int? provider, string filter = null, WebSortField? sort = WebSortField.Title, WebSortOrder? order = WebSortOrder.Asc) { return MovieLibraries[provider].GetAllMovies().AsQueryable().SelectMany(x => x.Actors).Distinct().Filter(filter).SortMediaItemList(sort, order, WebSortField.Title).Finalize(provider, ProviderType.Movie); }
public IList<WebTVEpisodeDetailed> GetTVEpisodesDetailed(int? provider, WebSortField? sort = WebSortField.TVEpisodeNumber, WebSortOrder? order = WebSortOrder.Asc) { return TVShowLibraries[provider].GetAllEpisodesDetailed().AsQueryable().SortMediaItemList(sort, order, WebSortField.TVEpisodeNumber).Finalize(provider, ProviderType.TVShow); }
public IList<WebCategory> GetMovieCategories(int? provider, WebSortField? sort = WebSortField.Title, WebSortOrder? order = WebSortOrder.Asc) { return MovieLibraries[provider].GetAllCategories().AsQueryable().SortMediaItemList(sort, order).Finalize(provider, ProviderType.Movie); }
public IList<WebTVSeasonDetailed> GetTVSeasonsDetailedForTVShow(int? provider, string id, WebSortField? sort = WebSortField.TVSeasonNumber, WebSortOrder? order = WebSortOrder.Asc) { return TVShowLibraries[provider].GetAllSeasonsDetailed().AsQueryable().Where(x => x.ShowId == id).SortMediaItemList(sort, order, WebSortField.TVSeasonNumber).Finalize(provider, ProviderType.TVShow); }
public IList<WebMovieBasic> GetMoviesBasic(int? provider, string filter = null, WebSortField? sort = WebSortField.Title, WebSortOrder? order = WebSortOrder.Asc) { return MovieLibraries[provider].GetAllMovies().AsQueryable().Filter(filter).SortMediaItemList(sort, order).Finalize(provider, ProviderType.Movie); }
public IList<WebGenre> GetTVShowGenresByRange(int? provider, int start, int end, WebSortField? sort = WebSortField.Title, WebSortOrder? order = WebSortOrder.Asc) { return TVShowLibraries[provider].GetAllGenres().AsQueryable().SortMediaItemList(sort, order).TakeRange(start, end).Finalize(provider, ProviderType.TVShow); }
public IList<WebGenre> GetMusicGenres(int? provider, WebSortField? sort = WebSortField.Title, WebSortOrder? order = WebSortOrder.Asc) { return MusicLibraries[provider].GetAllGenres().AsQueryable().SortMediaItemList(sort, order).Finalize(provider, ProviderType.Music); }
public IList<WebTVShowDetailed> GetTVShowsDetailedByRange(int? provider, int start, int end, string filter = null, WebSortField? sort = WebSortField.Title, WebSortOrder? order = WebSortOrder.Asc) { return TVShowLibraries[provider].GetAllTVShowsDetailed().AsQueryable().Filter(filter).SortMediaItemList(sort, order).TakeRange(start, end).Finalize(provider, ProviderType.TVShow); }
public static IOrderedQueryable <T> SortMediaItemList <T>(this IQueryable <T> list, WebSortField?sortInput, WebSortOrder?orderInput, WebSortField defaultSort, WebSortOrder defaultOrder) { // parse arguments if (orderInput != null && orderInput != WebSortOrder.Asc && orderInput != WebSortOrder.Desc) { Log.Warn("Invalid OrderBy value {0} given", orderInput); throw new Exception("Invalid OrderBy value specified"); } WebSortField sort = sortInput.HasValue ? sortInput.Value : defaultSort; WebSortOrder order = orderInput.HasValue ? orderInput.Value : defaultOrder; // do the actual sorting try { switch (sort) { // generic case WebSortField.Title: return(list.OrderBy(x => ((ITitleSortable)x).Title, order)); case WebSortField.NaturalTitle: return(list.OrderByNatural(x => ((ITitleSortable)x).Title, order)); case WebSortField.DateAdded: return(list.OrderBy(x => ((IDateAddedSortable)x).DateAdded, order)); case WebSortField.Year: return(list.OrderBy(x => ((IYearSortable)x).Year, order)); case WebSortField.Genre: return(list.OrderBy(x => ((IGenreSortable)x).Genres.First(), order)); case WebSortField.Rating: return(list.OrderBy(x => ((IRatingSortable)x).Rating, order)); case WebSortField.Categories: return(list.OrderBy(x => ((ICategorySortable)x).Categories.First().Title, order)); case WebSortField.Type: return(list.OrderBy(x => ((ITypeSortable)x).Type, order)); // music case WebSortField.MusicTrackNumber: return(list.OrderBy(x => ((IMusicTrackNumberSortable)x).DiscNumber, order).ThenBy(x => ((IMusicTrackNumberSortable)x).TrackNumber, order)); case WebSortField.MusicComposer: return(list.OrderBy(x => ((IMusicComposerSortable)x).Composer.First(), order)); // tv case WebSortField.TVEpisodeNumber: return(list.OrderBy(x => ((ITVEpisodeNumberSortable)x).SeasonNumber, order).ThenBy(x => ((ITVEpisodeNumberSortable)x).EpisodeNumber, order)); case WebSortField.TVSeasonNumber: return(list.OrderBy(x => ((ITVSeasonNumberSortable)x).SeasonNumber, order)); case WebSortField.TVDateAired: return(list.OrderBy(x => ((ITVDateAiredSortable)x).FirstAired, order)); // picture case WebSortField.PictureDateTaken: return(list.OrderBy(x => ((IPictureDateTakenSortable)x).DateTaken, order)); default: Log.Warn("Invalid SortBy value {0}", sortInput); throw new Exception("Sorting on this property is not supported for this media type"); } } catch (Exception ex) { Log.Warn(String.Format("Executing OrderBy(sortBy={0}, orderBy={1}) on list failed, sort parameters are invalid or list iterator failed " + "(might be caused by an invalid or unexpected database or a broken query).", sort, order), ex); throw new Exception("Failed to load data from source, please see the log file for more details."); } }