Exemple #1
0
        public DirectChat AddDirectChat(string userId, string interlocutorId)
        {
            if (GetDirectChatByUserIds(userId, interlocutorId) == null)
            {
                var chatToAdd = new DirectChat();

                var userChatForUser = new UserChat
                {
                    UserId = userId,
                    Chat   = chatToAdd,
                };

                var userChatForInterlocutor = new UserChat
                {
                    UserId = interlocutorId,
                    Chat   = chatToAdd,
                };

                context.AddRange(chatToAdd, userChatForUser, userChatForInterlocutor);
                context.SaveChanges();

                return(chatToAdd);
            }
            else
            {
                return(null);
            }
        }
Exemple #2
0
        public DirectChat CreateDirectChat(string participant1, string participant2)
        {
            var chat = GetDirectChat(participant1, participant2);

            if (chat != null)
            {
                throw new ChatAlreadyExistException();
            }

            chat = new DirectChat()
            {
                ChatMembers = new List <ChatMember>()
            };
            _chatRepo.Add(chat);

            chat.ChatMembers.Add(new ChatMember()
            {
                Chat = chat,
                User = _userRepo.GetOne(participant1)
            });

            chat.ChatMembers.Add(new ChatMember()
            {
                Chat = chat,
                User = _userRepo.GetOne(participant2)
            });

            _chatRepo.Save(chat);

            return(chat);
        }
Exemple #3
0
        public DirectChat GetDirectChatByUserIds(string userId, string interlocutorId)
        {
            DirectChat directChat = context.Chats
                                    .OfType <DirectChat>()
                                    .Where(c => c.UserChats.Any(uc => uc.UserId == userId))
                                    .Where(c => c.UserChats.Any(uc => uc.UserId == interlocutorId))
                                    .Include(c => c.UserChats)
                                    .ThenInclude(uc => uc.User)
                                    .SingleOrDefault();

            if (directChat != null)
            {
                UserChat userChat = GetUserChat(userId, directChat.Id);
                directChat.UserChats.Remove(userChat);
            }

            return(directChat);
        }