Files
IM_NEW/MessageService.WebApi/Application/EventHandlers/ConversationAddHandler.cs
T

56 lines
1.9 KiB
C#

using IM.Commons.IntegrationEvents;
using MassTransit;
using MessageService.Domain.IReposities;
using MessageService.Infrastructure;
namespace MessageService.WebApi.Application.EventHandlers
{
public class ConversationAddHandler : IConsumer<GroupMemberJoinedEvent>,
IConsumer<FriendAddedEvent>
{
private readonly IConversationReposity reposity;
private readonly MessageDbContext messageDb;
public ConversationAddHandler(IConversationReposity reposity, MessageDbContext messageDb)
{
this.reposity = reposity;
this.messageDb = messageDb;
}
public async Task Consume(ConsumeContext<GroupMemberJoinedEvent> context)
{
var @event = context.Message;
reposity.Create(new Domain.Entities.Conversation(
userId: @event.UserId,
targetId: @event.GroupId,
targetAvatar: @event.GroupAvatar ?? @event.Avatar,
targetName: @event.GroupName,
lastReadSequenceId: null,
unreadCount:0,
chatType: Domain.Enums.ChatType.GROUP,
lastMessage: string.Empty
));
await messageDb.SaveChangesAsync();
}
public async Task Consume(ConsumeContext<FriendAddedEvent> context)
{
var @event = context.Message;
reposity.Create(new Domain.Entities.Conversation(
userId: @event.OwnerId,
targetId: @event.TargetId,
targetAvatar: @event.TargetAvatar,
targetName: @event.TargetNickName,
lastReadSequenceId: null,
unreadCount: 0,
chatType: Domain.Enums.ChatType.PRIVATE,
lastMessage: string.Empty
));
await messageDb.SaveChangesAsync();
}
}
}