47 lines
1.8 KiB
C#
47 lines
1.8 KiB
C#
using GroupService.Domain.Events;
|
|
using GroupService.WebApi.Application.GroupMember;
|
|
using IM.Commons;
|
|
using IM.Commons.IntegrationEvents;
|
|
using MassTransit;
|
|
using MediatR;
|
|
|
|
namespace GroupService.WebApi.Application.EventHandler
|
|
{
|
|
public class GroupRequestPassedHandler : INotificationHandler<GroupJoinRequestPassedDomainEvent>
|
|
{
|
|
private readonly IPublishEndpoint endpoint;
|
|
private readonly Application.GroupMember.GroupMemberService memberService;
|
|
private readonly ILogger<GroupRequestPassedHandler> logger;
|
|
|
|
public GroupRequestPassedHandler(IPublishEndpoint endpoint,
|
|
GroupMemberService memberService, ILogger<GroupRequestPassedHandler> logger)
|
|
{
|
|
this.endpoint = endpoint;
|
|
this.memberService = memberService;
|
|
this.logger = logger;
|
|
}
|
|
|
|
public async Task Handle(GroupJoinRequestPassedDomainEvent notification, CancellationToken cancellationToken)
|
|
{
|
|
var request = notification.Request;
|
|
|
|
var memberCreateRes = await memberService.CreateAsync(request.GroupId, request.UserId);
|
|
|
|
await endpoint.Publish(new GroupRequestPassedEvent(request.Id, request.GroupId, request.GroupProfile.GroupName,
|
|
request.GroupProfile.Avatar, request.UserId,
|
|
request.UserProfile.NickName, request.UserProfile.Avatar,
|
|
request.OperatorId.Value, request.OperatorName,
|
|
request.OperatorAvatar, request.Description,
|
|
request.CreationTime, request.ModificationTime.Value));
|
|
|
|
if (!memberCreateRes.Succeeded)
|
|
{
|
|
logger.LogError(memberCreateRes.Message);
|
|
throw new EventHandlerException(memberCreateRes.Message);
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
}
|