public async Task <Pagination.PaginationResponse <Playlist> > PagePlaylists(Pagination.PaginationRequest <Playlist> request)
        {
            var user = await user_manager.GetUserAsync(http_context.HttpContext.User);

            var playlists = mintplayer_context.Playlists
                            .Where(p => p.User == user);

            // 1) Sort
            var ordered_playlists = request.SortDirection == System.ComponentModel.ListSortDirection.Descending
                ? playlists.OrderByDescending(request.SortProperty)
                : playlists.OrderBy(request.SortProperty);

            // 2) Page
            var paged_playlists = ordered_playlists
                                  .Skip((request.Page - 1) * request.PerPage)
                                  .Take(request.PerPage);

            // 3) Convert to DTO
            var dto_playlists = await paged_playlists.Select(p => ToDto(p, false)).ToListAsync();

            var count_playlists = await playlists.CountAsync();

            return(new Pagination.PaginationResponse <Playlist>(request, count_playlists, dto_playlists));


            //var playlists = await mintplayer_context.Playlists
            //    //.Where(p => p.User == user)
            //    .Select(p => ToDto(p, false))
            //    .ToListAsync();
            //var count = await mintplayer_context.Playlists.CountAsync();
            //return new Pagination.PaginationResponse<Playlist>(request, count, playlists);
        }
示例#2
0
        public async Task <Pagination.PaginationResponse <Song> > PageLikedSongs(Pagination.PaginationRequest <Song> request)
        {
            var user = await user_manager.GetUserAsync(http_context.HttpContext.User);

            if (user == null)
            {
                throw new UnauthorizedAccessException();
            }

            var songs = mintplayer_context.Songs;

            // 1) Filter
            var filtered_songs = songs
                                 .Where(s => s.Likes.Any(l => l.User == user && l.DoesLike));

            // 2) Sort
            var ordered_songs = request.SortDirection == System.ComponentModel.ListSortDirection.Descending
                                ? filtered_songs.OrderByDescending(request.SortProperty)
                                : filtered_songs.OrderBy(request.SortProperty);

            // 3) Page
            var paged_songs = ordered_songs
                              .Skip((request.Page - 1) * request.PerPage)
                              .Take(request.PerPage);

            // 4) Convert to DTO
            var dto_songs = paged_songs.Select(song => ToDto(song, false, false));

            var count_songs = await filtered_songs.CountAsync();

            return(new Pagination.PaginationResponse <Song>(request, count_songs, dto_songs));
        }
示例#3
0
        public async Task <Pagination.PaginationResponse <Song> > PageSongs(Pagination.PaginationRequest <Song> request)
        {
            var songs = mintplayer_context.Songs;

            // 1) Sort
            var ordered_songs = request.SortDirection == System.ComponentModel.ListSortDirection.Descending
                ? songs.OrderByDescending(request.SortProperty)
                : songs.OrderBy(request.SortProperty);

            // 2) Page
            var paged_songs = ordered_songs
                              .Skip((request.Page - 1) * request.PerPage)
                              .Take(request.PerPage);

            // 3) Convert to DTO
            var dto_songs = await paged_songs.Select(song => ToDto(song, false, false)).ToListAsync();

            var count_songs = await mintplayer_context.Songs.CountAsync();

            return(new Pagination.PaginationResponse <Song>(request, count_songs, dto_songs));

            //var songs = mintplayer_context.Songs
            //	.Select(song => ToDto(song, false, false))
            //	.ToList();

            //return new Pagination.PaginationResponse<Song>(
            //	request,
            //	songs.Count,
            //	songs
            //);
        }
        public async Task <Pagination.PaginationResponse <Person> > PagePeople(Pagination.PaginationRequest <Person> request)
        {
            var people = mintplayer_context.People;

            // 1) Sort
            var ordered_people = request.SortDirection == System.ComponentModel.ListSortDirection.Descending
                                ? people.OrderByDescending(request.SortProperty)
                                : people.OrderBy(request.SortProperty);

            // 2) Page
            var paged_people = ordered_people
                               .Skip((request.Page - 1) * request.PerPage)
                               .Take(request.PerPage);

            // 3) Convert to DTO
            var dto_people = paged_people.Select(person => ToDto(person, false, false));

            var count_people = await people.CountAsync();

            return(new Pagination.PaginationResponse <Person>(request, count_people, dto_people));
        }
示例#5
0
        public async Task <Pagination.PaginationResponse <Artist> > PageArtists(Pagination.PaginationRequest <Artist> request)
        {
            var artists = mintplayer_context.Artists;

            // 1) Sort
            var ordered_artists = request.SortDirection == System.ComponentModel.ListSortDirection.Descending
                ? artists.OrderByDescending(request.SortProperty)
                : artists.OrderBy(request.SortProperty);

            // 2) Page
            var paged_artists = ordered_artists
                                .Skip((request.Page - 1) * request.PerPage)
                                .Take(request.PerPage);

            // 3) Convert to DTO
            var dto_artists = await paged_artists.Select(artist => ToDto(artist, false, false)).ToListAsync();

            var count_artists = await mintplayer_context.Artists.CountAsync();

            return(new Pagination.PaginationResponse <Artist>(request, count_artists, dto_artists));
        }
示例#6
0
        public async Task <Pagination.PaginationResponse <Playlist> > PagePlaylists(Pagination.PaginationRequest <Playlist> request, ePlaylistScope playlistScope)
        {
            var user = await user_manager.GetUserAsync(http_context.HttpContext.User);

            IQueryable <Entities.Playlist> playlists;

            switch (playlistScope)
            {
            case ePlaylistScope.My:
                playlists = mintplayer_context.Playlists
                            .Where(p => p.User == user);
                break;

            case ePlaylistScope.Public:
                playlists = mintplayer_context.Playlists
                            .Where(p => p.Accessibility == MintPlayer.Dtos.Enums.ePlaylistAccessibility.Public);
                break;

            default:
                throw new ArgumentException(nameof(playlistScope));
            }


            // 1) Sort
            var ordered_playlists = request.SortDirection == System.ComponentModel.ListSortDirection.Descending
                ? playlists.OrderByDescending(request.SortProperty)
                : playlists.OrderBy(request.SortProperty);

            // 2) Page
            var paged_playlists = ordered_playlists
                                  .Skip((request.Page - 1) * request.PerPage)
                                  .Take(request.PerPage);

            // 3) Convert to DTO
            var dto_playlists = await paged_playlists.Select(p => ToDto(p, false)).ToListAsync();

            var count_playlists = await playlists.CountAsync();

            return(new Pagination.PaginationResponse <Playlist>(request, count_playlists, dto_playlists));
        }
示例#7
0
        public async Task <Pagination.PaginationResponse <Song> > PageSongs(Pagination.PaginationRequest <Song> request)
        {
            var songs = await songRepository.PageSongs(request);

            return(songs);
        }
示例#8
0
        public async Task <Pagination.PaginationResponse <Artist> > PageArtists(Pagination.PaginationRequest <Artist> request)
        {
            var artists = await artistRepository.PageArtists(request);

            return(artists);
        }
示例#9
0
        public async Task <Pagination.PaginationResponse <TagCategory> > PageTagCategories(Pagination.PaginationRequest <TagCategory> request)
        {
            var categories = await tagCategoryRepository.PageTagCategories(request);

            return(categories);
        }
示例#10
0
        public async Task <ActionResult <Pagination.PaginationResponse <Artist> > > PageFavoriteSongs([FromBody] Pagination.PaginationRequest <Song> request)
        {
            var songs = await songService.PageLikedSongs(request);

            return(Ok(songs));
        }
示例#11
0
        public async Task <ActionResult <Pagination.PaginationResponse <TagCategory> > > PageTagCategories([FromBody] Pagination.PaginationRequest <TagCategory> request)
        {
            var categories = await tagCategoryService.PageTagCategories(request);

            return(Ok(categories));
        }
示例#12
0
 public Task <Pagination.PaginationResponse <Song> > PageLikedSongs(Pagination.PaginationRequest <Song> request)
 {
     return(songRepository.PageLikedSongs(request));
 }
示例#13
0
        public async Task <ActionResult <Pagination.PaginationResponse <Playlist> > > PagePlaylists([FromBody] Pagination.PaginationRequest <Playlist> request)
        {
            var playlists = await playlistService.PagePlaylists(request);

            return(Ok(playlists));
        }
示例#14
0
        public async Task <ActionResult <Pagination.PaginationResponse <Person> > > PageFavoritePeople([FromBody] Pagination.PaginationRequest <Person> request)
        {
            var people = await personService.PageLikedPeople(request);

            return(Ok(people));
        }
示例#15
0
        public async Task <ActionResult <Pagination.PaginationResponse <Artist> > > PageFavoriteArtists([FromBody] Pagination.PaginationRequest <Artist> request)
        {
            var artists = await artistService.PageLikedArtists(request);

            return(Ok(artists));
        }
示例#16
0
        public async Task <Pagination.PaginationResponse <Person> > PagePeople(Pagination.PaginationRequest <Person> request)
        {
            var people = await personRepository.PagePeople(request);

            return(people);
        }
示例#17
0
 public Task <Pagination.PaginationResponse <Person> > PageLikedPeople(Pagination.PaginationRequest <Person> request)
 {
     return(personRepository.PageLikedPeople(request));
 }
示例#18
0
        public async Task <Pagination.PaginationResponse <TagCategory> > PageTagCategories(Pagination.PaginationRequest <TagCategory> request)
        {
            var tag_categories = mintplayer_context.TagCategories;

            // 1) Sort
            var ordered_tag_categories = request.SortDirection == System.ComponentModel.ListSortDirection.Descending
                ? tag_categories.OrderByDescending(request.SortProperty)
                : tag_categories.OrderBy(request.SortProperty);

            // 2) Page
            var paged_tag_categories = ordered_tag_categories
                                       .Skip((request.Page - 1) * request.PerPage)
                                       .Take(request.PerPage);

            // 3) Convert to DTO
            var dto_tag_categories = paged_tag_categories.Select(tag_category => ToDto(tag_category, false));

            var count_tag_catgegories = await mintplayer_context.TagCategories.CountAsync();

            return(new Pagination.PaginationResponse <TagCategory>(request, count_tag_catgegories, dto_tag_categories));
        }
示例#19
0
 public Task <Pagination.PaginationResponse <Artist> > PageLikedArtists(Pagination.PaginationRequest <Artist> request)
 {
     return(artistRepository.PageLikedArtists(request));
 }