private void DoScore()
{
// Make sure we have a score sub type
if (String.IsNullOrWhiteSpace(Id))
return;
// Prepare Output
Response.WriteResponseStart();
Response.WriteHeaderLine("size", "asof");
List<Dictionary<string, object>> Rows;
int Count;
if (Id == "overall")
{
// Get Player count with a score
Rows = Database.Query("SELECT COUNT(id) AS count FROM player WHERE score > 0");
Count = Int32.Parse(Rows[0]["count"].ToString());
Response.WriteDataLine(Count, DateTime.UtcNow.ToUnixTimestamp());
// Build New Header Output
Response.WriteHeaderLine("n", "pid", "nick", "score", "totaltime", "playerrank", "countrycode");
if (Count == 0)
{
Response.Send();
return;
}
if (Pid == 0)
{
string Query = "SELECT id, name, rank, country, time, score FROM player WHERE score > 0 ORDER BY score DESC, name DESC LIMIT @P0, @P1";
Rows = Database.Query(Query, Min, Max);
foreach (Dictionary<string, object> Player in Rows)
{
Response.WriteDataLine(
Pos++,
Player["id"],
Player["name"].ToString().Trim(),
Player["score"],
Player["time"],
Player["rank"],
Player["country"].ToString().ToUpper()
);
}
}
else
{
// Get Player Position
string Query = "SELECT id, name, rank, country, time, score FROM player WHERE id = @P0 ORDER BY score DESC, name DESC";
Rows = Database.Query(Query, Pid);
if(Rows.Count > 0)
{
Response.WriteDataLine(
Database.ExecuteScalar<int>("SELECT COUNT(id) as count FROM player WHERE score > @P0", Rows[0]["score"]) + 1,
Rows[0]["id"],
Rows[0]["name"].ToString().Trim(),
Rows[0]["score"],
Rows[0]["time"],
Rows[0]["rank"],
Rows[0]["country"].ToString().ToUpper()
);
}
}
// Send Response
Response.Send();
}
else if (Id == "commander")
{
Count = Database.ExecuteScalar<int>("SELECT COUNT(id) AS count FROM player WHERE cmdscore > 0");
Response.WriteDataLine(Count, DateTime.UtcNow.ToUnixTimestamp());
// Build New Header Output
Response.WriteHeaderLine("n", "pid", "nick", "coscore", "cotime", "playerrank", "countrycode");
if (Count == 0)
{
Response.Send();
return;
}
if (Pid == 0)
{
string Query = "SELECT id, name, rank, country, cmdtime, cmdscore FROM player "
+ "WHERE cmdscore > 0 ORDER BY cmdscore DESC, name DESC LIMIT @P0, @P1";
Rows = Database.Query(Query, Min, Max);
foreach (Dictionary<string, object> Player in Rows)
{
Response.WriteDataLine(
Pos++,
Player["id"],
Player["name"].ToString().Trim(),
Player["cmdscore"],
Player["cmdtime"],
Player["rank"],
Player["country"].ToString().ToUpper()
);
}
}
else
{
// Get Player Position
string Query = "SELECT id, name, rank, country, cmdtime, cmdscore FROM player WHERE id = @P0";
Rows = Database.Query(Query, Pid);
if(Rows.Count > 0)
{
Response.WriteDataLine(
Database.ExecuteScalar<int>("SELECT COUNT(id) as count FROM player WHERE cmdscore > @P0", Rows[0]["cmdscore"]) + 1,
Rows[0]["id"],
Rows[0]["name"].ToString().Trim(),
Rows[0]["cmdscore"],
Rows[0]["cmdtime"],
Rows[0]["rank"],
Rows[0]["country"].ToString().ToUpper()
);
}
}
// Send Response
Response.Send();
}
else if (Id == "team")
{
Count = Database.ExecuteScalar<int>("SELECT COUNT(id) AS count FROM player WHERE teamscore > 0");
Response.WriteDataLine(Count, DateTime.UtcNow.ToUnixTimestamp());
// Build New Header Output
Response.WriteHeaderLine("n", "pid", "nick", "teamscore", "totaltime", "playerrank", "countrycode");
if (Count == 0)
{
Response.Send();
return;
}
if (Pid == 0)
{
string Query = "SELECT id, name, rank, country, time, teamscore FROM player "
+ "WHERE teamscore > 0 ORDER BY teamscore DESC, name DESC LIMIT @P0, @P1";
Rows = Database.Query(Query, Min, Max);
foreach (Dictionary<string, object> Player in Rows)
{
Response.WriteDataLine(
Pos++,
Player["id"],
Player["name"].ToString().Trim(),
Player["teamscore"],
Player["time"],
Player["rank"],
Player["country"].ToString().ToUpper()
);
}
}
else
{
// Get Player Position
string Query = "SELECT id, name, rank, country, time, teamscore FROM player WHERE id = @P0";
Rows = Database.Query(Query, Pid);
if(Rows.Count > 0)
{
Response.WriteDataLine(
Database.ExecuteScalar<int>("SELECT COUNT(id) as count FROM player WHERE teamscore > @P0", Rows[0]["teamscore"]) + 1,
Rows[0]["id"],
Rows[0]["name"].ToString().Trim(),
Rows[0]["teamscore"],
Rows[0]["time"],
Rows[0]["rank"],
Rows[0]["country"].ToString().ToUpper()
);
}
}
// Send Response
Response.Send();
}
else if (Id == "combat")
{
Count = Database.ExecuteScalar<int>("SELECT COUNT(id) AS count FROM player WHERE skillscore > 0");
Response.WriteDataLine(Count, DateTime.UtcNow.ToUnixTimestamp());
// Build New Header Output
Response.WriteHeaderLine("n", "pid", "nick", "score", "totalkills", "totaltime", "playerrank", "countrycode");
if (Count == 0)
{
Response.Send();
return;
}
if (Pid == 0)
{
string Query = "SELECT id, name, rank, country, time, kills, skillscore FROM player "
+ "WHERE skillscore > 0 ORDER BY skillscore DESC, name DESC LIMIT @P0, @P1";
Rows = Database.Query(Query, Min, Max);
foreach (Dictionary<string, object> Player in Rows)
{
Response.WriteDataLine(
Pos++,
Player["id"],
Player["name"].ToString().Trim(),
Player["skillscore"],
Player["kills"],
Player["time"],
Player["rank"],
Player["country"].ToString().ToUpper()
);
}
}
else
{
// Get Player Position
string Query = "SELECT id, name, rank, country, time, kills, skillscore FROM player WHERE id = @P0";
Rows = Database.Query(Query, Pid);
if (Rows.Count > 0)
{
Response.WriteDataLine(
Database.ExecuteScalar<int>("SELECT COUNT(id) as count FROM player WHERE skillscore > @P0", Rows[0]["skillscore"]) + 1,
Rows[0]["id"],
Rows[0]["name"].ToString().Trim(),
Rows[0]["skillscore"],
Rows[0]["kills"],
Rows[0]["time"],
Rows[0]["rank"],
Rows[0]["country"].ToString().ToUpper()
);
}
}
// Send Response
Response.Send();
}
else
{
//Response.HTTPStatusCode = ASPResponse.HTTPStatus.BadRequest;
Response.Send();
}
}