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);
 }
Example #7
0
 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);
 }
Example #9
0
 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();
 }
Example #10
0
 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();
 }
Example #11
0
 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();
 }
Example #12
0
 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();
 }
Example #13
0
        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");
            }
        }
Example #14
0
 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);
 }
Example #15
0
 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();
 }
Example #16
0
 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));
 }
Example #17
0
 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);
 }
Example #18
0
 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);
 }
Example #19
0
 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();
 }
Example #20
0
 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);
 }
Example #21
0
 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();
 }
Example #22
0
 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);
 }
Example #23
0
 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();
 }
Example #24
0
 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);
 }
Example #25
0
 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);
 }
Example #26
0
 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);
 }
Example #27
0
 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);
 }
Example #28
0
 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);
 }
Example #29
0
 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);
 }
Example #30
0
 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);
 }
Example #31
0
 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);
 }
Example #32
0
 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);
 }
Example #33
0
        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.");
            }
        }