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)); }
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)); }