private async Task <IPagedCollection <TrackDetail> > GetTrackList(GetTrackListQuery request) { var filter = _filterBuilder .WhereAlbumLike(request.Album) .WhereArtistLike(request.Artist) .WhereComposerLike(request.Composer) .WhereGenreLike(request.Genre) .WhereMediaTypeLike(request.MediaType) .WhereNameLike(request.Name) .WherePrice(request.PriceFrom, request.PriceTo) .WherePlaylistIdEquals(request.PlaylistId) .Filter; var tracksFromDb = await _context .Tracks .TagWithQueryName(nameof(GetTrackList)) .AsNoTracking() .Where(filter) .Include(track => track.Genre) .Include(track => track.Album !.Artist) .Include(track => track.MediaType) .OrderBy(request.Order, _orderBuilder) .ToPagedCollectionAsync(request.PageNumber, request.PageSize); var tracks = _mapper.Map <IReadOnlyList <TrackDetail> >(tracksFromDb); return(new PagedCollection <TrackDetail>( tracks, tracksFromDb.ItemCount, tracksFromDb.CurrentPageNumber, tracksFromDb.PageSize)); }
public Task <IPagedCollection <TrackDetail> > Handle(GetTrackListQuery request, CancellationToken cancellationToken) { if (request is null) { throw new ArgumentNullException(nameof(request)); } return(GetTrackList(request)); }