public IActionResult GetBlogPostAll([FromQuery] BlogPostForPagingDto pagingDto) { try { var blogPostList = _blogFactory.PrepareBlogPostListDto(Url, pagingDto); Response.Headers.Add("X-Pagination", blogPostList.BlogPostPagingContext.ToJson()); _logger.LogInformation($"Returned all blog post from database."); return(Ok(blogPostList)); } catch (Exception ex) { var logMessage = $"BlogController GetBlogPostAll Method. Something went wrong. Ex Message : { ex.Message }"; _logger.LogError(ex, logMessage); return(StatusCode(500, "Internal server error")); } }
/// <summary> /// Prepare blog post list dto /// </summary> /// <param name="urlHelper">UrlHelper</param> /// <param name="pagingDto">BlogPostForPagingDto</param> /// <returns>BlogPostListDto</returns> public virtual BlogPostListDto PrepareBlogPostListDto(IUrlHelper urlHelper, BlogPostForPagingDto pagingDto) { if (pagingDto == null) { throw new ArgumentNullException(nameof(pagingDto)); } var dto = new BlogPostListDto(); if (pagingDto.PageSize <= 0) { pagingDto.PageSize = 10; } if (pagingDto.PageNumber <= 0) { pagingDto.PageNumber = 1; } IPagedList <BlogPost> blogPosts = _blogService.GetAllBlogPosts(pagingDto.PageNumber - 1, pagingDto.PageSize); dto.BlogPostPagingContext.LoadPagedList(blogPosts); dto.BlogPosts = blogPosts .Select(x => { var blogPostDto = new BlogPostDto(); PrepareBlogPostResponse(blogPostDto, x, false); blogPostDto.PostWithCommentsLink = CreateLink(urlHelper, "GetPostWithComments", new { blogPostDto.Id }, "postWithCommentsPage", HttpMethod.Get.ToString()); return(blogPostDto); }) .ToList(); dto.Links.Add(CreateLink(urlHelper, "GetBlogPostAll", new BlogPostForPagingDto { PageNumber = dto.BlogPostPagingContext.PageNumber, PageSize = dto.BlogPostPagingContext.PageSize }, "self", HttpMethod.Get.ToString())); if (dto.BlogPostPagingContext.HasPreviousPage) { dto.Links.Add(CreateLink(urlHelper, "GetBlogPostAll", new BlogPostForPagingDto { PageNumber = dto.BlogPostPagingContext.PreviousPageNumber, PageSize = dto.BlogPostPagingContext.PageSize }, "previousPage", "GET")); } if (dto.BlogPostPagingContext.HasNextPage) { dto.Links.Add(CreateLink(urlHelper, "GetBlogPostAll", new BlogPostForPagingDto { PageNumber = dto.BlogPostPagingContext.NextPageNumber, PageSize = dto.BlogPostPagingContext.PageSize }, "nextPage", "GET")); } return(dto); }