public async Task <List <Conversation> > MyConversations(string userId) { var personalRelations = await PrivateConversations .AsNoTracking() .Where(t => t.RequesterId == userId || t.TargetId == userId) .Include(t => t.RequestUser) .Include(t => t.TargetUser) .Include(t => t.Messages) .ThenInclude(t => t.Ats) .ToListAsync(); var groups = await GroupConversations .AsNoTracking() .Where(t => t.Users.Any(p => p.UserId == userId)) .Include(t => t.Messages) .ThenInclude(t => t.Ats) .Include(t => t.Users) .ThenInclude(t => t.User) .ToListAsync(); var myConversations = new List <Conversation>(); myConversations.AddRange(personalRelations); myConversations.AddRange(groups); return(myConversations); }
public void AddFriend(string userId1, string userId2) { PrivateConversations.Add(new PrivateConversation { RequesterId = userId1, TargetId = userId2, AESKey = Guid.NewGuid().ToString("N") }); }
public async Task <List <string> > MyPersonalFriendsId(string userId) { var personalRelations = await PrivateConversations .AsNoTracking() .Where(t => t.RequesterId == userId || t.TargetId == userId) .Select(t => userId == t.RequesterId ? t.TargetId : t.RequesterId) .ToListAsync(); return(personalRelations); }
public async Task <PrivateConversation> FindConversationAsync(string userId1, string userId2) { var relation = await PrivateConversations.SingleOrDefaultAsync(t => t.RequesterId == userId1 && t.TargetId == userId2); if (relation != null) { return(relation); } var belation = await PrivateConversations.SingleOrDefaultAsync(t => t.RequesterId == userId2 && t.TargetId == userId1); return(belation); }
public PrivateConversation AddFriend(string userId1, string userId2) { var conversation = new PrivateConversation { RequesterId = userId1, TargetId = userId2, AESKey = Guid.NewGuid().ToString("N") }; PrivateConversations.Add(conversation); return(conversation); }
public async Task RemoveFriend(string userId1, string userId2) { var relation = await PrivateConversations.SingleOrDefaultAsync(t => t.RequesterId == userId1 && t.TargetId == userId2); var belation = await PrivateConversations.SingleOrDefaultAsync(t => t.RequesterId == userId2 && t.TargetId == userId1); if (relation != null) { PrivateConversations.Remove(relation); } if (belation != null) { PrivateConversations.Remove(belation); } }
public Task <PrivateConversation> FindConversationAsync(string userId1, string userId2) { return(PrivateConversations.Where(t => (t.RequesterId == userId1 && t.TargetId == userId2) || (t.RequesterId == userId2 && t.TargetId == userId1)).FirstOrDefaultAsync()); }