public static Enums.BanType IsBanned(DatabaseConnection dbConnection, Enums.BanMethod banMethod, string value) { IDataColumn[] columns = RetrieveField(dbConnection, "UnbanDate", banMethod, value); IDataColumn[] dataColumns = RetrieveField(dbConnection, "BanType", banMethod, value); if (columns != null) { string unbanDate = (string)columns[0].Value; if (unbanDate == "-----") { // It's a permanent ban. return((Enums.BanType)((int)dataColumns[0].Value)); } else { // It's a temp ban DateTime dtUnbanDate = DateTime.Parse(unbanDate); if (DateTime.Now > dtUnbanDate) { RemoveBan(dbConnection, banMethod, value); return(Enums.BanType.None); } else { return((Enums.BanType)((int)dataColumns[0].Value)); } } } else { // columns was null, which means their entry was not found return(Enums.BanType.None); } }
private static string SelectColumnForBanMethod(Enums.BanMethod banMethod) { switch (banMethod) { case Enums.BanMethod.PlayerIP: return("BannedPlayerIP"); case Enums.BanMethod.PlayerMAC: return("BannedPlayerMac"); case Enums.BanMethod.PlayerID: return("BannedPlayerID"); default: throw new NotSupportedException(); } }
private static IDataColumn[] RetrieveField(DatabaseConnection dbConnection, string fieldToRetrieve, Enums.BanMethod banMethod, string valueToSearch) { var column = SelectColumnForBanMethod(banMethod); IDataColumn[] columns = dbConnection.Database.RetrieveRow("bans", fieldToRetrieve, column + "=\"" + valueToSearch + "\""); if (columns != null) { return(columns); } else { return(null); } }
public static void RemoveBan(DatabaseConnection dbConnection, Enums.BanMethod banMethod, string value) { var column = SelectColumnForBanMethod(banMethod); dbConnection.Database.DeleteRow("bans", $"{column} = @Value", new { Value = value }); }