using IM_API.Domain.Events; using IM_API.Dtos; using IM_API.Dtos.Friend; using IM_API.Hubs; using IM_API.Interface.Services; using MassTransit; using Microsoft.AspNetCore.SignalR; namespace IM_API.Application.EventHandlers.RequestFriendHandler { public class RequestFriendSignalRHandler:IConsumer { private readonly IHubContext _hub; private readonly IUserService _userService; public RequestFriendSignalRHandler(IHubContext hubContext, IUserService userService) { _hub = hubContext; _userService = userService; } public async Task Consume(ConsumeContext context) { var @event = context.Message; var userInfo = await _userService.GetUserInfoAsync(@event.FromUserId); var res = new HubResponse("Event", new FriendRequestResDto() { RequestUser = @event.FromUserId, ResponseUser = @event.ToUserId, Created = DateTime.UtcNow, Description = @event.Description, Avatar = userInfo.Avatar, NickName = userInfo.NickName }); await _hub.Clients.User(@event.ToUserId.ToString()).SendAsync("ReceiveMessage", res); } } }