Browse Source

add status to BlogPost

pull/12073/head
Musa Demir 4 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 Volo.Abp.Application.Dtos;
using Volo.Abp.Auditing;
using Volo.CmsKit.Blogs;
namespace Volo.CmsKit.Admin.Blogs;
@ -24,4 +25,6 @@ public class BlogPostListDto : EntityDto<Guid>, IHasCreationTime, IHasModificati
public DateTime CreationTime { 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 blogPost = await BlogPostManager.CreateAsync(
author,
blog,
input.Title,
input.Slug,
input.ShortDescription,
input.Content,
input.CoverImageMediaId);
author,
blog,
input.Title,
input.Slug,
BlogPostStatus.Draft,
input.ShortDescription,
input.Content,
input.CoverImageMediaId
);
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 virtual CmsUser Author { get; set; }
public virtual BlogPostStatus Status { get; set; }
protected BlogPost()
{
}
@ -43,7 +45,9 @@ public class BlogPost : FullAuditedAggregateRoot<Guid>, IMultiTenant
[CanBeNull] string shortDescription = null,
[CanBeNull] string content = null,
[CanBeNull] Guid? coverImageMediaId = null,
[CanBeNull] Guid? tenantId = null) : base(id)
[CanBeNull] Guid? tenantId = null,
[CanBeNull] BlogPostStatus? state = null
) : base(id)
{
TenantId = tenantId;
BlogId = blogId;
@ -53,6 +57,7 @@ public class BlogPost : FullAuditedAggregateRoot<Guid>, IMultiTenant
SetShortDescription(shortDescription);
SetContent(content);
CoverImageMediaId = coverImageMediaId;
Status = state ?? BlogPostStatus.Draft;
}
public virtual void SetTitle(string title)
@ -76,4 +81,14 @@ public class BlogPost : FullAuditedAggregateRoot<Guid>, IMultiTenant
{
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] string title,
[NotNull] string slug,
[NotNull] BlogPostStatus status,
[CanBeNull] string shortDescription = null,
[CanBeNull] string content = null,
[CanBeNull] Guid? coverImageMediaId = null)
@ -40,17 +41,18 @@ public class BlogPostManager : DomainService
Check.NotNullOrEmpty(slug, nameof(slug));
var blogPost = new BlogPost(
GuidGenerator.Create(),
blog.Id,
author.Id,
title,
slug,
shortDescription,
content,
coverImageMediaId,
CurrentTenant.Id
);
GuidGenerator.Create(),
blog.Id,
author.Id,
title,
slug,
shortDescription,
content,
coverImageMediaId,
CurrentTenant.Id,
status
);
await CheckSlugExistenceAsync(blog.Id, blogPost.Slug);
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,
Guid? blogId = null,
Guid? authorId = null,
BlogPostStatus? statusFilter = null,
CancellationToken cancellationToken = default);
Task<List<BlogPost>> GetListAsync(
string filter = null,
Guid? blogId = null,
Guid? authorId = null,
BlogPostStatus? statusFilter = null,
int maxResultCount = int.MaxValue,
int skipCount = 0,
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,
Guid? blogId = null,
Guid? authorId = null,
BlogPostStatus? statusFilter = null,
CancellationToken cancellationToken = default)
{
var queryable = (await GetDbSetAsync())
.WhereIf(blogId.HasValue, x => x.BlogId == blogId)
.WhereIf(authorId.HasValue, x => x.AuthorId == authorId)
.WhereIf(!string.IsNullOrEmpty(filter), x => x.Title.Contains(filter) || x.Slug.Contains(filter));
.WhereIf(blogId.HasValue, x => x.BlogId == blogId)
.WhereIf(authorId.HasValue, x => x.AuthorId == authorId)
.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));
return count;
@ -57,6 +59,7 @@ public class EfCoreBlogPostRepository : EfCoreRepository<CmsKitDbContext, BlogPo
string filter = null,
Guid? blogId = null,
Guid? authorId = null,
BlogPostStatus? statusFilter = null,
int maxResultCount = int.MaxValue,
int skipCount = 0,
string sorting = null,
@ -70,7 +73,8 @@ public class EfCoreBlogPostRepository : EfCoreRepository<CmsKitDbContext, BlogPo
var queryable = blogPostsDbSet
.WhereIf(blogId.HasValue, x => x.BlogId == blogId)
.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);

Loading…
Cancel
Save