예제 #1
0
        public Pagination <AnimalDto> GetAllAnimals(AnimalFilter filter = null, AnimalPaginationFilter pagination = null)
        {
            var filterQuery             = _mapper.Map <AnimalQuery>(filter);
            var paginationQuery         = _mapper.Map <AnimalPaginationQuery>(pagination);
            var skip                    = (paginationQuery.PageNumber - 1) * paginationQuery.PageSize;
            IQueryable <Animal> animals = _repository.GetAllQueryable()
                                          .Where(x => x.Status != AnimalStatus.Adopted && !x.IsHidden)
                                          .Include(animal => animal.Images)
                                          .Include(x => x.Category)
                                          .Include(x => x.Videos)
                                          .Include(x => x.Description)
                                          .Include(x => x.Breed)
                                          .OrderByDescending(x => x.IsNew).ThenByDescending(x => x.FoundDate);

            if (filter != null)
            {
                animals = _animalFilterService.AddAllFiltersQuery(filterQuery, animals);
            }
            var queryResult   = animals.ToList();
            var animalsResult = animals.Select(x => _mapper.Map <AnimalDto>(x))
                                .Skip(skip).Take(paginationQuery.PageSize).ToList();
            var paginationResponse = PaginationHelper.CreatePaginatedResponse(_uriService, paginationQuery,
                                                                              animalsResult, queryResult, "/Animal/GetAllAnimalsIncludeValues", filterQuery);

            return(paginationResponse);
        }
예제 #2
0
        public Pagination <ArticleDto> GetAllArticles(ArticleFilter filters = null, ArticlePaginationFilter pagination = null)
        {
            var filterQuery        = _mapper.Map <ArticleQuery>(filters);
            var paginationQuery    = _mapper.Map <ArticlePaginationQuery>(pagination);
            var skip               = (paginationQuery.PageNumber - 1) * paginationQuery.PageSize;
            var articles           = GetArticlesWithIncludes().OrderByDescending(x => x.Created);
            var filteredArticles   = _articleFilterService.AddAllFiltersQuery(filterQuery, articles).ToList();
            var articlesResult     = filteredArticles.Select(x => _mapper.Map <ArticleDto>(x)).Skip(skip).Take(paginationQuery.PageSize);
            var paginationResponse = PaginationHelper.CreatePaginatedResponse(_uriService, paginationQuery,
                                                                              articlesResult.ToList(), filteredArticles.ToList(), "/Article", filterQuery);

            return(paginationResponse);
        }