From 99dbc8da622e8801969e3c4d95e3e72b9645dd99 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Mon, 26 Oct 2020 16:13:49 +0300 Subject: [PATCH] Publish an event on comment creation for the CMS Kit resolves https://github.com/abpframework/abp/issues/5463 --- ...lo.CmsKit.Public.Application.Contracts.csproj | 1 + .../CmsKitPublicApplicationContractsModule.cs | 4 +++- .../Public/Comments/CreatedCommentEvent.cs | 11 +++++++++++ .../Public/Comments/CommentPublicAppService.cs | 16 ++++++++++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CreatedCommentEvent.cs diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo.CmsKit.Public.Application.Contracts.csproj b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo.CmsKit.Public.Application.Contracts.csproj index 8515d28e83..9cbfc52b80 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo.CmsKit.Public.Application.Contracts.csproj +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo.CmsKit.Public.Application.Contracts.csproj @@ -10,6 +10,7 @@ + diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/CmsKitPublicApplicationContractsModule.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/CmsKitPublicApplicationContractsModule.cs index 92ab969bf6..52996a1bdd 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/CmsKitPublicApplicationContractsModule.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/CmsKitPublicApplicationContractsModule.cs @@ -1,9 +1,11 @@ using Volo.Abp.Modularity; +using Volo.Abp.EventBus; namespace Volo.CmsKit.Public { [DependsOn( - typeof(CmsKitCommonApplicationContractsModule) + typeof(CmsKitCommonApplicationContractsModule), + typeof(AbpEventBusModule) )] public class CmsKitPublicApplicationContractsModule : AbpModule { diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CreatedCommentEvent.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CreatedCommentEvent.cs new file mode 100644 index 0000000000..7db2c10d8b --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CreatedCommentEvent.cs @@ -0,0 +1,11 @@ +using System; +using Volo.Abp.EventBus; + +namespace Volo.CmsKit.Public.Comments +{ + [EventName("Volo.CmsKit.Comments.Created")] + public class CreatedCommentEvent + { + public Guid Id { get; set; } + } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Comments/CommentPublicAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Comments/CommentPublicAppService.cs index 88bcef9a1e..a4ce4a2b46 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Comments/CommentPublicAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Comments/CommentPublicAppService.cs @@ -7,6 +7,8 @@ using Microsoft.Extensions.Options; using Volo.Abp; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; +using Volo.Abp.EventBus.Distributed; +using Volo.Abp.Uow; using Volo.Abp.Users; using Volo.CmsKit.Comments; using Volo.CmsKit.Users; @@ -18,15 +20,21 @@ namespace Volo.CmsKit.Public.Comments protected CmsKitOptions CmsKitOptions { get; } protected ICommentRepository CommentRepository { get; } protected ICmsUserLookupService CmsUserLookupService { get; } + public IDistributedEventBus DistributedEventBus { get; } + public IUnitOfWorkManager UnitOfWorkManager { get; } public CommentPublicAppService( ICommentRepository commentRepository, ICmsUserLookupService cmsUserLookupService, + IDistributedEventBus distributedEventBus, + IUnitOfWorkManager unitOfWorkManager, IOptions cmsKitOptions) { CmsKitOptions = cmsKitOptions.Value; CommentRepository = commentRepository; CmsUserLookupService = cmsUserLookupService; + DistributedEventBus = distributedEventBus; + UnitOfWorkManager = unitOfWorkManager; } public virtual async Task> GetListAsync(string entityType, string entityId) @@ -56,6 +64,14 @@ namespace Volo.CmsKit.Public.Comments ) ); + + await UnitOfWorkManager.Current.SaveChangesAsync(); + + await DistributedEventBus.PublishAsync(new CreatedCommentEvent + { + Id = comment.Id + }); + return ObjectMapper.Map(comment); }