示例#1
0
        public async Task <Guid> CreateChat(CreateChatDto payload)
        {
            var chat = new Chat
            {
                Name = payload.Name
            };

            var cm = new List <ChatMember>();

            foreach (var userId in payload.UserIds)
            {
                cm.Add(new ChatMember
                {
                    UserId = userId,
                    Chat   = chat
                });
            }

            await _context.AddAsync(chat);

            await _context.AddRangeAsync(cm);

            await _context.SaveChangesAsync();

            return(chat.Id);
        }
        public HttpResponseMessage Create([FromBody] CreateChatDto createDto)
        {
            return(ProtectedExecuteAndWrapResult(() =>
            {
                if (Chats.FirstOrDefault(chat => chat.Name == createDto.Name) != null)
                {
                    throw new ConflictException("chat name");
                }

                Member creator = new Member(createDto.CreatorName, createDto.PublicKey.Value);
                Chat created = new Chat(createDto.Name, creator);

                created.AssignKeys(createDto.P.Value, createDto.G.Value);
                Chats.Add(created);

                return new ChatInfoDto(created);
            }, createDto));
        }
示例#3
0
        public static async Task CreateChatAsync()
        {
            await ExecuteProtected(async() =>
            {
                string name = ReadChatName();

                (int p, int g)       = DIFFIE.GetPG();
                (int publ, int priv) = DIFFIE.GetKeys(p, g);

                CreateChatDto createDto = new CreateChatDto(name, LOGIN, p, g, publ);
                ChatInfoDto chat        = await CHAT_CLIENT.CreateChat(createDto);

                Console.WriteLine($"Chat {chat.Name} created, public: {publ}, private: {priv}\n");
                USER_CHAT_KEYS.Add(chat.Name, new UserChatKeys(chat, publ, priv));

                await OpenChatAsync(chat.Name);
            });
        }
示例#4
0
        public static async Task CreateChatAsync()
        {
            await ExecuteProtected(async() =>
            {
                string name = ReadChatName();

                (int p, int g)       = DIFFIE.GetPG();
                (int publ, int priv) = DIFFIE.GetKeys(p, g);

                CreateChatDto createDto = new CreateChatDto();
                createDto.ChatName      = name;
                createDto.Creator       = ME;
                createDto.P             = p;
                createDto.G             = g;

                ChatDto chat = await CHAT_CLIENT.CreateChat(createDto);
                ConsoleWriteLine($"Chat {chat.Name} created, public: {publ}, private: {priv}\n");

                ChatData chatData = new ChatData(chat, publ, priv);
                USER_CHAT_KEYS.Add(chat.Name, chatData);
                CURRENT_CHAT = chat;
                StartChatting();
            }, ex => PrintMenu());
        }
示例#5
0
 public async Task <Guid> Create([FromBody] CreateChatDto payload) =>
 await _chatService.CreateChat(payload);
 public async Task <ChatInfoDto> CreateChat(CreateChatDto createDto)
 {
     return(await Connector.SendPost <CreateChatDto, ChatInfoDto>(
                ServerUrl + CREATE_CHAT_ENDPOINT, createDto
                ));
 }
示例#7
0
 public Member(CreateChatDto dto)
 {
     Name     = dto.Creator.Name;
     Endpoint = dto.Creator.Endpoint;
     Port     = dto.Creator.Port;
 }