using AutoMapper; using IM_API.Application.Interfaces; using IM_API.Domain.Events; using IM_API.Dtos; using IM_API.Hubs; using IM_API.Models; using IM_API.Tools; using Microsoft.AspNetCore.SignalR; namespace IM_API.Application.EventHandlers { public class SignalREventHandler : IEventHandler { private readonly IHubContext _hub; private readonly IMapper _mapper; public SignalREventHandler(IHubContext hub, IMapper mapper) { _hub = hub; _mapper = mapper; } public async Task Handle(MessageCreatedEvent @event) { if(@event.ChatType == Models.ChatType.PRIVATE) { MessageBaseDto messageBaseDto = new MessageBaseDto { MsgId = @event.MessageId.ToString(), ChatType = @event.ChatType.ToString(), Content = @event.MessageContent, GroupMemberId = null, ReceiverId = @event.MsgRecipientId, SenderId = @event.MsgSenderId, TimeStamp = @event.MessageCreated, Type = @event.MessageMsgType.ToString() }; await _hub.Clients.Users(@event.MsgRecipientId.ToString()).SendAsync("ReceiveMessage", messageBaseDto); } } } }