示例#1
0
        public override async Task OnConnectedAsync()
        {
            IHubUserModel user = new HubUserModel
            {
                Id = Context.User.Claims.First(i => i.Type == ClaimTypes.Name).Value.ToInt(0)
            };

            user.ConnectionId.Add(Context.ConnectionId);

            await base.OnConnectedAsync().ConfigureAwait(false);

            var addNewUser = await HubConnectedUserStore.Add(user).ConfigureAwait(false);

            await Groups.AddToGroupAsync(Context.ConnectionId, "connection_" + Context.ConnectionId).ConfigureAwait(false);

            await Groups.AddToGroupAsync(Context.ConnectionId, "user_" + user.Id).ConfigureAwait(false);

            var connectedUsersList = await HubConnectedUserStore.ConnectedUserList().ConfigureAwait(false);

            await Clients.Group("connection_" + Context.ConnectionId).SendAsync("GiveConnectedUsersList", connectedUsersList).ConfigureAwait(false);

            if (addNewUser)
            {
                await Clients.All.SendAsync("ConnectedNewClient", user).ConfigureAwait(false);
            }
        }
        public static HubUserModel GetHubUser(this ICurrentUserService currentUserService)
        {
            var hubUser = new HubUserModel();
            var user    = currentUserService.GetUser();

            hubUser.Sub                    = user.Sub();
            hubUser.Email                  = user.Email();
            hubUser.Name                   = user.Name();
            hubUser.Contractors            = user.Contractors();
            hubUser.OperativePayrollNumber = user.PayrollNumber();

            if (double.TryParse(user.FindFirst(CustomClaimTypes.RaiseLimit)?.Value, out var number))
            {
                hubUser.RaiseLimit = number.ToString(CultureInfo.InvariantCulture);
            }

            if (double.TryParse(user.FindFirst(CustomClaimTypes.VaryLimit)?.Value, out number))
            {
                hubUser.VaryLimit = number.ToString(CultureInfo.InvariantCulture);
            }

            return(hubUser);
        }
        public void GetHubUser()
        {
            // Arrange
            var hubUser = new HubUserModel
            {
                Sub                    = "222222",
                Email                  = "*****@*****.**",
                Name                   = "Bob Repairs",
                VaryLimit              = "250",
                RaiseLimit             = "250",
                OperativePayrollNumber = "payrollNumber",
                Contractors            = new List <string> {
                    "contractor1", "contractor2"
                }
            };

            _mockCurrentUserService.SetUser(hubUser.Sub, hubUser.Email, hubUser.Name, hubUser.VaryLimit, hubUser.RaiseLimit, hubUser.Contractors, hubUser.OperativePayrollNumber);

            var response = _classUnderTest.GetHubUser() as OkObjectResult;

            response.Should().NotBeNull();
            response.StatusCode.Should().Be(200);
            response.Value.Should().BeEquivalentTo(hubUser);
        }