public async Task AddUsersToChannel()
        {
            var channel    = fillTestDbHelper.Channels.FirstOrDefault();
            var users      = fillTestDbHelper.Users.Where(opt => opt.Id != channel.ChannelUsers.FirstOrDefault(p => p.ChannelUserRole == ChannelUserRole.Creator).UserId).ToList();
            var addedUsers = await updateChannelsService.AddUsersToChannelAsync(
                users.Select(opt => opt.Id).ToList(),
                channel.ChannelId,
                channel.ChannelUsers.FirstOrDefault(opt => opt.ChannelUserRole >= ChannelUserRole.Administrator).UserId);

            Assert.Equal(users.Count, addedUsers.Count);
        }
        public async Task <Response> CreateResponseAsync()
        {
            List <ChannelUserVm>  resultChannelsUsers = new List <ChannelUserVm>();
            List <BlockSegmentVm> segments            = new List <BlockSegmentVm>();

            foreach (long channelId in request.ChannelsId)
            {
                try
                {
                    ChannelVm channel = await loadChannelsService.GetChannelByIdAsync(channelId).ConfigureAwait(false);

                    var existingUsers = await loadChannelsService.GetChannelUsersAsync(channelId, null, null).ConfigureAwait(false);

                    if (!existingUsers.Any(opt => opt.ChannelUserRole == ChannelUserRole.Creator))
                    {
                        var nodeConnection = connectionsService.GetNodeConnection(channel.NodesId.FirstOrDefault(id => id != NodeSettings.Configs.Node.Id));
                        if (nodeConnection != null)
                        {
                            await nodeRequestSender.GetChannelInformationAsync(channelId, nodeConnection).ConfigureAwait(false);
                        }
                    }
                    List <ChannelUserVm> channelUsers =
                        await updateChannelsService.AddUsersToChannelAsync(request.UsersId.ToList(), channelId, clientConnection.UserId.GetValueOrDefault()).ConfigureAwait(false);

                    resultChannelsUsers.AddRange(channelUsers);
                    BlockSegmentVm segment = await BlockSegmentsService.Instance.CreateChannelUsersSegmentAsync(
                        channelUsers,
                        NodeSettings.Configs.Node.Id,
                        channelId,
                        NodeData.Instance.NodeKeys.SignPrivateKey,
                        NodeData.Instance.NodeKeys.SymmetricKey,
                        NodeData.Instance.NodeKeys.Password,
                        NodeData.Instance.NodeKeys.KeyId).ConfigureAwait(false);

                    segments.Add(segment);
                    conversationsNoticeService.SendNewChannelNoticesAsync(channelUsers, channelId, clientConnection);
                    nodeNoticeService.SendChannelUsersNodeNoticeAsync(channelUsers, clientConnection.UserId.Value, channel);
                }
                catch (Exception ex)
                {
                    Logger.WriteLog(ex, request);
                }
            }
            BlockGenerationHelper.Instance.AddSegments(segments);
            return(new ChannelUsersResponse(request.RequestId, null, resultChannelsUsers, null));
        }