Chat.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using Microsoft.AspNetCore.SignalR;
  2. using MTWorkHR.Application.Identity;
  3. using MTWorkHR.Application.Models;
  4. using MTWorkHR.Core.Global;
  5. using MTWorkHR.Core.UnitOfWork;
  6. namespace MTWorkHR.API.Chat
  7. {
  8. public class Chat : Hub
  9. {
  10. private readonly IUnitOfWork _unitOfWork;
  11. public Chat(IUnitOfWork unitOfWork)
  12. {
  13. _unitOfWork = unitOfWork;
  14. }
  15. public async Task getOnlineUsers()
  16. {
  17. var allConnections = await _unitOfWork.Connection.GetAllAsync();
  18. var currUserId = allConnections.Item1.Where(c => c.SignalrId == Context.ConnectionId).Select(c => c.UserId).SingleOrDefault();
  19. List<UserDto> onlineUsers = allConnections.Item1
  20. .Where(c => c.UserId != currUserId)
  21. .Select(c =>
  22. new UserDto { Id = c.UserId, UserName = c.UserName /*, c.SignalrId*/ }
  23. ).ToList();
  24. await Clients.Caller.SendAsync("getOnlineUsersResponse", onlineUsers);
  25. }
  26. public async Task sendMsg(string connId, string msg)
  27. {
  28. await Clients.Client(connId).SendAsync("sendMsgResponse", Context.ConnectionId, msg);
  29. }
  30. }
  31. }