Пример #1
0
        /// <summary>
        /// Initialize WebSocketChatManager and insert chats from database
        /// </summary>
        public static void Initialiaze()
        {
            #region Stop running chats
            if (RunningChatRooms.Count > 0)
            {
                StopAllChats();
            }

            #endregion

            #region Insert data
            RunningChatRooms.Clear();
            DataTable ChatRooms;

            using (IQueryAdapter DB = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                DB.SetQuery("SELECT * from `rp_chat_rooms`");
                ChatRooms = DB.getTable();

                if (ChatRooms != null)
                {
                    foreach (DataRow ChatRoom in ChatRooms.Rows)
                    {
                        string     ChatName     = ChatRoom["name"].ToString();
                        int        OwnerID      = Convert.ToInt32(ChatRoom["owner_id"]);
                        string     ChatPassword = ChatRoom["password"].ToString();
                        int        GangID       = Convert.ToInt32(ChatRoom["gang_id"]);
                        string     Locked       = ChatRoom["locked"].ToString();
                        List <int> ChatAdmins   = (!String.IsNullOrEmpty(Convert.ToString(ChatRoom["admins"])) && Convert.ToString(ChatRoom["admins"]).Contains(":")) ? (Convert.ToString(ChatRoom["admins"]).StartsWith(":")) ? Convert.ToString(ChatRoom["admins"]).Remove(0, 1).Split(':').Select(int.Parse).ToList() : Convert.ToString(ChatRoom["admins"]).Split(':').Select(int.Parse).ToList() : new List <int>();

                        WebSocketChatRoom newChatRoom = new WebSocketChatRoom(ChatName, OwnerID, new Dictionary <object, object>()
                        {
                            { "password", ChatPassword }, { "gang", GangID }, { "locked", PlusEnvironment.EnumToBool(Locked) }
                        }, ChatAdmins, true);
                        newChatRoom.RefreshChatRoomData(); // Get chat bans & mutes

                        RunningChatRooms.TryAdd(newChatRoom.ChatName, newChatRoom);
                    }
                }
            }
            #endregion

            if (WebSocketChatManagerMainTimer == null)
            {
                object[] Params = null;
                WebSocketChatManagerMainTimer = new WebSocketChatManagerMainTimer("websocketchatmanager", 1000, true, Params);
            }

            log.Info("Carregado " + RunningChatRooms.Count + " grupos wpp.");
        }