Пример #1
0
        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);
        }
Пример #2
0
        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));
        }
Пример #3
0
        public Uri GetFeedbackPaginationUri(FeedbackQueryFilter filter, string actionUrl)
        {
            string baseUrl = $"{_baseUri}{actionUrl}";

            return(new Uri(baseUrl));
        }