public IActionResult GetTours([FromQuery] TourQueryFilter filters) { var tours = _tourService.GetTours(filters); var toursDto = _mapper.Map <IEnumerable <TourDto> >(tours); var metadata = new Metadata { TotalCount = tours.TotalCount, PageSize = tours.PageSize, CurrentPage = tours.CurrentPage, TotalPages = tours.TotalPages, HasNextPage = tours.HasNextPage, HasPreviousPage = tours.HasPreviousPage, NexPageUrl = _uriService.GetTourPaginationUri(filters, Url.RouteUrl(nameof(GetTours))).ToString(), PreviousPageUrl = _uriService.GetTourPaginationUri(filters, Url.RouteUrl(nameof(GetTours))).ToString() }; var response = new ApiResponse <IEnumerable <TourDto> >(toursDto) { Meta = metadata }; Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata)); return(Ok(response)); }
public PagedList <Tour> GetTours(TourQueryFilter filters) { filters.PageNumber = filters.PageNumber == 0 ? _paginationOptions.DefaultPageNumber : filters.PageNumber; filters.PageSize = filters.PageSize == 0 ? _paginationOptions.DefaultPageSize : filters.PageSize; var tours = _unitOfWork.TourRepository.GetAll(); if (filters.UserId != null) { tours = tours.Where(x => x.IdUser == filters.UserId); } if (filters.Date != null) { tours = tours.Where(x => x.Date.ToShortDateString() == filters.Date?.ToShortDateString()); } if (filters.Description != null) { tours = tours.Where(x => x.Description.ToLower().Contains(filters.Description.ToLower())); } var pagegTours = PagedList <Tour> .Create(tours, filters.PageNumber, filters.PageSize); return(pagegTours); }
public Uri GetTourPaginationUri(TourQueryFilter filter, string actionUrl) { string baseUrl = $"{_baseUri}{actionUrl}"; return(new Uri(baseUrl)); }