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 { private readonly IConversationService _conversationService; private readonly ILogger _logger; private readonly IUserService _userSerivce; public ConversationEventHandler( IConversationService conversationService, ILogger logger, IUserService userService ) { _conversationService = conversationService; _logger = logger; _userSerivce = userService; } public async Task Consume(ConsumeContext 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 }); } } } }