prepare("SELECT name FROM games WHERE id = :id");
$stmt->execute([
    "id" => $_GET["game"],
]);
$game_name = $stmt->fetch(PDO::FETCH_COLUMN);
$title = "Results: $game_name";
$description = "View the results of particular issue's voting.";
// use new weights for Winter 2024 and later
// i want to normalise the old and new ranking formulas, but for now
// this will have to do
if (intval($_GET['game']) >= 381):
/** === START new display query === */
$temp = "";
$view =
    'CREATE TEMPORARY VIEW round_%2$d AS SELECT
        submissions.id AS submission_id,
        SUM(score) AS total_score,
        COUNT(completed) AS num_scores,
        AVG(score) AS average_score
        FROM submissions
        LEFT JOIN assignments ON submissions.id = assignments.submission_id
        WHERE submissions.game_id = %1$d AND round_number = %2$d
        GROUP BY submission_id;' . PHP_EOL;
$temp .= sprintf($view, $_GET["game"], 1);
$temp .= sprintf($view, $_GET["game"], 2);
$temp .= sprintf($view, $_GET["game"], 3);
$temp .= sprintf(
    'CREATE TEMPORARY VIEW participants AS SELECT
            member_id,
            COUNT(completed) != COUNT(id) AS disqualified
            FROM assignments
            WHERE game_id = %d
            GROUP BY member_id;',
    $_GET["game"]
);
$db["data"]->exec($temp);
$stmt = $db["data"]->query(
    'SELECT submissions.id AS id, submissions.hash, members.name, members.handle,
    CASE WHEN name_is_public = 1 AND name IS NOT NULL
        THEN name
        ELSE CONCAT("Member ", submissions.member_id)
    END AS author,
    CASE WHEN doc_is_public = 1
        THEN title
        ELSE CONCAT("Entry ", submissions.id)
    END AS title
    ,
    doc_is_public,
    name_is_public,
    participants.disqualified,
    row_number() OVER(ORDER BY
    round_1.average_score DESC, round_1.num_scores DESC) AS rank_round_1,
    iif(round_1.average_score, format("%.2f", round_1.average_score), NULL) AS score_round_1,
    round_1.num_scores AS round_1_num_scores,
    row_number() OVER(ORDER BY
    round_2.average_score DESC, round_2.num_scores DESC,
    round_1.average_score DESC, round_1.num_scores DESC) AS rank_round_2,
    iif(round_2.average_score, format("%.2f", round_2.average_score), NULL) AS score_round_2,
    round_2.num_scores AS round_2_num_scores,
    row_number() OVER(ORDER BY
    round_3.average_score DESC, round_3.num_scores DESC,
    round_2.average_score DESC, round_2.num_scores DESC,
    round_1.average_score DESC, round_1.num_scores DESC) AS rank_round_3,
    iif(round_3.average_score, format("%.2f", round_3.average_score), NULL) AS score_round_3,
    round_3.num_scores AS round_3_num_scores
    FROM submissions
    LEFT JOIN members ON submissions.member_id = members.id
    JOIN round_1 ON submissions.id = round_1.submission_id
    LEFT JOIN round_2 ON submissions.id = round_2.submission_id
    LEFT JOIN round_3 ON submissions.id = round_3.submission_id
    LEFT JOIN participants ON participants.member_id = submissions.member_id
    GROUP BY submissions.id, submissions.member_id
    ORDER BY rank_round_3;');
/** === END new display query === */
else:
/** === START old display query === */
$stmt = $db["data"]
    ->prepare('SELECT submissions.id AS id, submissions.hash, members.name, members.handle,
    CASE WHEN name_is_public = 1 AND name IS NOT NULL
        THEN name
        ELSE CONCAT("Member ", submissions.member_id)
    END AS author,
    CASE WHEN doc_is_public = 1
        THEN title
        ELSE CONCAT("Entry ", submissions.id)
    END AS title,
    doc_is_public,
    name_is_public,
    score_round_1,
    rank_round_1,
    score_round_2,
    rank_round_2,
    score_round_3,
    rank_round_3,
    rank_final,
    votes_round_1,
    votes_round_2,
    votes_round_3,
    num_assignments_round_1,
    num_assignments_round_2,
    num_assignments_round_3
    FROM submissions
    JOIN members ON submissions.member_id = members.id
    WHERE submissions.game_id = :id AND rank_final IS NOT NULL AND submissions.transaction_id IS NOT NULL ORDER BY rank_final ASC');
$stmt->execute([
    "id" => $_GET["game"],
]);
/** === END old display query === */
endif;
$row = $stmt->fetch(PDO::FETCH_OBJ);
if (!$row) {
    $title = "No Results Found";
    $description = "We couldn't find the game results you requested.";
}
include "partials/head.php";
?>
    
        
        
        
        
        
                
                    
                        Results for = $game_name ?>
                    
                        
                            | Title | 
                            Author | 
                            Score | 
                            Rank | 
                        
                        
                            | Round One | 
                            Round Two | 
                            Round Three | 
                            Round One | 
                            Round Two | 
                            Round Three | 
                        
                    
                    
                        doc_is_public || IS_ADMIN;
                            $doc_title = htmlspecialchars(
                                $row->title,
                                ENT_QUOTES
                            );
                            $doc_url = sprintf("/docs/%s", $row->hash);
                            $author = htmlspecialchars($row->author, ENT_QUOTES);
                            $profile_url = "/members/" . $row->handle;
                            $is_disqualified = $row->disqualified ??
                                ($row->rank_round_1 &&
                                    $row->num_assignments_round_1 &&
                                    !$row->votes_round_1) ||
                                    ($row->rank_round_2 &&
                                    $row->num_assignments_round_2 &&
                                    !$row->votes_round_2) ||
                                    ($row->rank_round_3 &&
                                    $row->num_assignments_round_3 &&
                                    !$row->votes_round_3)
                                    ? true
                                    : false;
                            ?>
                            >
                                | 
                                    = $has_visible_doc
                                        ? "$doc_title"
                                        : $doc_title ?>
                                    (disqualified)
                                 | 
                                = $row->name_is_public
                                    ? "$author"
                                    : $author ?> | 
                                score_round_1)
                                    ? 'class="empty"'
                                    : "" ?>>= is_null($row->score_round_1)
        ? 0
        : $row->score_round_1 ?> | 
                                score_round_2)
                                    ? 'class="empty"'
                                    : "" ?>>= is_null($row->score_round_2)
        ? 0
        : $row->score_round_2 ?> | 
                                score_round_3)
                                    ? 'class="empty"'
                                    : "" ?>>= is_null($row->score_round_3)
        ? 0
        : $row->score_round_3 ?> | 
                                = $row->rank_round_1 ?> | 
                                = $row->rank_round_2 ?> | 
                                = $row->rank_round_3 ?> | 
                            
                        fetch(PDO::FETCH_OBJ)); ?>
                    
                    
                    
                
             
            
            = $description ?>