Ejemplo n.º 1
0
        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"));
            }
        }
Ejemplo n.º 2
0
        /// <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);
        }