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