65 lines
2.3 KiB
C#
65 lines
2.3 KiB
C#
using AutoMapper;
|
||
using IM_API.Application.Interfaces;
|
||
using IM_API.Domain.Events;
|
||
using IM_API.Dtos;
|
||
using IM_API.Exceptions;
|
||
using IM_API.Interface.Services;
|
||
using IM_API.Models;
|
||
using IM_API.Services;
|
||
using IM_API.Tools;
|
||
using MassTransit;
|
||
using Microsoft.EntityFrameworkCore;
|
||
using Newtonsoft.Json;
|
||
|
||
namespace IM_API.Application.EventHandlers.MessageCreatedHandler
|
||
{
|
||
public class ConversationEventHandler : IConsumer<MessageCreatedEvent>
|
||
{
|
||
private readonly IConversationService _conversationService;
|
||
private readonly ILogger<ConversationEventHandler> _logger;
|
||
private readonly IUserService _userSerivce;
|
||
public ConversationEventHandler(
|
||
IConversationService conversationService,
|
||
ILogger<ConversationEventHandler> logger,
|
||
IUserService userService
|
||
)
|
||
{
|
||
_conversationService = conversationService;
|
||
_logger = logger;
|
||
_userSerivce = userService;
|
||
}
|
||
|
||
public async Task Consume(ConsumeContext<MessageCreatedEvent> context)
|
||
{
|
||
var @event = context.Message;
|
||
if (@event.ChatType == ChatType.GROUP)
|
||
{
|
||
var userinfo = await _userSerivce.GetUserInfoAsync(@event.MsgSenderId);
|
||
await _conversationService.UpdateConversationAfterSentAsync(new Dtos.Conversation.UpdateConversationDto
|
||
{
|
||
LastMessage = $"{userinfo.NickName}:{@event.MessageContent}",
|
||
LastSequenceId = @event.SequenceId,
|
||
ReceiptId = @event.MsgRecipientId,
|
||
SenderId = @event.MsgSenderId,
|
||
StreamKey = @event.StreamKey,
|
||
DateTime = @event.MessageCreated
|
||
});
|
||
}
|
||
else
|
||
{
|
||
await _conversationService.UpdateConversationAfterSentAsync(new Dtos.Conversation.UpdateConversationDto
|
||
{
|
||
LastMessage = @event.MessageContent,
|
||
LastSequenceId = @event.SequenceId,
|
||
ReceiptId = @event.MsgRecipientId,
|
||
SenderId = @event.MsgSenderId,
|
||
StreamKey = @event.StreamKey,
|
||
DateTime = @event.MessageCreated
|
||
});
|
||
}
|
||
|
||
}
|
||
|
||
}
|
||
}
|