BF2Statistics.Web.ASP.GetLeaderBoard.DoScore C# (CSharp) Method

DoScore() private method

private DoScore ( ) : void
return void
        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();
            }
        }