using Microsoft.AspNetCore.SignalR; using MTWorkHR.Application.Identity; using MTWorkHR.Application.Models; using MTWorkHR.Core.Global; using MTWorkHR.Core.UnitOfWork; namespace MTWorkHR.API.Chat { public class Chat : Hub { private readonly IUnitOfWork _unitOfWork; public Chat(IUnitOfWork unitOfWork) { _unitOfWork = unitOfWork; } public async Task getOnlineUsers() { var allConnections = await _unitOfWork.Connection.GetAllAsync(); var currUserId = allConnections.Item1.Where(c => c.SignalrId == Context.ConnectionId).Select(c => c.UserId).SingleOrDefault(); List onlineUsers = allConnections.Item1 .Where(c => c.UserId != currUserId) .Select(c => new UserDto { Id = c.UserId, UserName = c.UserName /*, c.SignalrId*/ } ).ToList(); await Clients.Caller.SendAsync("getOnlineUsersResponse", onlineUsers); } public async Task sendMsg(string connId, string msg) { await Clients.Client(connId).SendAsync("sendMsgResponse", Context.ConnectionId, msg); } } }