private void DoKit()
{
// Make sure we have a score sub type
int KitId = 0;
if (String.IsNullOrWhiteSpace(Id) || !Int32.TryParse(Id, out KitId))
{
Response.WriteResponseStart(false);
Response.WriteHeaderLine("asof", "err");
Response.WriteDataLine(DateTime.UtcNow.ToUnixTimestamp(), "Invalid Syntax!");
Response.Send();
return;
}
// Get total number of players who have at least 1 kill in kit
int Count = Database.ExecuteScalar<int>(String.Format("SELECT COUNT(id) AS count FROM kits WHERE kills{0} > 0", Id));
Response.WriteResponseStart();
Response.WriteHeaderLine("size", "asof");
Response.WriteDataLine(Count, DateTime.UtcNow.ToUnixTimestamp());
// Build New Header Output
Response.WriteHeaderLine("n", "pid", "nick", "killswith", "deathsby", "timeplayed", "playerrank", "countrycode");
// Get Leaderboard Positions
string Query = String.Format("SELECT player.id AS plid, name, rank, country, kills{0} AS kills, deaths{0} AS deaths, time{0} AS time"
+ " FROM player NATURAL JOIN kits WHERE kills{0} > 0 ORDER BY kills{0} DESC, name DESC", KitId);
if (Pid == 0)
Query += String.Format(" LIMIT {0}, {1}", Min, Max);
List<Dictionary<string, object>> Rows = Database.Query(Query);
foreach (Dictionary<string, object> Player in Rows)
{
if (Pid == 0 || Int32.Parse(Player["plid"].ToString()) == Pid)
{
Response.WriteDataLine(
Pos,
Player["plid"],
Player["name"].ToString().Trim(),
Player["kills"],
Player["deaths"],
Player["time"],
Player["rank"],
Player["country"].ToString().ToUpper()
);
if (Pid != 0)
break;
}
Pos++;
}
// Send Response
Response.Send();
}