public async void TestAddingSingleUserAsync(string userId, string connectionId, string groupName) { var hubUser = new FakeHubUser(userId, connectionId, groupName).Build(); await _manageHubUser.AddUserAsync(hubUser); var userInDb = _hubUserContext.ConnectedUsers.Where(u => u.ConnectionId == hubUser.ConnectionId).Single(); var connectedUsersCount = _hubUserContext.ConnectedUsers.ToList().Count(); var waitingUsersCount = _hubUserContext.WaitingUsers.ToList().Count(); Assert.Equal(userInDb.UserId, hubUser.UserId); Assert.Equal(userInDb.ConnectionId, hubUser.ConnectionId); Assert.Equal(userInDb.GroupName, hubUser.GroupName); Assert.Equal(1, connectedUsersCount); Assert.Equal(0, waitingUsersCount); }
public async Task RegisterDoctor(string roomNo) { var claimsIdentity = (ClaimsIdentity)Context.User.Identity; var claim = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier); var userId = claim.Value; var newUser = new HubUser { UserId = claim.Value, ConnectionId = Context.ConnectionId, GroupName = roomNo }; var userInControl = _hubUser.GetGroupMaster(newUser.GroupName); if (userInControl == null || userInControl.FirstOrDefault().UserId == newUser.UserId) { await Groups.AddToGroupAsync(newUser.ConnectionId, newUser.GroupName); var user = _repo.User.FindByCondition(u => u.Id == userId).FirstOrDefault(); string doctorFullName = QueueHelper.GetDoctorFullName(user); await Clients.Group(roomNo).SendAsync("ReceiveDoctorFullName", userId, doctorFullName); var queue = _queueService.FindByUserId(userId); _queueService.SetQueueActive(queue); await Clients.Group(roomNo).SendAsync("ReceiveQueueNo", userId, queue.QueueNoMessage); await Clients.Group(roomNo).SendAsync("ReceiveAdditionalInfo", userId, queue.AdditionalMessage); } else { await Clients.Caller.SendAsync("NotifyQueueOccupied", StaticDetails.QueueOccupiedMessage); } await _hubUser.AddUserAsync(newUser); Log.Information(String.Concat(logPrefix, "Client [ ", newUser.ConnectionId, " ] registered as Doctor for room: [ ", roomNo, " ]")); }