public Model.BlogPostCount Get(BlogPostsSearchRequest_byTag searchRequest) { var query = _context.Tags.AsQueryable(); if (!string.IsNullOrWhiteSpace(searchRequest?.TagName)) { query = query.Where(x => x.Name == searchRequest.TagName); } var entities = query.ToList(); //filtered tag list var blogPostTagsQuery = _context.BlogPostTags.AsQueryable(); if (entities.Count > 0) { foreach (var x in entities) { blogPostTagsQuery = blogPostTagsQuery.Where(y => y.TagId == x.Id); } } List <BlogPostTags> blogPostTags = new List <BlogPostTags>(); if (entities.Count > 0) { blogPostTags = blogPostTagsQuery.ToList(); } List <Model.BlogPost> Posts = new List <Model.BlogPost>(); var blog_tags = _context.BlogPostTags.Include(x => x.Slug).ToList(); var tags = _context.Tags.ToList(); Model.BlogPostCount PostCount = new Model.BlogPostCount(); if (blogPostTags.Count > 0) { var posts = _context.BlogPost.ToList(); List <Database.BlogPost> temp = new List <Database.BlogPost>(); foreach (var blogTags in blogPostTags) { foreach (var p in posts) { if (p.Slug == blogTags.Slug.Slug) { temp.Add(p); } } } foreach (var x in temp) { Model.BlogPost blogPost = new Model.BlogPost(); blogPost.Slug = x.Slug; blogPost.Title = x.Title; blogPost.Description = x.Description; blogPost.Body = x.Body; blogPost.CreatedAt = x.CreatedAt; blogPost.UpdatedAt = x.UpdatedAt; foreach (var y in blog_tags) { foreach (var z in tags) { if (x.Slug == y.Slug.Slug && y.TagId == z.Id) { blogPost.Tags.Add(z.Name); } } } Posts.Add(blogPost); } } if (searchRequest.TagName == null) { var posts = _context.BlogPost.ToList(); foreach (var x in posts) { Model.BlogPost blogPost = new Model.BlogPost(); blogPost.Slug = x.Slug; blogPost.Title = x.Title; blogPost.Description = x.Description; blogPost.Body = x.Body; blogPost.CreatedAt = x.CreatedAt; blogPost.UpdatedAt = x.UpdatedAt; if (blog_tags.Count() > 0) { foreach (var y in blog_tags) { foreach (var z in tags) { if (x.Slug == y.Slug.Slug && y.TagId == z.Id) { blogPost.Tags.Add(z.Name); } } } } Posts.Add(blogPost); } } Posts.OrderBy(x => x.UpdatedAt); //most recent blog posts PostCount.BlogPost = Posts; PostCount.PostsCount = Posts.Count(); return(PostCount); }
public ActionResult <Model.BlogPostCount> Get([FromQuery] BlogPostsSearchRequest_byTag request) { return(_blogPostService.Get(request)); }