diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogAdminAppService.cs index 574f6f737a..a803ea8695 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogAdminAppService.cs +++ b/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 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); } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogFeatureAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogFeatureAdminAppService.cs index 51d1332127..a0ba1c460e 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogFeatureAdminAppService.cs +++ b/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> GetListAsync(Guid blogId) { - var blogFeatures = await BlogFeatureManager.GetListAsync(blogId); + var blogFeatures = await BlogFeatureRepository.GetListAsync(blogId); return ObjectMapper.Map, List>(blogFeatures); } diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogFeatureEqualityComparer.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogFeatureEqualityComparer.cs deleted file mode 100644 index 7037148bc9..0000000000 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogFeatureEqualityComparer.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.Collections.Generic; - -namespace Volo.CmsKit.Blogs -{ - public class BlogFeatureEqualityComparer : IEqualityComparer - { - public bool Equals(BlogFeature x, BlogFeature y) - { - return x?.BlogId == y?.BlogId && x?.FeatureName == y?.FeatureName; - } - - public int GetHashCode(BlogFeature obj) - { - return obj.GetHashCode(); - } - } -} diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogFeatureManager.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogFeatureManager.cs index e92e795864..cea6d894f0 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogFeatureManager.cs +++ b/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> 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); + } + } } }