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); }
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)); } }