public PagedList <Views> GetViews(ViewQueryFilter filters) { filters.PageNumber = filters.PageNumber == 0 ? _paginationOptions.DefaultPageNumber : filters.PageNumber; filters.PageSize = filters.PageSize == 0 ? _paginationOptions.DefaultPageSize : filters.PageSize; var views = _unitOfWork.ViewRepository.GetAll(); if (filters.filter != null) { views = views.Where(x => x.code.ToLower().Contains(filters.filter.ToLower())); views = views.Where(x => x.name.ToLower().Contains(filters.filter.ToLower())); views = views.Where(x => x.route.ToLower().Contains(filters.filter.ToLower())); } if (filters.Code != null) { views = views.Where(x => x.code == filters.Code); } if (filters.Route != null) { views = views.Where(x => x.route == filters.Route); } if (filters.Name != null) { views = views.Where(x => x.name.ToLower().Contains(filters.Name.ToLower())); } if (filters.orderedBy != null && filters.orderedBy.Count() > 0) { foreach (var sortM in filters.orderedBy) { views = views.OrderBy(sortM.PairAsSqlExpression); } } var pagedPosts = PagedList <Views> .Create(views, filters.PageNumber, filters.PageSize); return(pagedPosts); }
public IActionResult GetViews([FromBody] ViewQueryFilter filters) { if (!User.Identity.IsAuthenticated) { throw new AuthenticationException(); } var views = _viewService.GetViews(filters); var viewsDto = _mapper.Map <IEnumerable <ViewsDto> >(views); var metadata = new Metadata { TotalCount = views.TotalCount, PageSize = views.PageSize, CurrentPage = views.CurrentPage, TotalPages = views.TotalPages, HasNextPage = views.HasNextPage, HasPreviousPage = views.HasPreviousPage, NextPageUrl = _uriService.GetPostPaginationUri(filters, Url.RouteUrl(nameof(GetViews))).ToString(), PreviousPageUrl = _uriService.GetPostPaginationUri(filters, Url.RouteUrl(nameof(GetViews))).ToString() }; var response = new ApiResponse <IEnumerable <ViewsDto> >(viewsDto) { Meta = metadata }; Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata)); return(Ok(response)); }
public Uri GetPostPaginationUri(ViewQueryFilter filter, string actionUrl) { string baseUrl = $"{_baseUri}{actionUrl}"; return(new Uri(baseUrl)); }