예제 #1
0
        public async Task CreateChat()
        {
            var    creator      = fillTestDbHelper.Users.FirstOrDefault();
            var    users        = fillTestDbHelper.Users.Where(opt => !opt.BlackList.Any(p => p.BadUid == creator.Id) && !creator.BlackList.Any(p => p.BadUid == opt.Id)).Take(5).ToList();
            ChatVm expectedChat = new ChatVm
            {
                About = "Create chat test",
                Name  = "Chat",
                Users = users.Select(opt => new ChatUserVm
                {
                    UserId   = opt.Id,
                    UserRole = opt.Id == creator.Id ? ObjectsLibrary.Enums.UserRole.Creator : ObjectsLibrary.Enums.UserRole.Moderator
                }).ToList()
            };
            var actualChat = await createChatsService.CreateChatAsync(expectedChat, creator.Id);

            Assert.True(expectedChat.About == actualChat.About && expectedChat.Name == actualChat.Name);
        }
예제 #2
0
        public async Task <Response> CreateResponseAsync()
        {
            List <ChatVm> chats = new List <ChatVm>();

            try
            {
                foreach (var chat in request.Chats)
                {
                    ChatVm newChat = await createChatsService.CreateChatAsync(chat, clientConnection.UserId.GetValueOrDefault()).ConfigureAwait(false);

                    conversationsNoticeService.SendNewChatNoticeAsync(newChat, clientConnection);
                    UsersConversationsCacheService.Instance.UpdateUsersChatsAsync(newChat.Users.Select(opt => opt.UserId));
                    chats.Add(newChat);
                    List <BlockSegmentVm> segments = await BlockSegmentsService.Instance.CreateNewPrivateChatSegmentsAsync(
                        newChat,
                        NodeSettings.Configs.Node.Id,
                        NodeData.Instance.NodeKeys.SignPrivateKey,
                        NodeData.Instance.NodeKeys.SymmetricKey,
                        NodeData.Instance.NodeKeys.Password,
                        NodeData.Instance.NodeKeys.KeyId).ConfigureAwait(false);

                    if (segments.Any())
                    {
                        BlockGenerationHelper.Instance.AddSegments(segments);
                        nodeNoticeService.SendBlockSegmentsNodeNoticeAsync(segments.ToList());
                    }
                }
                nodeNoticeService.SendNewChatsNodeNoticeAsync(chats);
                return(new ChatsResponse(request.RequestId, chats));
            }
            catch (UserBlockedException ex)
            {
                Logger.WriteLog(ex, request);
                return(new ResultResponse(request.RequestId, "The user is blacklisted by another user.", ErrorCode.UserBlocked));
            }
        }