Browse Source

CmsKit - Refactor default blog features

pull/7955/head
enisn 5 years ago
parent
commit
1074aff043
  1. 15
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogAdminAppService.cs
  2. 2
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogFeatureAdminAppService.cs
  3. 17
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogFeatureEqualityComparer.cs
  4. 26
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogFeatureManager.cs

15
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogAdminAppService.cs

@ -16,13 +16,18 @@ namespace Volo.CmsKit.Admin.Blogs
{
protected IBlogRepository BlogRepository { get; }
protected BlogManager BlogManager { get; }
public BlogAdminAppService(IBlogRepository blogRepository, BlogManager blogManager)
protected BlogFeatureManager BlogFeatureManager{ get; }
public BlogAdminAppService(
IBlogRepository blogRepository,
BlogManager blogManager,
BlogFeatureManager blogFeatureManager = null)
{
BlogRepository = blogRepository;
BlogManager = blogManager;
BlogFeatureManager = blogFeatureManager;
}
public virtual async Task<BlogDto> GetAsync(Guid id)
{
var blog = await BlogRepository.GetAsync(id);
@ -48,7 +53,9 @@ namespace Volo.CmsKit.Admin.Blogs
{
var blog = await BlogManager.CreateAsync(input.Name, input.Slug);
await BlogRepository.InsertAsync(blog);
await BlogRepository.InsertAsync(blog, autoSave: true);
await BlogFeatureManager.SetDefaultsAsync(blog.Id);
return ObjectMapper.Map<Blog, BlogDto>(blog);
}

2
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogFeatureAdminAppService.cs

@ -32,7 +32,7 @@ namespace Volo.CmsKit.Admin.Blogs
public virtual async Task<List<BlogFeatureDto>> GetListAsync(Guid blogId)
{
var blogFeatures = await BlogFeatureManager.GetListAsync(blogId);
var blogFeatures = await BlogFeatureRepository.GetListAsync(blogId);
return ObjectMapper.Map<List<BlogFeature>, List<BlogFeatureDto>>(blogFeatures);
}

17
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogFeatureEqualityComparer.cs

@ -1,17 +0,0 @@
using System.Collections.Generic;
namespace Volo.CmsKit.Blogs
{
public class BlogFeatureEqualityComparer : IEqualityComparer<BlogFeature>
{
public bool Equals(BlogFeature x, BlogFeature y)
{
return x?.BlogId == y?.BlogId && x?.FeatureName == y?.FeatureName;
}
public int GetHashCode(BlogFeature obj)
{
return obj.GetHashCode();
}
}
}

26
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogFeatureManager.cs

@ -20,22 +20,6 @@ namespace Volo.CmsKit.Blogs
DefaultBlogFeatureProvider = defaultBlogFeatureProvider;
}
public async Task<List<BlogFeature>> GetListAsync(Guid blogId)
{
var blogFeatures = await BlogFeatureRepository.GetListAsync(blogId);
/* TODO: Creating transient entities in DefaultBlogFeatureProvider.GetDefaultFeaturesAsync
is not a good idea. Returned list will contain mixed (some in db some in-memory).
For example, if I delete/update one of the BlogFeature comes from in-memory,
I will have an strange behaviour. You should find another way.
*/
var defaultFeatures = await DefaultBlogFeatureProvider.GetDefaultFeaturesAsync(blogId);
defaultFeatures.ForEach(x => blogFeatures.Add(x));
return blogFeatures.Distinct(new BlogFeatureEqualityComparer()).ToList();
}
public async Task SetAsync(Guid blogId, string featureName, bool isEnabled)
{
var blogFeature = await BlogFeatureRepository.FindAsync(blogId, featureName);
@ -50,5 +34,15 @@ namespace Volo.CmsKit.Blogs
await BlogFeatureRepository.UpdateAsync(blogFeature);
}
}
public async Task SetDefaultsAsync(Guid blogId)
{
var defaultFeatures = await DefaultBlogFeatureProvider.GetDefaultFeaturesAsync(blogId);
foreach (var feature in defaultFeatures)
{
await SetAsync(blogId, feature.FeatureName, isEnabled: true);
}
}
}
}

Loading…
Cancel
Save