Exemple #1
0
        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));
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        public Uri GetTourPaginationUri(TourQueryFilter filter, string actionUrl)
        {
            string baseUrl = $"{_baseUri}{actionUrl}";

            return(new Uri(baseUrl));
        }