private string CreateRatesResourceUri(RatesResourceParameters parameters, ResourceUriType type) { switch (type) { case ResourceUriType.PreviousPage: return(_urlHelper.Link("GetRates", new { pageNumber = parameters.PageNumber - 1, pageSize = parameters.PageSize, searchQuery = parameters.SearchQuery, isoCode = parameters.IsoCode })); case ResourceUriType.NextPage: return(_urlHelper.Link("GetRates", new { pageNumber = parameters.PageNumber + 1, pageSize = parameters.PageSize, searchQuery = parameters.SearchQuery, isoCode = parameters.IsoCode })); default: return(_urlHelper.Link("GetRates", new { pageNumber = parameters.PageNumber, pageSize = parameters.PageSize, searchQuery = parameters.SearchQuery, isoCode = parameters.IsoCode })); } }
public async Task <IActionResult> GetRates([FromQuery] RatesResourceParameters parameters) { var ratesFromRepo = _rep.GetCurrencyRates(parameters); var paginationMetadata = new { totalCount = ratesFromRepo.TotalCount, pageSize = ratesFromRepo.PageSize, currentPage = ratesFromRepo.CurrentPage, totalPages = ratesFromRepo.TotalPages, // previousPageLink = previousPageLink, // nextPageLink = nextPageLink }; Response.Headers.Add("X-Pagination", Newtonsoft.Json.JsonConvert.SerializeObject(paginationMetadata)); var rates = Mapper.Map <IEnumerable <RateDto> >(ratesFromRepo); return(Ok(rates)); }
public PagedList <CurrencyRate> GetCurrencyRates(RatesResourceParameters parameters) { var collectionBeforePaging = _context.CurrencyRates .OrderByDescending(c => c.CreatedAt) .AsNoTracking() .AsQueryable(); // Search. // if (!string.IsNullOrEmpty(parameters.SearchQuery)) { // var searchQyeries = parameters.SearchQuery.Split(" ").ToList(); // foreach (var query in searchQyeries) { // var searchQueryForWhereClause = query.Trim().ToLowerInvariant(); // collectionBeforePaging = collectionBeforePaging // .Where(c => c.QpayTransactionId.ToLowerInvariant().Contains(searchQueryForWhereClause) // || c.GatewayTransactionId.ToLowerInvariant().Contains(searchQueryForWhereClause) // || c.ServiceProviderTransactionId.ToLowerInvariant().Contains(searchQueryForWhereClause) // || c.Account.ToLowerInvariant().Contains(searchQueryForWhereClause) // ); // } // } if (!string.IsNullOrEmpty(parameters.IsoCode)) { //collectionBeforePaging = collectionBeforePaging // .Where(c => c.IsoCode == parameters.IsoCode); } var rates = PagedList <CurrencyRate> .Create(collectionBeforePaging, parameters.PageNumber, parameters.PageSize); return(rates); }