<?php
/** AURA FARMING — Etapa 19: preparação com câmera segura */
require_once __DIR__ . '/../config/config.php';
require_once __DIR__ . '/../config/database.php';
require_once __DIR__ . '/../includes/functions.php';
require_once __DIR__ . '/../includes/match_functions.php';
require_once __DIR__ . '/../includes/viral_functions.php';

requireLogin();
$controlledEventId=max(0,(int)($_GET['controlled_event']??0));
if($controlledEventId>0) afMinorPolicyRequire($pdo,'controlled_event_farm',['controlled_event_id'=>$controlledEventId]); else afRequireAgeFeature($pdo,'farm');
$u = usuarioAtual();
$safeProfile = afSafeCameraProfile($pdo,(int)$u['id']);
$safeMinor = !empty($safeProfile['required']);
$batalhaId = max(0,(int)($_GET['battle'] ?? 0));
$competicaoId = max(0,(int)($_GET['competition'] ?? 0));
$viralToken = strtolower(preg_replace('/[^a-f0-9]/','',(string)($_GET['viral'] ?? '')));
if ($competicaoId > 0) afRequireAgeFeature($pdo,'competition');
$viralDesafio = null;
$modo = 'individual';
$modoTitulo = 'DESAFIO INDIVIDUAL';
$modoDescricao = 'Você terá 3 minutos para gerar o máximo de aura possível.';
$controlledEvent=null;
if($controlledEventId>0){
    try{$eventAccess=afControlledEventAssertAccess($pdo,(int)$u['id'],$controlledEventId,true);$controlledEvent=afControlledEventById($pdo,$controlledEventId);$modo='evento';$modoTitulo='EVENTO INFANTIL CONTROLADO';$modoDescricao='Pontuação exclusiva do evento '.($controlledEvent['name']??'supervisionado').'. Sem transmissão pública, comentários ou mensagens.';}
    catch(Throwable $e){setFlash('error',$e->getMessage());header('Location: '.SITE_URL.'/pages/evento-infantil.php');exit;}
}
if ($controlledEventId > 0) {
    $batalhaId=0;$competicaoId=0;$viralToken='';
} elseif ($batalhaId > 0) {
    try { [$batalha] = afValidarBatalhaParaPartida($pdo,$batalhaId,(int)$u['id']); $modo = $batalha['tipo']==='torneio'?'torneio':'batalha'; $modoTitulo = $modo==='torneio'?'BATALHA DE TORNEIO':'AURA BATTLE'; $modoDescricao = 'Prepare sua câmera. A contagem começará quando os dois jogadores estiverem prontos.'; }
    catch (Throwable $e) { setFlash('error',$e->getMessage()); header('Location: '.SITE_URL.'/pages/arena.php'); exit; }
} elseif ($competicaoId > 0) {
    try { [$competicao] = afValidarEventoParaPartida($pdo,$competicaoId,(int)$u['id']); $modo='evento'; $modoTitulo='EVENTO OFICIAL'; $modoDescricao='Esta farmada será enviada para o ranking exclusivo do evento '.$competicao['nome'].'.'; }
    catch (Throwable $e) { setFlash('error',$e->getMessage()); header('Location: '.SITE_URL.'/pages/arena.php'); exit; }
}
elseif (strlen($viralToken) === 20) {
    $viralDesafio = afBuscarDesafioViral($pdo,$viralToken);
    if (!$viralDesafio || (int)($viralDesafio['convidado_id'] ?? 0) !== (int)$u['id'] || $viralDesafio['status'] !== 'aceito') {
        setFlash('error','Este desafio viral não está disponível para sua conta.');
        header('Location: '.SITE_URL.'/pages/viral.php'); exit;
    }
    $modoTitulo='DESAFIO VIRAL';
    $modoDescricao='Supere '.number_format((float)$viralDesafio['alvo_pontuacao'],2,',','.').' pontos de '.$viralDesafio['nome'].'.';
}
$ativa = afBuscarPartidaAtiva($pdo, (int)$u['id']);
if ($viralDesafio && $ativa && (int)($ativa['desafio_viral_id'] ?? 0) !== (int)$viralDesafio['id']) {
    setFlash('error','Finalize ou cancele sua partida atual antes de iniciar este desafio viral.');
    $destinoAtivo = $ativa['status']==='em_andamento' ? '/pages/partida.php?s='.urlencode((string)$ativa['sessao_id']) : '/pages/home.php';
    header('Location: '.SITE_URL.$destinoAtivo); exit;
}

if ($ativa && $ativa['status'] === 'finalizada') {
    header('Location: ' . SITE_URL . '/pages/resultado.php?s=' . urlencode((string)$ativa['sessao_id']));
    exit;
}

$pageTitle = 'Farmar Aura';
$showNav = false;
$pageScripts = [SITE_URL . '/assets/js/farm-prep.js?v=19.1'];
require_once __DIR__ . '/../includes/header.php';
?>

<main class="farm-prep" data-safe-minor="<?= $safeMinor ? '1' : '0' ?>" data-safe-lighting-min="<?= (int)($safeProfile['lighting_min_score'] ?? 28) ?>" data-safe-lighting-max="<?= (int)($safeProfile['lighting_max_score'] ?? 96) ?>" data-active-session="<?= $ativa ? esc((string)$ativa['sessao_id']) : '' ?>" data-battle-id="<?= $batalhaId ?>" data-competition-id="<?= $competicaoId ?>" data-controlled-event-id="<?= $controlledEventId ?>" data-mode="<?= esc($modo) ?>" data-viral-token="<?= esc($viralToken) ?>">
  <div class="energy-orb energy-orb--prep" aria-hidden="true"></div>

  <section class="farm-prep__content fade-in">
    <div class="farm-prep__icon">🌀</div>
    <p class="eyebrow"><?= esc($modoTitulo) ?></p>
    <h1 class="farm-prep__title">PREPARE-SE</h1>
    <p class="farm-prep__lead"><?= esc($modoDescricao) ?></p>

    <?= renderFlash() ?>

    <div class="camera-check" id="camera-check">
      <div class="camera-check__preview">
        <video id="camera-preview" autoplay playsinline muted></video>
        <div class="camera-check__placeholder" id="camera-placeholder">
          <span>📷</span>
          <strong>Câmera ainda não ativada</strong>
          <small>Corpo, mãos e poses são analisados no aparelho.</small>
        </div>
        <div class="camera-check__status" id="camera-status">Aguardando permissão</div>
      </div>
      <button type="button" class="btn btn-outline-cyan" id="btn-test-camera">TESTAR CÂMERA</button>
    </div>


    <?php if($controlledEvent):?>
    <div class="age-status-panel age-status-panel--success"><span>🛡️</span><div><strong>Área supervisionada confirmada</strong><p><?=esc((string)$controlledEvent['camera_area_instructions'])?></p><small>O resultado ficará somente no ranking fechado do evento e será excluído após <?= (int)$controlledEvent['retention_days'] ?> dias do término.</small></div></div>
    <?php endif?>

    <div class="farm-rules card">
      <div class="farm-rule">
        <span>⏱</span>
        <div><small>DURAÇÃO</small><strong>03:00</strong></div>
      </div>
      <div class="farm-rule">
        <span>💎</span>
        <div><small>AURA MÁXIMA</small><strong>1.000</strong></div>
      </div>
      <div class="farm-rule">
        <span>📱</span>
        <div><small>DISPOSITIVO</small><strong>ESTE APARELHO</strong></div>
      </div>
    </div>

    <div class="privacy-note">
      <span><?= $safeMinor ? '🛡️' : '🔒' ?></span>
      <p><?= $safeMinor
        ? 'Câmera segura ativa: use um ambiente privado e bem iluminado, não filme terceiros e permaneça sozinho. O fundo e rostos adicionais serão desfocados, sem gravação de vídeo, e a pontuação será pausada automaticamente quando houver risco.'
        : 'O vídeo não é enviado nem gravado. Corpo, mãos, poses e qualidade dos movimentos são processados localmente no aparelho.' ?></p>
    </div>

    <?php if ($ativa): ?>
      <a class="btn btn-primary btn-start-farm" href="<?= SITE_URL ?>/pages/partida.php?s=<?= esc((string)$ativa['sessao_id']) ?>">
        ▶ CONTINUAR SESSÃO
      </a>
    <?php else: ?>
      <button type="button" class="btn btn-primary btn-start-farm" id="btn-start-farm" disabled>
        ⚡ INICIAR DESAFIO
      </button>
    <?php endif; ?>

    <a href="<?= SITE_URL ?>/pages/home.php" class="btn btn-secondary">← Voltar ao início</a>

    <div class="stage-note">
      <strong>Etapa 19 concluída:</strong> verificação de iluminação, proteção do ambiente, desfoque de terceiros, detecção de múltiplas pessoas e pausa automática de pontuação.
    </div>
  </section>
</main>

<?php require_once __DIR__ . '/../includes/footer.php'; ?>
