예제 #1
0
        public Task Complete(TestTasksStateDTO state)
        {
            var user = UpdateStateForCurrentUser(state);

            user.StartTime = user.StartTime ?? DateTimeOffset.Now;
            user.Duration  = DateTimeOffset.Now - user.StartTime.Value;

            return(Clients.Groups(AdminGroup).SendAsync(nameof(Complete), user));
        }
예제 #2
0
        private SessionUserDTO UpdateStateForCurrentUser(TestTasksStateDTO state)
        {
            if (!(Context.User.GetUserId() is string userId))
            {
                throw new UnauthorizedAccessException();
            }
            if (!users.TryGetValue(userId, out var user))
            {
                throw new InvalidOperationException("Attempt to update not connected user");
            }
            user.TasksState = state;

            users.TryUpdate(userId, user, user);

            return(user);
        }
예제 #3
0
        public Task UpdateState(TestTasksStateDTO state)
        {
            var user = UpdateStateForCurrentUser(state);

            return(Clients.Groups(AdminGroup).SendAsync(nameof(UpdateState), user));
        }