Example #1
0
        public static IEnumerable <UserStateDto> ToUserStateDtoCollection(IEnumerable <string> ids)
        {
            var states = new List <UserStateDto>();

            foreach (var id in ids)
            {
                var dto = new UserStateDto();
                dto.UserId = id;
                states.Add(dto);
            }
            return(states);
        }
 public override Task OnDisconnected(bool stopCalled)
 {
     using (var userRepository = _unitOfWork.Repository <User>())
     {
         var connectionId = Context.ConnectionId;
         var user         = userRepository.Find(u => u.ConnectionId == connectionId);
         if (user != null)
         {
             user.ConnectionId = string.Empty;
             user.IsOnline     = false;
             Clients.All.onUserDisconnected(UserStateDto.FromModel(user));
             foreach (var group in user.Groups)
             {
                 Groups.Remove(connectionId, group.Id.ToString());
             }
             _unitOfWork.Save();
         }
     }
     return(base.OnDisconnected(stopCalled));
 }
Example #3
0
 public UserStateDto Get(string id, string fields = null)
 {
     try {
         var idObj = id;
         var state = (UserState)_userApplicationService.Get(idObj);
         if (state == null)
         {
             return(null);
         }
         var stateDto = new UserStateDto(state);
         if (String.IsNullOrWhiteSpace(fields))
         {
             stateDto.AllFieldsReturned = true;
         }
         else
         {
             stateDto.ReturnedFieldsString = fields;
         }
         return(stateDto);
     } catch (Exception ex) { var response = UsersControllerUtils.GetErrorHttpResponseMessage(ex); throw new HttpResponseException(response); }
 }
        public async Task Connect(int userId)
        {
            var connectionId = Context.ConnectionId;

            using (var userRepository = _unitOfWork.Repository <User>())
            {
                var user = await userRepository.GetAsync(userId);

                if (user != null /*&& string.IsNullOrEmpty(user.ConnectionId)*/)
                {
                    user.ConnectionId = connectionId;
                    user.IsOnline     = true;
                    foreach (var group in user.Groups)
                    {
                        await Groups.Add(connectionId, group.Id.ToString());
                    }
                    await Clients.Caller.onConnected(UserStateDto.FromModel(user));

                    await Clients.AllExcept(connectionId).onNewUserConnected(UserStateDto.FromModel(user));

                    await _unitOfWork.SaveAsync();
                }
            }
        }
 public async Task ChangeUserState(User user, string connectionId)
 {
     await _hubContext.Clients.AllExcept(connectionId).onUserStateChange(UserStateDto.FromModel(user));
 }