Пример #1
0
        public async Task ConfirmChatAsync(Guid chatId, Guid userId, string publicKey)
        {
            var(chat, chatMember) = await GetPendingChatEntities(chatId, userId);

            chatMember.Status    = ChatMemberStatus.Active;
            chatMember.PublicKey = publicKey;

            chat.Status = ChatStatus.Active;

            await _dbContext.SaveChangesAsync();
        }
Пример #2
0
        public async Task <Guid> SaveChatMessageAsync(CreateChatMessageRequest messageRequest)
        {
            var chatMember = _dbContext.ChatMembers
                             .Include(x => x.Chat)
                             .FirstOrDefault(x => x.ChatId == messageRequest.ChatId && x.UserId == messageRequest.UserId);

            if (chatMember == null)
            {
                throw new SlothEntityNotFoundException($"Couldn't save message, because chat member wasn't found for chat {messageRequest.ChatId}.");
            }

            if (chatMember.Chat.Status != ChatStatus.Active || chatMember.Status != ChatMemberStatus.Active)
            {
                throw new SlothException($"Chat {messageRequest.ChatId} is not active or member {chatMember.Id} is not active.");
            }

            var message = new ChatMessage()
            {
                ChatMemberId      = chatMember.Id,
                Message           = messageRequest.Message,
                ReplyToMessageId  = messageRequest.ReplyToMessageId, // TODO: add checks that message exists
                ForwardFromUserId = messageRequest.ForwardFromUserId //TODO: add checks that user exists
            };

            await _dbContext.ChatMessages.AddAsync(message);

            await _dbContext.SaveChangesAsync();

            return(message.Id);
        }
Пример #3
0
        public async Task <Chat> CreateChatAsync(string chatName)
        {
            try
            {
                var chat = new Chat()
                {
                    Name   = chatName,
                    Status = ChatStatus.Pending
                             // TODO: add Created By Column
                };

                await _dbContext.Chats.AddAsync(chat);

                await _dbContext.SaveChangesAsync();

                return(chat);
            }
            catch (DbUpdateException ex)
            {
                throw new SlothException("Creating chat failed", ex);
            }
        }