public async Task <PagedList <Song> > GetSongs(SongParams songParams)
        {
            var songs = _context.Songs.OrderBy(u => u.Title).AsQueryable();

            if (songs.Where(u => u.Genre == songParams.Genre).Any())
            {
                songs = songs.Where(u => u.Genre == songParams.Genre).OrderBy(u => u.Title);
            }

            if (songParams.Saved)
            {
                var savedSongs = await GetSavedSongs(songParams.UserId);

                songs = songs.Where(u => savedSongs.Contains(u.Id));
            }

            if (!string.IsNullOrEmpty(songParams.OrderBy))
            {
                switch (songParams.OrderBy)
                {
                case "artist":
                    songs = songs.OrderBy(u => u.Artist);
                    break;

                default:
                    songs = songs.OrderBy(u => u.Title);
                    break;
                }
            }


            return(await PagedList <Song> .CreateAsync(songs, songParams.PageNumber, songParams.PageSize));
        }
Пример #2
0
        public async Task <IActionResult> GetSongs([FromQuery] SongParams songParams)
        {
            var songs = await _repo.GetSongs(songParams);

            Response.AddPagination(songs.CurrentPage, songs.PageSize, songs.TotalCount, songs.TotalPages);

            return(Ok(songs));
        }