<?php
session_start();
require_once 'config.php';
require_once 'functions.php';

requireLogin();
$user   = getConnectedUser($pdo);
$userId = (int)$user['id'];
$betId  = (int)($_GET['id'] ?? 0);

if (!$betId) { header("Location: index.php"); exit; }

$stmt = $pdo->prepare("SELECT * FROM bets WHERE id=?");
$stmt->execute([$betId]);
$bet = $stmt->fetch();

// Seul le lanceur du gage peut honorer
if (!$bet || (int)$bet['user_id'] !== $userId) {
    header("Location: index.php"); exit;
}

// Marquer comme honoré
try {
    $pdo->prepare("UPDATE bets SET honored=1 WHERE id=?")->execute([$betId]);
    $pdo->prepare("UPDATE user_stats SET honored_bets=honored_bets+1 WHERE user_id=?")->execute([$userId]);

    // Distribuer les jetons si mise
    $walletStake = (int)($bet['wallet_stake'] ?? 0);
    if ($walletStake > 0) {
        // Déterminer le gagnant
        $winnerId = null;
        if ($bet['status'] === 'won') {
            $winnerId = (int)$bet['user_id']; // lanceur a gagné
        } elseif ($bet['status'] === 'lost' && !empty($bet['parieur2_id'])) {
            $winnerId = (int)$bet['parieur2_id']; // parieur2 a gagné
        }

        if ($winnerId && $walletStake > 0) {
            // Déterminer le perdant
            $loserId = ($winnerId === (int)$bet['user_id']) ? (int)$bet['parieur2_id'] : (int)$bet['user_id'];

            // Le perdant a déjà sa mise prise (bet_accept pour parieur2, création pour lanceur)
            // Le gagnant reçoit les 2 mises
            $prize = $walletStake * 2;
            try {
                // Les jetons ne peuvent pas être négatifs
                $pdo->prepare("UPDATE users SET wallet_points=GREATEST(0,wallet_points+?) WHERE id=?")->execute([$prize, $winnerId]);
                $pdo->prepare("INSERT INTO wallet_transactions (user_id,amount,type,description,ref_id) VALUES (?,?,?,?,?)")
                    ->execute([$winnerId, $prize, 'bet_win', "Gain gage #{$betId} ({$walletStake} jetons x2)", $betId]);
                addNotification($pdo, $winnerId, "Tu as gagne {$prize} jetons sur le gage #{$betId} !", "wallet.php");
            } catch (Exception $e) {}
        }
    }

    // Points honneur: gagnant +amount, perdant -amount (peuvent être négatifs)
    $betAmount = (int)($bet['amount'] ?? 0);
    if ($betAmount > 0 && !empty($bet['parieur2_id'])) {
        // Déterminer gagnant/perdant sur les points
        if ($bet['status'] === 'won') {
            // Lanceur gagne
            $pdo->prepare("UPDATE users SET points=points+? WHERE id=?")->execute([$betAmount, (int)$bet['user_id']]);
            $pdo->prepare("UPDATE users SET points=points-? WHERE id=?")->execute([$betAmount, (int)$bet['parieur2_id']]);
            addNotification($pdo, (int)$bet['user_id'], "+{$betAmount} pts d'honneur ! Gage #{$betId} gagné.", "index.php");
            addNotification($pdo, (int)$bet['parieur2_id'], "-{$betAmount} pts d'honneur. Gage #{$betId} perdu.", "index.php");
        } elseif ($bet['status'] === 'lost') {
            // Parieur2 gagne
            $pdo->prepare("UPDATE users SET points=points-? WHERE id=?")->execute([$betAmount, (int)$bet['user_id']]);
            $pdo->prepare("UPDATE users SET points=points+? WHERE id=?")->execute([$betAmount, (int)$bet['parieur2_id']]);
            addNotification($pdo, (int)$bet['user_id'], "-{$betAmount} pts d'honneur. Gage #{$betId} perdu.", "index.php");
            addNotification($pdo, (int)$bet['parieur2_id'], "+{$betAmount} pts d'honneur ! Gage #{$betId} gagné.", "index.php");
        }
    }

    // Notifier le parieur2
    if (!empty($bet['parieur2_id'])) {
        addNotification($pdo, (int)$bet['parieur2_id'],
            "{$user['username']} a honoré le gage #{$betId} !", "index.php");
    }
} catch (Exception $e) {}

header("Location: index.php"); exit;
?>
