private void DoRisingStar()
{
// Fetch all players that made the rising star board
int Timeframe = DateTime.UtcNow.ToUnixTimestamp() - (60 * 60 * 24 * 7);
string Query = "SELECT COUNT(DISTINCT(id)) AS count FROM player_history WHERE score > 0 AND timestamp >= @P0";
List<Dictionary<string, object>> Rows = Database.Query(Query, Timeframe);
// Write initial Headers
int Count = Int32.Parse(Rows[0]["count"].ToString());
Response.WriteResponseStart();
Response.WriteHeaderLine("size", "asof");
Response.WriteDataLine(Count, DateTime.UtcNow.ToUnixTimestamp());
// Start a new header
Response.WriteHeaderLine("n", "pid", "nick", "weeklyscore", "totaltime", "date", "playerrank", "countrycode");
if (Count == 0)
{
Response.Send();
return;
}
// Are we finding players position, or are we fetching the list?
if (Pid == 0)
{
Query = "SELECT p.id, p.name, p.rank, p.country, p.time, sum(h.score) as weeklyscore, p.joined"
+ " FROM player AS p JOIN player_history AS h ON p.id = h.id"
+ " WHERE (h.score > 0 AND h.timestamp >= @P0)"
+ " GROUP BY p.id"
+ " ORDER BY weeklyscore DESC, name DESC LIMIT @P1, @P2";
Rows = Database.Query(Query, Timeframe, Min, Max);
foreach (Dictionary<string, object> Player in Rows)
{
DateTime FromUnix = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Int32.Parse(Player["joined"].ToString())).ToLocalTime();
string DateString = FromUnix.ToString( "MM/dd/yy hh:mm:00 tt" );
Response.WriteDataLine(
Pos++,
Player["id"],
Player["name"].ToString().Trim(),
Player["weeklyscore"],
Player["time"],
DateString,
Player["rank"],
Player["country"].ToString().ToUpper()
);
}
// Send Response
Response.Send();
}
else
{
// Find players position
Query = @"SELECT p.id, p.name, p.rank, p.country, p.time, sum(h.score) as weeklyscore, p.joined"
+ " FROM player AS p JOIN player_history AS h ON p.id = h.id"
+ " WHERE (h.score > 0 AND h.timestamp >= @P0)"
+ " GROUP BY p.id"
+ " ORDER BY weeklyscore DESC, name DESC";
Rows = Database.Query(Query, Timeframe);
foreach (Dictionary<string, object> Player in Rows)
{
if (Int32.Parse(Player["id"].ToString()) == Pid)
{
DateTime FromUnix = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Int32.Parse(Player["joined"].ToString())).ToLocalTime();
string DateString = FromUnix.ToString("MM/dd/yy hh:mm:00 tt");
Response.WriteDataLine(
Pos,
Player["id"],
Player["name"].ToString().Trim(),
Player["weeklyscore"],
Player["time"],
DateString,
Player["rank"],
Player["country"].ToString().ToUpper()
);
break;
}
Pos++;
}
// Send Response
Response.Send();
}
}