Esempio n. 1
0
        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)));
        }
Esempio n. 3
0
 public ArtworkWithFiltersForCountSpecification(ArtworkSpecParams artworkParams)
     : base(x =>
            (string.IsNullOrEmpty(artworkParams.Search) || x.Name.ToLower().Contains(artworkParams.Search)) &&
            (!artworkParams.ArtCollectionId.HasValue || x.ArtCollectionId == artworkParams.ArtCollectionId))
 {
 }