private void FinishQuery(string action, SelectQueryBuilder builder, out bool valueIsDecimal)
{
// Generate our list of columns
List<string> Cols = new List<string>()
{
"player.id AS pid",
"name",
"rank",
"time",
"country",
"score / (time * 1.0 / 60) AS spm",
"(wins * 1.0 / losses) AS wlr",
"(kills * 1.0 / deaths) AS kdr",
};
// Value Type
valueIsDecimal = false;
// Additional function
switch (action.ToLowerInvariant())
{
case "score":
Cols.Add("score AS value");
break;
case "spm":
Cols.Add("score / (time * 1.0 / 60) AS value");
valueIsDecimal = true;
break;
case "wlr":
Cols.Add("(wins * 1.0 / losses) AS value");
valueIsDecimal = true;
break;
case "kdr":
Cols.Add("(kills * 1.0 / deaths) AS value");
valueIsDecimal = true;
break;
case "knife_kdr":
Cols.Add("(weapons.knifekills * 1.0 / weapons.knifedeaths) AS value");
builder.AddJoin(JoinType.InnerJoin, "weapons", "id", Comparison.Equals, "player", "id");
valueIsDecimal = true;
break;
case "sniper_acc":
Cols.Add("(weapons.hit4 * 1.0 / weapons.fired4) AS value");
valueIsDecimal = true;
builder.AddJoin(JoinType.InnerJoin, "weapons", "id", Comparison.Equals, "player", "id");
break;
case "brs":
Cols.Add("rndscore AS value");
break;
case "fc":
Cols.Add("captures AS value");
break;
case "fw":
Cols.Add("(captureassists + captures + neutralizes + defends) AS value");
break;
case "btw":
Cols.Add("teamscore AS value");
break;
case "hpd":
// Hours Per Day
// Timeframe: ((Last Online timstamp - Joined Timestamp) / 1 day (86400 seconds)) Gets the timespan of days played
// Divide Timeframe by: hours played (seconds played (`time` column) / 1 hr (3600 seconds))
Cols.Add("(time / 3600.0) / ((lastonline - joined) / 86400.0) AS value");
valueIsDecimal = true;
break;
case "command":
Cols.Add("cmdscore AS value");
break;
case "rcmds":
Cols.Add("COALESCE((cmdscore * 1.0 / (cmdtime / 60)), 0.0) AS value");
valueIsDecimal = true;
break;
}
builder.SelectColumns(Cols.ToArray());
//builder.WhereStatement.Add("value", Comparison.GreaterThan, 0);
builder.AddOrderBy("value", Sorting.Descending);
}