private void OnCommandSeen(string Source, string Query)
{
try
{
string PlayerName = null;
string LoginDate = null;
using (MySqlDataReader Reader = ExecuteQuery(String.Format(
"SELECT " +
"players.Name AS player_name, " +
"players.LastLogin AS player_last_login " +
"FROM " +
"players " +
"WHERE players.Name = '{0}' ", MySqlHelper.EscapeString(Query))))
{
if (Reader.Read())
{
PlayerName = Reader.GetString(0);
LoginDate = Reader.GetString(1);
}
}
//
// Try looking up by character name too if the player name
// query failed.
//
if (PlayerName == null)
{
using (MySqlDataReader Reader = ExecuteQuery(String.Format(
"SELECT " +
"players.Name AS player_name, " +
"players.LastLogin AS player_last_login " +
"FROM " +
"characters " +
"INNER JOIN players ON players.ID = characters.PlayerID " +
"WHERE characters.Name = '{0}' " +
"AND characters.IsDeleted = 0 " +
"AND characters.IsPlayable = 1 " +
"ORDER BY characters.ID ASC ", MySqlHelper.EscapeString(Query))))
{
if (!Reader.Read())
{
SendMessage(SendType.Message, Source, String.Format(
"{0} is not a recognized player or character name.", Query));
return;
}
PlayerName = Reader.GetString(0);
LoginDate = Reader.GetString(1);
}
}
Console.WriteLine("{0} last logged in at {1}", PlayerName, LoginDate);
SendMessage(SendType.Message, Source, String.Format(
"{0} last logged in at {1}.", PlayerName, LoginDate));
IncrementStatistic("IRC_COMMAND_SEEN");
}
catch (Exception e)
{
SendMessage(SendType.Message, Source, "Internal error communicating with database.");
Console.WriteLine("Exception handling !seen request: {0}", e);
}
}