/// <summary> /// Checks if the user is authenticated {insert into the chatuser concurrentdictionary} /// </summary> /// <param name="User">Target user</param> /// <param name="ChatName">Target chat</param> /// <returns>true or false</returns> public static bool AuthenticatedInChatRoom(GameClient User, string ChatName) { if (User == null) { return(false); } if (User.GetRoleplay() == null) { return(false); } if (User.GetRoleplay().WebSocketConnection == null) { User.SendWhisper("Você deve estar conectado ao websocket para poder se juntar aos grupos! Entre em contato com um membro da equipe se esse problema persistir!", 1); return(false); } if (!RunningChatRooms.ContainsKey(ChatName.ToLower())) { User.SendWhisper("Este chat não existe!", 1); return(false); } WebSocketChatRoom ChatRoom = RunningChatRooms[ChatName.ToLower()]; if (!ChatRoom.ChatUsers.ContainsKey(User)) { User.SendWhisper("Você não está neste chat, acesso negado.", 1); return(false); } return(true); }
public static void DeleteChat(WebSocketChatRoom ChatRoom) { ChatRoom.Stop("Este grupo foi excluído por um membro da equipe!"); using (IQueryAdapter DB = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { DB.RunQuery("DELETE FROM rp_chat_rooms WHERE name = '" + ChatRoom.ChatName + "'"); DB.RunQuery("DELETE FROM rp_chat_rooms_data WHERE chat_name = '" + ChatRoom.ChatName + "'"); DB.RunQuery("DELETE FROM rp_chat_rooms_logs WHERE chat_name = '" + ChatRoom.ChatName + "'"); } }
/// <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."); }
/// <summary> /// Completely remove a user from a target chat name /// </summary> /// <param name="User">Target user to remove from </param> /// <param name="ChatName">Target chat's name</param> /// <param name="AlertMSG">Alert sent to user while user is removed</param> /// <param name="MSG">Whether to send an alert while removing</param> public static void Disconnect(GameClient User, string ChatName, bool AlertMSG = false, string MSG = null) { if (User == null) { return; } if (RunningChatRooms == null) { return; } if (!RunningChatRooms.ContainsKey(ChatName.ToLower())) { return; } WebSocketChatRoom Chat = GetChatByName(ChatName); if (Chat == null) { return; } if (AlertMSG && MSG != null) { if (User.GetRoleplay() != null) { User.GetRoleplay().SendTopAlert(MSG); } } if (!Chat.ChatUsers.ContainsKey(User)) { return; } RunningChatRooms[ChatName.ToLower()].DecomposeChatDIV(User); if (Chat.ChatUsers.ContainsKey(User)) { Chat.OnUserLeft(User); } WebSocketChatRoom outChat; if (!User.LoggingOut) { if (User.GetRoleplay() == null) { return; } if (User.GetRoleplay().ChatRooms == null) { return; } User.GetRoleplay().ChatRooms.TryRemove(ChatName.ToLower(), out outChat); } RunningChatRooms[ChatName.ToLower()].CheckDelete(); }