Browse Source

add status to BlogPost

pull/12073/head
Musa Demir 5 years ago
parent
commit
9834f1e418
No known key found for this signature in database GPG Key ID: 117DF92322553DC8
  1. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogPostListDto.cs
  2. 16
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogPostAdminAppService.cs
  3. 7
      modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Blogs/BlogPostStatus.cs
  4. 19
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogPost.cs
  5. 24
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogPostManager.cs
  6. 2
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/IBlogPostRepository.cs
  7. 12
      modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Blogs/EfCoreBlogPostRepository.cs

3
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogPostListDto.cs

@ -1,6 +1,7 @@
using System; using System;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
using Volo.Abp.Auditing; using Volo.Abp.Auditing;
using Volo.CmsKit.Blogs;
namespace Volo.CmsKit.Admin.Blogs; namespace Volo.CmsKit.Admin.Blogs;
@ -24,4 +25,6 @@ public class BlogPostListDto : EntityDto<Guid>, IHasCreationTime, IHasModificati
public DateTime CreationTime { get; set; } public DateTime CreationTime { get; set; }
public DateTime? LastModificationTime { get; set; } public DateTime? LastModificationTime { get; set; }
public BlogPostStatus? Status { get; set; }
} }

16
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogPostAdminAppService.cs

@ -42,13 +42,15 @@ public class BlogPostAdminAppService : CmsKitAppServiceBase, IBlogPostAdminAppSe
var blog = await BlogRepository.GetAsync(input.BlogId); var blog = await BlogRepository.GetAsync(input.BlogId);
var blogPost = await BlogPostManager.CreateAsync( var blogPost = await BlogPostManager.CreateAsync(
author, author,
blog, blog,
input.Title, input.Title,
input.Slug, input.Slug,
input.ShortDescription, BlogPostStatus.Draft,
input.Content, input.ShortDescription,
input.CoverImageMediaId); input.Content,
input.CoverImageMediaId
);
await BlogPostRepository.InsertAsync(blogPost); await BlogPostRepository.InsertAsync(blogPost);

7
modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Blogs/BlogPostStatus.cs

@ -0,0 +1,7 @@
namespace Volo.CmsKit.Blogs;
public enum BlogPostStatus
{
Draft,
Published
}

19
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogPost.cs

@ -29,7 +29,9 @@ public class BlogPost : FullAuditedAggregateRoot<Guid>, IMultiTenant
public Guid AuthorId { get; set; } public Guid AuthorId { get; set; }
public virtual CmsUser Author { get; set; } public virtual CmsUser Author { get; set; }
public virtual BlogPostStatus Status { get; set; }
protected BlogPost() protected BlogPost()
{ {
} }
@ -43,7 +45,9 @@ public class BlogPost : FullAuditedAggregateRoot<Guid>, IMultiTenant
[CanBeNull] string shortDescription = null, [CanBeNull] string shortDescription = null,
[CanBeNull] string content = null, [CanBeNull] string content = null,
[CanBeNull] Guid? coverImageMediaId = null, [CanBeNull] Guid? coverImageMediaId = null,
[CanBeNull] Guid? tenantId = null) : base(id) [CanBeNull] Guid? tenantId = null,
[CanBeNull] BlogPostStatus? state = null
) : base(id)
{ {
TenantId = tenantId; TenantId = tenantId;
BlogId = blogId; BlogId = blogId;
@ -53,6 +57,7 @@ public class BlogPost : FullAuditedAggregateRoot<Guid>, IMultiTenant
SetShortDescription(shortDescription); SetShortDescription(shortDescription);
SetContent(content); SetContent(content);
CoverImageMediaId = coverImageMediaId; CoverImageMediaId = coverImageMediaId;
Status = state ?? BlogPostStatus.Draft;
} }
public virtual void SetTitle(string title) public virtual void SetTitle(string title)
@ -76,4 +81,14 @@ public class BlogPost : FullAuditedAggregateRoot<Guid>, IMultiTenant
{ {
Content = Check.Length(content, nameof(content), BlogPostConsts.MaxContentLength); Content = Check.Length(content, nameof(content), BlogPostConsts.MaxContentLength);
} }
public virtual void SetDraft()
{
Status = BlogPostStatus.Draft;
}
public virtual void SetPublished()
{
Status = BlogPostStatus.Published;
}
} }

24
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogPostManager.cs

@ -30,6 +30,7 @@ public class BlogPostManager : DomainService
[NotNull] Blog blog, [NotNull] Blog blog,
[NotNull] string title, [NotNull] string title,
[NotNull] string slug, [NotNull] string slug,
[NotNull] BlogPostStatus status,
[CanBeNull] string shortDescription = null, [CanBeNull] string shortDescription = null,
[CanBeNull] string content = null, [CanBeNull] string content = null,
[CanBeNull] Guid? coverImageMediaId = null) [CanBeNull] Guid? coverImageMediaId = null)
@ -40,17 +41,18 @@ public class BlogPostManager : DomainService
Check.NotNullOrEmpty(slug, nameof(slug)); Check.NotNullOrEmpty(slug, nameof(slug));
var blogPost = new BlogPost( var blogPost = new BlogPost(
GuidGenerator.Create(), GuidGenerator.Create(),
blog.Id, blog.Id,
author.Id, author.Id,
title, title,
slug, slug,
shortDescription, shortDescription,
content, content,
coverImageMediaId, coverImageMediaId,
CurrentTenant.Id CurrentTenant.Id,
); status
);
await CheckSlugExistenceAsync(blog.Id, blogPost.Slug); await CheckSlugExistenceAsync(blog.Id, blogPost.Slug);
return blogPost; return blogPost;

2
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/IBlogPostRepository.cs

@ -13,12 +13,14 @@ public interface IBlogPostRepository : IBasicRepository<BlogPost, Guid>
string filter = null, string filter = null,
Guid? blogId = null, Guid? blogId = null,
Guid? authorId = null, Guid? authorId = null,
BlogPostStatus? statusFilter = null,
CancellationToken cancellationToken = default); CancellationToken cancellationToken = default);
Task<List<BlogPost>> GetListAsync( Task<List<BlogPost>> GetListAsync(
string filter = null, string filter = null,
Guid? blogId = null, Guid? blogId = null,
Guid? authorId = null, Guid? authorId = null,
BlogPostStatus? statusFilter = null,
int maxResultCount = int.MaxValue, int maxResultCount = int.MaxValue,
int skipCount = 0, int skipCount = 0,
string sorting = null, string sorting = null,

12
modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Blogs/EfCoreBlogPostRepository.cs

@ -42,12 +42,14 @@ public class EfCoreBlogPostRepository : EfCoreRepository<CmsKitDbContext, BlogPo
string filter = null, string filter = null,
Guid? blogId = null, Guid? blogId = null,
Guid? authorId = null, Guid? authorId = null,
BlogPostStatus? statusFilter = null,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
var queryable = (await GetDbSetAsync()) var queryable = (await GetDbSetAsync())
.WhereIf(blogId.HasValue, x => x.BlogId == blogId) .WhereIf(blogId.HasValue, x => x.BlogId == blogId)
.WhereIf(authorId.HasValue, x => x.AuthorId == authorId) .WhereIf(authorId.HasValue, x => x.AuthorId == authorId)
.WhereIf(!string.IsNullOrEmpty(filter), x => x.Title.Contains(filter) || x.Slug.Contains(filter)); .WhereIf(statusFilter.HasValue, x => x.Status == statusFilter)
.WhereIf(!string.IsNullOrEmpty(filter), x => x.Title.Contains(filter) || x.Slug.Contains(filter));
var count = await queryable.CountAsync(GetCancellationToken(cancellationToken)); var count = await queryable.CountAsync(GetCancellationToken(cancellationToken));
return count; return count;
@ -57,6 +59,7 @@ public class EfCoreBlogPostRepository : EfCoreRepository<CmsKitDbContext, BlogPo
string filter = null, string filter = null,
Guid? blogId = null, Guid? blogId = null,
Guid? authorId = null, Guid? authorId = null,
BlogPostStatus? statusFilter = null,
int maxResultCount = int.MaxValue, int maxResultCount = int.MaxValue,
int skipCount = 0, int skipCount = 0,
string sorting = null, string sorting = null,
@ -70,7 +73,8 @@ public class EfCoreBlogPostRepository : EfCoreRepository<CmsKitDbContext, BlogPo
var queryable = blogPostsDbSet var queryable = blogPostsDbSet
.WhereIf(blogId.HasValue, x => x.BlogId == blogId) .WhereIf(blogId.HasValue, x => x.BlogId == blogId)
.WhereIf(!string.IsNullOrWhiteSpace(filter), x => x.Title.Contains(filter) || x.Slug.Contains(filter)) .WhereIf(!string.IsNullOrWhiteSpace(filter), x => x.Title.Contains(filter) || x.Slug.Contains(filter))
.WhereIf(authorId.HasValue, x => x.AuthorId == authorId); .WhereIf(authorId.HasValue, x => x.AuthorId == authorId)
.WhereIf(statusFilter.HasValue, x => x.Status == statusFilter);
queryable = queryable.OrderBy(sorting.IsNullOrEmpty() ? $"{nameof(BlogPost.CreationTime)} desc" : sorting); queryable = queryable.OrderBy(sorting.IsNullOrEmpty() ? $"{nameof(BlogPost.CreationTime)} desc" : sorting);

Loading…
Cancel
Save