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)); }
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)); }