Example #1
0
        public async Task <IActionResult> GetBlogs([FromQuery] BlogStatuses status = BlogStatuses.Published, [FromQuery] int?primaryAuthorId = null)
        {
            //var claims = User.Claims.Select(i => new { i.Type, i.Value }).ToList();
            //claims.ForEach(c => Debug.WriteLine($"{c.Type}: {c.Value}"));
            IEnumerable <BlogListItemDto> blogs = await _blogQueries.GetBlogs(status, primaryAuthorId);

            return(Ok(blogs));
        }
        async public Task UpdateBlogStatusAsync(int blogId, BlogStatuses blogStatus)
        {
            var blog = Context.Blog.Find(blogId);

            blog.BlogStatusId = (int)blogStatus;
            Context.Update(blog);
            await Context.SaveChangesAsync();
        }
        public async Task <IEnumerable <BlogListItemDto> > GetBlogs(BlogStatuses blogStatus = BlogStatuses.Published, int?primaryAuthorId = null)
        {
            int blogStatusId = (int)blogStatus;

            List <BlogDto> blogs = await Context.Blog.Include(i => i.PrimaryAuthor)
                                   .Where(i => i.BlogStatusId == blogStatusId &&
                                          (primaryAuthorId == null || i.PrimaryAuthorId == primaryAuthorId.Value))
                                   .OrderBy(i => i.DisplayOrder)
                                   .ThenBy(i => i.DisplayName)
                                   .ProjectToType <BlogDto>().ToListAsync();

            List <BlogListItemDto> blogsList = await Context.Blog
                                               .Where(i => i.BlogStatusId == blogStatusId &&
                                                      (primaryAuthorId == null || i.PrimaryAuthorId == primaryAuthorId.Value))
                                               .OrderBy(i => i.DisplayOrder)
                                               .ThenBy(i => i.DisplayName)
                                               .ProjectToType <BlogListItemDto>().ToListAsync();

            return(blogsList);
        }
        public async Task <IEnumerable <BlogListItemDto> > GetBlogs(IEnumerable <string> tags, BlogStatuses blogStatus = BlogStatuses.Published)
        {
            int blogStatusId = (int)blogStatus;

            var q = from blogs in Context.Blog
                    join blogTags in Context.BlogTag on blogs.Id equals blogTags.BlogId into dbt
                    from blogTags in dbt.DefaultIfEmpty()
                    join t in Context.Tag on blogTags.TagId equals t.Id into dt
                    from t in dt.DefaultIfEmpty()
                    join a in Context.Author on blogs.PrimaryAuthorId equals a.Id
                    where tags.Contains(t.Name) &&
                    (blogStatusId == 0 || blogs.BlogStatusId == blogStatusId)
                    orderby blogs.DisplayOrder
                    orderby blogs.DisplayName
                    select blogs;
            List <BlogListItemDto> list = await q.ProjectToType <BlogListItemDto>().ToListAsync();

            return(list);
        }
        public async Task <IEnumerable <BlogListItemDto> > GetBlogsByAuthor(int authorId, BlogStatuses blogStatus = BlogStatuses.Published)
        {
            int blogStatusId = (int)blogStatus;

            var q = from blogs in Context.Blog
                    where blogs.PrimaryAuthorId == authorId &&
                    (blogStatusId == 0 || blogs.BlogStatusId == blogStatusId)
                    orderby blogs.DisplayOrder
                    orderby blogs.DisplayName
                    select blogs;
            List <BlogListItemDto> list = await q.Distinct().ProjectToType <BlogListItemDto>().ToListAsync();

            return(list);
        }