<?php
require_once __DIR__ . '/../../_bootstrap.php';
require_once ROOT_PATH . '/includes/match_functions.php';
$u = afApiOuSessaoUsuario($pdo,'public_live');
$token = preg_replace('/[^a-f0-9]/','',strtolower((string)($_GET['s'] ?? '')));
$p = afBuscarPartidaPublicaPorToken($pdo,$token,false,(int)$u['id']);
if (!$p) jsonResponse(['ok'=>false,'erro'=>'Partida ao vivo não encontrada.'],404);
if ($p['status']==='em_andamento' && !empty($p['expira_em']) && strtotime((string)$p['expira_em'])<=time()) {
    try { $p = afFinalizarPartida($pdo,(int)$p['usuario_id'],(string)$p['sessao_id'],true); }
    catch (Throwable $e) { /* outra requisição pode estar finalizando */ }
    $p = afBuscarPartidaPublicaPorToken($pdo,$token,false,(int)$u['id']) ?: $p;
}
if ($_SERVER['REQUEST_METHOD']==='POST') {
    afValidarCsrfApi();
    afRegistrarPresencaEspectador($pdo,$p,(int)$u['id'],(int)$u['dispositivo_id']);
    $p = afBuscarPartidaPublicaPorToken($pdo,$token,false,(int)$u['id']) ?: $p;
}
jsonResponse(['ok'=>true,'partida'=>afEstadoEspectador($pdo,$p,(int)$u['id'])]);
