/////////////////////////
// Scoreboard Start
/////////////////////////

// Datenbank erstellen
// Einmalig zu einem anderen Theme wechseln und wieder zurück,
// damit die Datenbank erstellt wird
function create_scoreboard_tables() {
    global $wpdb;
    $charset_collate = $wpdb->get_charset_collate();

    for ($i = 1; $i <= 8; $i++) {
        $table_name = $wpdb->prefix . 'scoreboard_tisch' . $i;

        $sql = "CREATE TABLE $table_name (
            id mediumint(9) NOT NULL AUTO_INCREMENT,
            player varchar(50) NOT NULL,
            score int(11) DEFAULT 0 NOT NULL,
            player_name varchar(50) DEFAULT '' NOT NULL,
            disziplin varchar(50) DEFAULT '' NOT NULL,
            race_to int(11) DEFAULT 0 NOT NULL,
            liga varchar(50) DEFAULT '' NOT NULL,
            PRIMARY KEY (id)
        ) $charset_collate;";

        require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
        dbDelta($sql);

        // Initialwerte hinzufügen - Korrekte player Werte
        $wpdb->insert($table_name, array('player' => 'tisch1_spieler1', 'score' => 0, 'player_name' => 'Spieler 1 Name', 'disziplin' => '8-Ball', 'race_to' => 9, 'liga' => 'Training'));
        $wpdb->insert($table_name, array('player' => 'tisch1_spieler2', 'score' => 0, 'player_name' => 'Spieler 2 Name', 'disziplin' => '8-Ball', 'race_to' => 9, 'liga' => 'Training'));
    }
}
add_action('after_switch_theme', 'create_scoreboard_tables');


// Überprüfung der vorhandenen Einträge in der Tabelle wp_scoreboard_tisch1
function check_table_entries() {
    global $wpdb;
    $table = $wpdb->prefix . 'scoreboard_tisch1';
    $results = $wpdb->get_results("SELECT * FROM $table");

    if (empty($results)) {
        echo "Keine Einträge gefunden.";
    } else {
        foreach ($results as $row) {
            echo "ID: " . $row->id . "<br>";
            echo "Player: " . $row->player . "<br>";
            echo "Score: " . $row->score . "<br>";
            echo "Player Name: " . $row->player_name . "<br>";
            echo "Disziplin: " . $row->disziplin . "<br>";
            echo "Race to: " . $row->race_to . "<br>";
            echo "Liga: " . $row->liga . "<br><br>";
        }
    }
}
add_action('admin_menu', 'add_check_entries_menu');

function add_check_entries_menu() {
    add_menu_page('Check Table Entries', 'Check Entries', 'manage_options', 'check-entries', 'check_table_entries');
}

// Aktualisierung der Scores für Tisch 1
function update_score_tisch1() {
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        error_log('Daten empfangen');
        $player = sanitize_text_field($_POST['player']);
        $score = intval($_POST['score']);
        $player_name = sanitize_text_field($_POST['player_name']);
        $disziplin = sanitize_text_field($_POST['disziplin']);
        $race_to = intval($_POST['race_to']);
        $liga = sanitize_text_field($_POST['liga']);
        
        global $wpdb;
        $table = $wpdb->prefix . 'scoreboard_tisch1';
        
        error_log('Tabelle: ' . $table);
        error_log('Daten: ' . print_r($_POST, true));

        // Überprüfung vor dem Aktualisieren
        if(empty($player) || !isset($score) || empty($player_name) || empty($disziplin) || !isset($race_to) || empty($liga)) {
            error_log('Fehlende Daten: ' . print_r($_POST, true));
            wp_send_json_error('Fehlende Daten');
            return;
        }

        // Überprüfung, ob der Spieler existiert
        $existing_player = $wpdb->get_row(
            $wpdb->prepare("SELECT * FROM $table WHERE player = %s", $player)
        );

        if (!$existing_player) {
            error_log('Spieler nicht gefunden: ' . $player);
            wp_send_json_error('Spieler nicht gefunden');
            return;
        }

        $result = $wpdb->update(
            $table,
            array(
                'score' => $score,
                'player_name' => $player_name,
                'disziplin' => $disziplin,
                'race_to' => $race_to,
                'liga' => $liga
            ),
            array('player' => $player)
        );

        if ($result === false) {
            error_log('Fehler beim Aktualisieren der Daten. WP_Error: ' . $wpdb->last_error);
            wp_send_json_error();
        } else {
            error_log('Daten erfolgreich aktualisiert. Betroffene Zeilen: ' . $result);
            wp_send_json_success();
        }
    }
}
add_action('wp_ajax_update_score_tisch1', 'update_score_tisch1');
add_action('wp_ajax_nopriv_update_score_tisch1', 'update_score_tisch1');


// Abrufen der Admin-Daten für Tisch 1
function get_admin_data_tisch1() {
    global $wpdb;
    $table = $wpdb->prefix . 'scoreboard_tisch1';
    
    $spieler1 = $wpdb->get_row("SELECT * FROM $table WHERE player = 'tisch1_spieler1'");
    $spieler2 = $wpdb->get_row("SELECT * FROM $table WHERE player = 'tisch1_spieler2'");
    
    $response = array(
        'spieler1_name' => $spieler1->player_name,
        'spieler2_name' => $spieler2->player_name,
        'spieler1_score' => $spieler1->score,
        'spieler2_score' => $spieler2->score,
        'disziplin' => $spieler1->disziplin,
        'race_to' => $spieler1->race_to,
        'liga' => $spieler1->liga
    );

    wp_send_json_success($response);
}
add_action('wp_ajax_get_admin_data_tisch1', 'get_admin_data_tisch1');
add_action('wp_ajax_nopriv_get_admin_data_tisch1', 'get_admin_data_tisch1');

// GET Score für das Frontend
function get_score_tisch1() {
    global $wpdb;
    $table = $wpdb->prefix . 'scoreboard_tisch1';
    
    $spieler1 = $wpdb->get_row("SELECT * FROM $table WHERE player = 'tisch1_spieler1'");
    $spieler2 = $wpdb->get_row("SELECT * FROM $table WHERE player = 'tisch1_spieler2'");
    
    $response = array(
        'spieler1_name' => $spieler1->player_name,
        'spieler2_name' => $spieler2->player_name,
        'spieler1_score' => $spieler1->score,
        'spieler2_score' => $spieler2->score,
        'disziplin' => $spieler1->disziplin,
        'race_to' => $spieler1->race_to,
        'liga' => $spieler1->liga
    );

    wp_send_json_success($response);
}
add_action('wp_ajax_get_score_tisch1', 'get_score_tisch1');
add_action('wp_ajax_nopriv_get_score_tisch1', 'get_score_tisch1');

// Update-Feld-Funktion
function update_field() {
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $field = sanitize_text_field($_POST['field']);
        $value = sanitize_text_field($_POST['value']);
        
        global $wpdb;
        $table = $wpdb->prefix . 'scoreboard_tisch1';
        
        $result = false;
        if ($field == 'tisch1_spieler1_name' || $field == 'tisch1_spieler2_name') {
            $player = ($field == 'tisch1_spieler1_name') ? 'tisch1_spieler1' : 'tisch1_spieler2';
            $result = $wpdb->update(
                $table,
                array('player_name' => $value),
                array('player' => $player)
            );
        } elseif (in_array($field, array('disziplin', 'race_to', 'liga'))) {
            $result = $wpdb->update(
                $table,
                array($field => $value),
                array('player' => 'tisch1_spieler1') // Annahme: diese Felder sind für beide Spieler gleich
            );
        }

        if ($result === false) {
            error_log('Fehler beim Aktualisieren des Feldes: ' . $field);
            wp_send_json_error();
        } else {
            error_log('Feld erfolgreich aktualisiert: ' . $field);
            wp_send_json_success();
        }
    }
}
add_action('wp_ajax_update_field', 'update_field');
add_action('wp_ajax_nopriv_update_field', 'update_field');

// Reset Scores-Funktion
function reset_scores() {
    global $wpdb;
    $table = $wpdb->prefix . 'scoreboard_tisch1';
    
    $wpdb->update($table, array('score' => 0), array('player' => 'tisch1_spieler1'));
    $wpdb->update($table, array('score' => 0), array('player' => 'tisch1_spieler2'));
    $wpdb->update($table, array('player_name' => 'Spieler 1 Name', 'disziplin' => '8-Ball', 'race_to' => 9, 'liga' => 'Training'), array('player' => 'tisch1_spieler1'));
    $wpdb->update($table, array('player_name' => 'Spieler 2 Name'), array('player' => 'tisch1_spieler2'));

    wp_send_json_success();
}
add_action('wp_ajax_reset_scores', 'reset_scores');
add_action('wp_ajax_nopriv_reset_scores', 'reset_scores');

// wp_localize_script
function my_enqueue_scripts() {
    wp_enqueue_script('jquery');
    wp_localize_script('jquery', 'ajaxurl', admin_url('admin-ajax.php'));
}
add_action('wp_enqueue_scripts', 'my_enqueue_scripts');

/////////////////////////
// Scoreboard Ende
/////////////////////////
