Beispiel #1
0
        public void DeleteChatRoom(RoomMode roomMode, string chatRoomName)
        {
            var chatRoom = ChatRooms.FirstOrDefault(i => i.ChatRoomName == chatRoomName && i.ChatRoomMode == roomMode);

            if (chatRoom != null)
            {
                _chatRooms.Remove(chatRoom);
            }
        }
Beispiel #2
0
        public void DeleteChatRoom(Guid chatRoomId)
        {
            var chatRoom = ChatRooms.FirstOrDefault(i => i.ChatRoomID == chatRoomId);

            if (chatRoom != null)
            {
                _chatRooms.Remove(chatRoom);
            }
        }
Beispiel #3
0
        public IChatRoom AddChatRoom(IChatRoom chatRoom)
        {
            var foundChatRoom = ChatRooms.FirstOrDefault(i => (i.ChatRoomName == chatRoom.ChatRoomName && i.ChatRoomMode == chatRoom.ChatRoomMode) || (i.ChatRoomID == chatRoom.ChatRoomID));

            if (foundChatRoom == null)
            {
                _chatRooms.Add(chatRoom);
                return(chatRoom);
            }
            else
            {
                return(null);
            }
        }
Beispiel #4
0
        public IChatRoom GetOrCreateChatRoom(RoomMode roomMode, string chatRoomName, ChatUser chatUser)
        {
            IChatRoom chatRoom = null;

            switch (roomMode)
            {
            case RoomMode.Private:
            {
                chatRoom = ChatRooms.FirstOrDefault(i => i.ChatRoomName == chatRoomName && i.ChatRoomMode == roomMode && i.CurrentUsers.Any(j => j.SessionID == chatUser.SessionID));

                if (chatRoom == null)
                {
                    var newChatRoom = new PrivateChatRoom(chatRoomName);
                    newChatRoom.JoinChatRoom(chatUser);

                    chatRoom = AddChatRoom(newChatRoom);
                }
            }
            break;

            case RoomMode.Public:
            {
                chatRoom = ChatRooms.FirstOrDefault(i => i.ChatRoomName == chatRoomName && i.ChatRoomMode == roomMode);

                if (chatRoom == null)
                {
                    var newChatRoom = new PublicChatRoom(chatRoomName);
                    newChatRoom.JoinChatRoom(chatUser);

                    chatRoom = AddChatRoom(newChatRoom);
                }
            }
            break;
            }

            if (chatRoom != null)
            {
                var foundChatUser = chatRoom.CurrentUsers.FirstOrDefault(i => i.SessionID == chatUser.SessionID);

                if (foundChatUser == null)
                {
                    chatRoom.JoinChatRoom(chatUser);
                }
                else
                {
                    if (foundChatUser.IsActive)
                    {
                        if (!string.IsNullOrEmpty(chatUser.NickName) && chatUser.NickName != foundChatUser.NickName)
                        {
                            foundChatUser.NickName = chatUser.NickName;
                        }
                    }
                    else
                    {
                        chatRoom.RemoveUser(foundChatUser);

                        foreach (var room in ChatRooms)
                        {
                            room.RemoveUser(foundChatUser);
                        }

                        return(null);
                    }
                }
            }

            return(chatRoom);
        }
Beispiel #5
0
 public IChatRoom GetChatRoomWithUsers(RoomMode roomMode, List <ChatUser> chatUsers)
 {
     return(ChatRooms.FirstOrDefault(i => i.ChatRoomMode == roomMode && chatUsers.TrueForAll(j => i.CurrentUsers.Contains(j))));
 }
Beispiel #6
0
 public IChatRoom GetChatRoom(RoomMode roomMode, string chatRoomName)
 {
     return(ChatRooms.FirstOrDefault(i => i.ChatRoomMode == roomMode && i.ChatRoomName == chatRoomName));
 }
Beispiel #7
0
 public IChatRoom GetChatRoomByID(Guid chatRoomId)
 {
     return(ChatRooms.FirstOrDefault(i => i.ChatRoomID == chatRoomId));
 }