Example #1
0
        public GenericApiResponse <ObjectDto> GetPokemons(PagingParams pagingParams)
        {
            var genericApiResponse = new GenericApiResponse <ObjectDto>();

            if (pagingParams == null)
            {
                genericApiResponse.Success      = false;
                genericApiResponse.ErrorMessage = ApiErrors.BadRequest.GetDescription();
                throw new ApiException(ApiErrors.BadRequest);
            }


            var pokemonEntities = _pokemonRepository.GetPokemons(pagingParams);
            IEnumerable <Core.Entities.Pokemon> orderedPokemons = pokemonEntities.List.OrderBy(s => s.Name).ToList();

            Response?.Headers.Add("X-Pagination", pokemonEntities.GetHeader().ToJson());
            var outputModel = new ObjectDto
            {
                Paging = pokemonEntities.GetHeader()
            };

            var query = _pokemonService.GetFilteredSortQuery(pagingParams.Sort);

            if (query != null)
            {
                outputModel.Pokemons = orderedPokemons.Select(x => _mapper.Map(x, new PokemonDto())).AsQueryable()
                                       .OrderBy(query);
            }
            else
            {
                outputModel.Pokemons = orderedPokemons.Select(x => _mapper.Map(x, new PokemonDto())).AsQueryable()
                                       .OrderBy(x => x.name);
            }

            genericApiResponse.Data = outputModel;

            return(genericApiResponse);
        }