Esempio n. 1
0
        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
                }));
            }
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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);
        }