public void SendDirectMessage(string toUsername, ChatMessage message) { foreach (var connectionId in _connections.GetConnections(toUsername)) { Clients.Client(connectionId).DirectMessage(message); } }
//Online status public override Task OnConnectedAsync() { var curentUserId = Context.User.Identity.Name; var count = connections.GetConnections(curentUserId).Count(); if (count == 0) { Clients.All.SendAsync("ReciveConnectedStatus", curentUserId); } connections.Add(curentUserId, Context.ConnectionId); return(base.OnConnectedAsync()); }
public ActionResult <List <UserViewModel> > GetUsers() { var usersCollection = this.userSercvice.GetUsers(); var userVMCollection = new List <UserViewModel>(); var curentUser = this.User.Identity.Name; foreach (var user in usersCollection.Where(u => u.Id != curentUser)) { List <string> userConnections = connectionMapping.GetConnections(user.Id).ToList(); var curentVModel = new UserViewModel() { Id = user.Id, Username = this.userSercvice.GetUserNameById(user.Id), IsOnline = userConnections.Count == 0 ? false : true }; userVMCollection.Add(curentVModel); } return(userVMCollection); }
public IEnumerable <UserViewModel> FindUserByMatch(string match, string curentUser) { if (string.IsNullOrEmpty(curentUser)) { throw new ArgumentNullException("Current user Id can not be null"); } var queryResult = ctx.User.Where(u => u.Username.IndexOf(match) > -1 && u.Id != curentUser); var searchResult = new List <UserViewModel>(); foreach (var user in queryResult) { //Check is current user has any connection to provide online/offline status List <string> userConnections = connectionMapping.GetConnections(user.Id).ToList(); var userVm = mappingService.MapUserModelToUserViewModel(user); userVm.IsOnline = userConnections.Count == 0 ? false : true; searchResult.Add(userVm); } return(searchResult); }