Пример #1
0
 public void SendDirectMessage(string toUsername, ChatMessage message)
 {
     foreach (var connectionId in _connections.GetConnections(toUsername))
     {
         Clients.Client(connectionId).DirectMessage(message);
     }
 }
Пример #2
0
        //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());
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }