public ArtworkWithSpecification(ArtworkSpecParams artworkParams) : base(x => (string.IsNullOrEmpty(artworkParams.Search) || x.Name.ToLower().Contains(artworkParams.Search)) && (!artworkParams.ArtCollectionId.HasValue || x.ArtCollectionId == artworkParams.ArtCollectionId) ) { AddOrderBy(x => x.Name); ApplyPaging(artworkParams.PageSize * (artworkParams.PageIndex - 1), artworkParams.PageSize); if (!string.IsNullOrEmpty(artworkParams.Sort)) { switch (artworkParams.Sort) { case "priceAsc": AddOrderBy(p => p.Price); break; case "priceDesc": AddOrderByDescending(p => p.Price); break; default: AddOrderBy(n => n.Name); break; } } }
public async Task <ActionResult <Pagination <ArtworkToReturnDto> > > GetArtworks([FromQuery] ArtworkSpecParams artworkParams) { var spec = new ArtworkWithSpecification(artworkParams); var countSpec = new ArtworkWithSpecification(artworkParams); var totalItems = await _artworksRepo.CountAsync(countSpec); var artworks = await _artworksRepo.ListAsync(spec); var data = _mapper.Map <IReadOnlyList <Artwork>, IReadOnlyList <ArtworkToReturnDto> >(artworks); return(Ok(new Pagination <ArtworkToReturnDto>(artworkParams.PageIndex, artworkParams.PageSize, totalItems, data))); }
public ArtworkWithFiltersForCountSpecification(ArtworkSpecParams artworkParams) : base(x => (string.IsNullOrEmpty(artworkParams.Search) || x.Name.ToLower().Contains(artworkParams.Search)) && (!artworkParams.ArtCollectionId.HasValue || x.ArtCollectionId == artworkParams.ArtCollectionId)) { }