Example #1
0
        public async Task <PagedList <AlbumDto> > GetAlbumsAsync(string username, AlbumParameters albumParameters)
        {
            var albums = await _albumRepository.GetAlbumsAsync(username);

            SearchByTitle(ref albums, albumParameters.Title);
            SearchByArtistName(ref albums, albumParameters.ArtistName);
            SearchByPublicationYear(ref albums, albumParameters.PublicationYear);

            var albumsDto = _mapper.Map <ICollection <AlbumDto> >(albums);

            return(PagedList <AlbumDto> .ToPagedList(albumsDto.ToList(), albumParameters.PageNumber, albumParameters.PageSize));
        }
        public async Task <ActionResult <List <AlbumDto> > > Get([FromQuery] AlbumParameters albumParameters)
        {
            var username = User.FindFirst(c => c.Type == ClaimTypes.Name).Value;
            var albums   = await _albumService.GetAlbumsAsync(username, albumParameters);

            var metadata = new
            {
                albums.TotalCount,
                albums.PageSize,
                albums.CurrentPage,
                albums.TotalPages,
                albums.HasNext,
                albums.HasPrevious
            };

            Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata));

            return(Ok(albums));
        }