Exemple #1
0
        public IActionResult GetBlogPostSearch([FromQuery] BlogPostForFilteringDto filteringDto)
        {
            try
            {
                if (string.IsNullOrEmpty(filteringDto.Tag))
                {
                    _logger.LogError("Tag is null or empty");
                    return(NotFound());
                }

                var blogPostList = _blogFactory.PrepareBlogPostSearchDto(Url, filteringDto);
                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"));
            }
        }
Exemple #2
0
        /// <summary>
        /// Prepare blog post seach dto
        /// </summary>
        /// <param name="urlHelper">UrlHelper</param>
        /// <param name="filteringDto">BlogPostForFilteringDto</param>
        /// <returns>BlogPostListDto</returns>
        public virtual BlogPostListDto PrepareBlogPostSearchDto(IUrlHelper urlHelper, BlogPostForFilteringDto filteringDto)
        {
            if (filteringDto == null)
            {
                throw new ArgumentNullException(nameof(filteringDto));
            }

            var dto = new BlogPostListDto();

            if (filteringDto.PageSize <= 0)
            {
                filteringDto.PageSize = 10;
            }
            if (filteringDto.PageNumber <= 0)
            {
                filteringDto.PageNumber = 1;
            }

            IPagedList <BlogPost> blogPosts = _blogService.GetAllBlogPostsByTag(filteringDto.Tag, filteringDto.PageNumber - 1, filteringDto.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, "GetBlogPostSearch",
                                     new BlogPostForPagingDto {
                PageNumber = dto.BlogPostPagingContext.PageNumber, PageSize = dto.BlogPostPagingContext.PageSize
            },
                                     "self",
                                     HttpMethod.Get.ToString()));

            if (dto.BlogPostPagingContext.HasPreviousPage)
            {
                dto.Links.Add(CreateLink(urlHelper, "GetBlogPostSearch",
                                         new BlogPostForPagingDto {
                    PageNumber = dto.BlogPostPagingContext.PreviousPageNumber, PageSize = dto.BlogPostPagingContext.PageSize
                },
                                         "previousPage",
                                         "GET"));
            }

            if (dto.BlogPostPagingContext.HasNextPage)
            {
                dto.Links.Add(CreateLink(urlHelper, "GetBlogPostSearch",
                                         new BlogPostForPagingDto {
                    PageNumber = dto.BlogPostPagingContext.NextPageNumber, PageSize = dto.BlogPostPagingContext.PageSize
                },
                                         "nextPage",
                                         "GET"));
            }

            return(dto);
        }