public PagedList <Feedback> GetFeedbacks(FeedbackQueryFilter filters) { filters.PageNumber = filters.PageNumber == 0 ? _paginationOptions.DefaultPageNumber : filters.PageNumber; filters.PageSize = filters.PageSize == 0 ? _paginationOptions.DefaultPageSize : filters.PageSize; var feedbacks = _unitOfWork.FeedbackRepository.GetAll(); if (filters.BookGroupId != null) { feedbacks = feedbacks.Where(x => x.BookGroupId == filters.BookGroupId); } if (filters.CustomerId != null) { feedbacks = feedbacks.Where(x => x.CustomerId == filters.CustomerId); } if (filters.Rating != null) { feedbacks = feedbacks.Where(x => x.Rating == filters.Rating); } if (filters.ReviewContent != null) { feedbacks = feedbacks.Where(x => x.ReviewContent == filters.ReviewContent); } var pagedFeedbacks = PagedList <Feedback> .Create(feedbacks, filters.PageNumber, filters.PageSize); return(pagedFeedbacks); }
public IActionResult GetFeedbacks([FromQuery] FeedbackQueryFilter filters) { var request = _httpContextAccessor.HttpContext.Request; var feedbacks = _feedbackService.GetFeedbacks(filters); //string str = request.QueryString.ToString(); //string stringBeforeChar = str.Substring(0, str.IndexOf("&")); var feedbackDtos = _mapper.Map <IEnumerable <FeedbackDto> >(feedbacks); //var nextPage = feedbacks.CurrentPage >= 1 && feedbacks.CurrentPage < feedbacks.TotalCount // ? _uriService.GetPageUri(feedbacks.CurrentPage + 1, feedbacks.PageSize, _uriService.GetFeedbackPaginationUri(filters, Url.RouteUrl(nameof(GetFeedbacks))).ToString() + stringBeforeChar) // : null; //var previousPage = feedbacks.CurrentPage - 1 >= 1 && feedbacks.CurrentPage < feedbacks.TotalCount // ? _uriService.GetPageUri(feedbacks.CurrentPage - 1, feedbacks.PageSize, _uriService.GetFeedbackPaginationUri(filters, Url.RouteUrl(nameof(GetFeedbacks))).ToString() + stringBeforeChar) // : null; var metadata = new Metadata { TotalCount = feedbacks.TotalCount, PageSize = feedbacks.PageSize, CurrentPage = feedbacks.CurrentPage, TotalPages = feedbacks.TotalPages, HasNextPage = feedbacks.HasNextPage, HasPreviousPage = feedbacks.HasPreviousPage }; var response = new ApiResponse <IEnumerable <FeedbackDto> >(feedbackDtos) { Meta = metadata }; Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata)); return(Ok(response)); }
public Uri GetFeedbackPaginationUri(FeedbackQueryFilter filter, string actionUrl) { string baseUrl = $"{_baseUri}{actionUrl}"; return(new Uri(baseUrl)); }