Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 public void AddFriend(string userId1, string userId2)
 {
     PrivateConversations.Add(new PrivateConversation
     {
         RequesterId = userId1,
         TargetId    = userId2,
         AESKey      = Guid.NewGuid().ToString("N")
     });
 }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
            }
        }
Esempio n. 7
0
 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());
 }