<?php
/** AURA FARMING — Etapa 12: resultado validado, segurança e compartilhamento */
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';

requireLogin();
$u = usuarioAtual();
$sessaoId = preg_replace('/[^a-f0-9]/', '', strtolower((string)($_GET['s'] ?? '')));
if (strlen($sessaoId) !== 48) {
    setFlash('error', 'Resultado inválido.');
    header('Location: ' . SITE_URL . '/pages/home.php');
    exit;
}
$p = afBuscarPartidaPorSessao($pdo, (int)$u['id'], $sessaoId);
if (!$p) {
    setFlash('error', 'Resultado não encontrado.');
    header('Location: ' . SITE_URL . '/pages/home.php');
    exit;
}
if ($p['status'] === 'em_andamento' && strtotime((string)$p['expira_em']) <= time()) {
    $p = afFinalizarPartida($pdo, (int)$u['id'], $sessaoId, true);
}
if ($p['status'] !== 'finalizada') {
    header('Location: ' . SITE_URL . '/pages/partida.php?s=' . urlencode($sessaoId));
    exit;
}

if (empty($p['resultado_visto_em'])) {
    try {
        $pdo->beginTransaction();
        $pdo->prepare('UPDATE af_partidas SET resultado_visto_em=NOW() WHERE id=? AND resultado_visto_em IS NULL')->execute([(int)$p['id']]);
        $pdo->prepare("INSERT INTO af_partida_eventos(partida_id,usuario_id,tipo,valor,dados,criado_em) VALUES (?,?,'resultado_visto',?,NULL,NOW())")
            ->execute([(int)$p['id'],(int)$u['id'],(float)$p['pontuacao_total']]);
        $pdo->commit();
    } catch (Throwable $e) {
        if ($pdo->inTransaction()) $pdo->rollBack();
    }
}

$antifraudeStatus=(string)($p['antifraude_status']??'aprovada');
$partidaAprovada=$antifraudeStatus==='aprovada';
$controlledEventMode=!empty($p['controlled_event_id']);
$controlledEventRanking=$controlledEventMode?SITE_URL.'/pages/evento-ranking.php?event='.(int)$p['controlled_event_id']:'';
$posicao = ($partidaAprovada&&!$controlledEventMode) ? ((int)($p['ranking_global_posicao'] ?? 0) ?: afCalcularPosicaoPeriodo($pdo,(int)$u['id'],'global')) : 0;
$auraScore = (float)$p['aura_gerada'];
$socialScore = afPontuacaoSocial($p);
$score = (float)$p['pontuacao_total'];
$scoreValidado = (float)($p['pontuacao_validada'] ?? ($partidaAprovada?$score:0));
$xpGanho = $controlledEventMode?0:(array_key_exists('xp_ganho',$p) ? (int)$p['xp_ganho'] : ($partidaAprovada ? 100 + (int)floor($score * .10) : 0));
$xpDetalhes=json_decode((string)($p['xp_detalhes']??'{}'),true)?:[];
$progressao=afResumoProgressao($pdo,(int)$u['id']);
$nivelAura = afNivelAuraVisual($auraScore);
$shareUrl = SITE_URL . '/pages/compartilhar.php?t=' . urlencode((string)$p['share_token']);
$duracao = (int)($p['duracao_real_segundos'] ?? 0);
$duracaoTexto = sprintf('%02d:%02d', intdiv($duracao,60), $duracao%60);
$batalhaResultado = !empty($p['batalha_id']) ? afBuscarBatalha($pdo,(int)$p['batalha_id']) : null;
$batalhaPublica = $batalhaResultado ? afBatalhaPublica($pdo,$batalhaResultado,(int)$u['id']) : null;
$competicaoResultado = !empty($p['competicao_id']) ? afBuscarCompeticao($pdo,(int)$p['competicao_id']) : null;
$pageTitle = 'Resultado';
$showNav = false;
$bodyClass = 'result-body';
$pageScripts = $controlledEventMode?[]:[SITE_URL . '/assets/vendor/qrcode/aura-qrcode.js?v=1.0', SITE_URL . '/assets/js/result-share.js?v=12.0'];
require_once __DIR__ . '/../includes/header.php';
?>

<main class="result-screen result-screen--aura-<?= (int)$nivelAura['nivel'] ?>">
  <div class="result-energy" aria-hidden="true"></div>
  <section class="result-content fade-in"
    data-partida-id="<?= (int)$p['id'] ?>"
    data-share-url="<?= esc($shareUrl) ?>"
    data-replay-url="<?= esc(SITE_URL . '/pages/replay.php?t=' . urlencode((string)$p['share_token'])) ?>"
    data-share-score="<?= esc((string)$score) ?>"
    data-share-aura-id="<?= esc($u['aura_id']) ?>"
    data-share-name="<?= esc($u['nome']) ?>"
    data-share-avatar="<?= esc(urlAvatar($u['foto_perfil'] ?? null, $u['foto_externa'] ?? null)) ?>"
    data-share-aura="<?= esc((string)$auraScore) ?>"
    data-share-likes="<?= (int)$p['likes_recebidos'] ?>"
    data-share-superlikes="<?= (int)$p['superlikes_recebidos'] ?>"
    data-share-combo="<?= (int)($p['combo_maximo'] ?? 1) ?>"
    data-share-grade="<?= esc((string)($p['combo_nota'] ?? 'D')) ?>"
    data-share-rank="<?= $posicao ?>">
    <div class="result-badge">✓ SESSÃO CONCLUÍDA</div>
    <?php if(!$partidaAprovada): ?>
      <section class="security-result-banner security-result-banner--<?=esc($antifraudeStatus)?>">
        <span>🛡️</span><div><small>VALIDAÇÃO ANTIFRAUDE</small><strong><?= $antifraudeStatus==='rejeitada'?'RESULTADO NÃO VALIDADO':'RESULTADO EM ANÁLISE' ?></strong>
        <p>A pontuação foi salva, mas não entrou no ranking, recompensas ou competições. Score de risco: <?= (int)($p['antifraude_score']??0) ?>/100.</p></div>
        <a href="<?=SITE_URL?>/pages/seguranca.php">VER SEGURANÇA →</a>
      </section>
    <?php else: ?>
      <div class="security-result-ok">🛡️ RESULTADO VALIDADO PELO SERVIDOR</div>
    <?php endif; ?>

    <?php if ((int)($p['novo_recorde'] ?? 0) === 1): ?>
      <div class="record-banner">🏅 NOVO RECORDE PESSOAL!</div>
    <?php endif; ?>

    <?php if($controlledEventMode): ?>
      <section class="result-battle-context"><span>🛡️</span><div><small>EVENTO INFANTIL CONTROLADO</small><strong>RESULTADO FECHADO E PROTEGIDO</strong><p>Sem XP, recorde global, transmissão, comentários ou compartilhamento público.</p></div><a href="<?=esc($controlledEventRanking)?>">VER RANKING DO EVENTO →</a></section>
    <?php elseif($batalhaPublica): $rival=array_values(array_filter($batalhaPublica['jogadores'],static fn($j)=>!$j['eu']))[0]??null; ?>
      <section class="result-battle-context">
        <span>⚔️</span><div><small><?= $batalhaPublica['status']==='finalizada'?'RESULTADO DA BATALHA':'PLACAR PROVISÓRIO' ?></small><strong><?= $batalhaPublica['vencedor_id']===(int)$u['id']?'VOCÊ VENCEU!':($batalhaPublica['status']==='finalizada'?'BATALHA FINALIZADA':'AGUARDANDO ADVERSÁRIO') ?></strong><p>Você <?=number_format($score,2,',','.')?> × <?=number_format((float)($rival['pontuacao']??0),2,',','.')?> <?=esc($rival['nome']??'Adversário')?></p></div><a href="<?=SITE_URL?>/pages/batalha.php?id=<?=$batalhaPublica['id']?>">VER PLACAR →</a>
      </section>
    <?php elseif($competicaoResultado && ($p['modo']??'')==='evento'): ?>
      <section class="result-battle-context"><span>🌐</span><div><small>RESULTADO DO EVENTO</small><strong>PONTUAÇÃO REGISTRADA</strong><p><?=esc($competicaoResultado['nome'])?></p></div><a href="<?=SITE_URL?>/pages/competicao.php?id=<?=(int)$competicaoResultado['id']?>">VER EVENTO →</a></section>
    <?php endif; ?>

    <div class="result-aura-tier">
      <small>NÍVEL VISUAL ALCANÇADO</small>
      <strong><?= esc($nivelAura['nome']) ?></strong>
      <span><?= esc($nivelAura['faixa']) ?> AURA</span>
    </div>
    <p class="eyebrow">A FARMADA TERMINOU!</p>
    <h1>PONTUAÇÃO FINAL</h1>

    <div class="result-score-ring">
      <span>💎</span>
      <strong><?= number_format($score, 2, ',', '.') ?></strong>
      <small><?= $partidaAprovada ? 'PONTUAÇÃO OFICIAL VALIDADA' : 'PONTUAÇÃO BRUTA — NÃO RANQUEADA' ?></small>
    </div>

    <div class="result-position-strip">
      <?php if($controlledEventMode):?>
      <div><small>ESCOPO</small><strong>EVENTO</strong></div><div><small>PERFIL</small><strong>PRIVADO</strong></div><div><small>LIVE</small><strong>OFF</strong></div><div><small>RETENÇÃO</small><strong>LIMITADA</strong></div>
      <?php else:?>
      <div><small>GLOBAL</small><strong><?= $posicao > 0 ? $posicao . 'º' : '—' ?></strong></div>
      <div><small>DIÁRIO</small><strong><?= !empty($p['ranking_diario_posicao']) ? (int)$p['ranking_diario_posicao'] . 'º' : '—' ?></strong></div>
      <div><small>SEMANAL</small><strong><?= !empty($p['ranking_semanal_posicao']) ? (int)$p['ranking_semanal_posicao'] . 'º' : '—' ?></strong></div>
      <div><small>MENSAL</small><strong><?= !empty($p['ranking_mensal_posicao']) ? (int)$p['ranking_mensal_posicao'] . 'º' : '—' ?></strong></div>
      <?php endif?>
    </div>

    <div class="result-grid result-grid--vision">
      <article class="result-stat"><span>🌌</span><small>AURA GERADA</small><strong><?= number_format($auraScore, 0, ',', '.') ?></strong></article>
      <article class="result-stat"><span>👥</span><small>AURA SOCIAL</small><strong>+<?= number_format($socialScore, 2, ',', '.') ?></strong></article>
      <article class="result-stat"><span>❤️</span><small>LIKES</small><strong><?= (int)$p['likes_recebidos'] ?></strong></article>
      <article class="result-stat"><span>⚡</span><small>SUPER LIKES</small><strong><?= (int)$p['superlikes_recebidos'] ?></strong></article>
      <article class="result-stat"><span>🎯</span><small>PRECISÃO</small><strong><?= number_format((float)($p['precisao_media'] ?? 0), 0, ',', '.') ?>%</strong></article>
      <article class="result-stat"><span>〰️</span><small>FLUIDEZ</small><strong><?= number_format((float)($p['fluidez_media'] ?? 0), 0, ',', '.') ?>%</strong></article>
      <article class="result-stat"><span>✨</span><small>ORIGINALIDADE</small><strong><?= number_format((float)($p['originalidade_media'] ?? 0), 0, ',', '.') ?>%</strong></article>
      <article class="result-stat"><span>🔥</span><small>DIFICULDADE</small><strong><?= number_format((float)($p['dificuldade_media'] ?? 0), 0, ',', '.') ?>%</strong></article>
      <article class="result-stat"><span>🕺</span><small>MOVIMENTOS</small><strong><?= (int)($p['movimentos_reconhecidos'] ?? 0) ?></strong></article>
      <article class="result-stat"><span>⚡</span><small>COMBO MÁXIMO</small><strong>x<?= (int)($p['combo_maximo'] ?? 1) ?></strong></article>
      <article class="result-stat"><span>🔗</span><small>MAIOR CORRENTE</small><strong><?= (int)($p['combo_hits_maximo'] ?? 0) ?> moves</strong></article>
      <article class="result-stat"><span>🎼</span><small>RITMO</small><strong><?= number_format((float)($p['combo_ritmo_medio'] ?? 0),0,',','.') ?>%</strong></article>
      <article class="result-stat"><span>💥</span><small>SEQUÊNCIAS</small><strong><?= (int)($p['combo_sequencias_concluidas'] ?? 0) ?></strong></article>
      <article class="result-stat"><span>⭐</span><small>PERFECT CHAIN</small><strong><?= (int)($p['combo_perfect_chain_max'] ?? 0) ?></strong></article>
      <article class="result-stat"><span>🏷️</span><small>NOTA DO COMBO</small><strong><?= esc((string)($p['combo_nota'] ?? 'D')) ?></strong></article>
      <article class="result-stat"><span>🛡️</span><small>SEGURANÇA</small><strong><?= $partidaAprovada?'APROVADA':strtoupper(esc($antifraudeStatus)) ?></strong></article>
      <article class="result-stat"><span>⏱️</span><small>DURAÇÃO</small><strong><?= esc($duracaoTexto) ?></strong></article>
      <article class="result-stat"><span>⭐</span><small>XP RECEBIDO</small><strong>+<?= $xpGanho ?></strong></article>
    </div>

    <section class="result-combo-report" data-grade="<?= esc((string)($p['combo_nota'] ?? 'D')) ?>">
      <div><small>DESEMPENHO DE COMBO</small><strong>NOTA <?= esc((string)($p['combo_nota'] ?? 'D')) ?></strong></div>
      <span>🔥 <?= (int)($p['combo_hits_maximo'] ?? 0) ?> movimentos na maior corrente</span>
      <span>〰️ <?= number_format((float)($p['combo_ritmo_medio'] ?? 0),0,',','.') ?>% de ritmo médio</span>
      <span>🧠 <?= (int)($p['combo_variedade_max'] ?? 0) ?> movimentos diferentes</span>
      <span>⏸️ <?= (int)($p['combo_pausas_estrategicas'] ?? 0) ?> pausas estratégicas</span>
      <span>💎 +<?= number_format((float)($p['bonus_sequencias'] ?? 0),2,',','.') ?> de bônus por sequências</span>
    </section>

    <?php if ($auraScore >= 1000): ?>
      <div class="maximum-aura-message">🔥 AURA MÁXIMA ATINGIDA!</div>
    <?php elseif ($auraScore >= 700): ?>
      <div class="maximum-aura-message">⚡ FARMADA PODEROSA!</div>
    <?php endif; ?>

    <?php if(!$controlledEventMode):?>
    <section class="result-xp-breakdown">
      <div class="result-xp-head"><div><small>PROGRESSÃO DA CONTA</small><strong>+<?= $xpGanho ?> XP</strong></div><span>NÍVEL <?= (int)$progressao['nivel']['nivel'] ?></span></div>
      <div class="progress-bar-wrap"><div class="progress-bar-fill" style="width:<?= (float)$progressao['nivel']['percentual'] ?>%"></div></div>
      <div class="result-xp-items">
        <span>Partida <b>+<?= (int)($xpDetalhes['partida']??($p['xp_base']??0)) ?></b></span>
        <?php if(!empty($xpDetalhes['novo_recorde'])):?><span>Novo recorde <b>+<?= (int)$xpDetalhes['novo_recorde'] ?></b></span><?php endif;?>
        <?php if(!empty($xpDetalhes['aura_maxima'])):?><span>Aura máxima <b>+<?= (int)$xpDetalhes['aura_maxima'] ?></b></span><?php endif;?>
        <?php if(!empty($xpDetalhes['combo'])):?><span>Combo <b>+<?= (int)$xpDetalhes['combo'] ?></b></span><?php endif;?>
        <?php if(!empty($xpDetalhes['combo_avancado'])):?><span>Combo avançado <b>+<?= (int)$xpDetalhes['combo_avancado'] ?></b></span><?php endif;?>
        <?php if(!empty($xpDetalhes['sequencia'])):?><span>Sequência diária <b>+<?= (int)$xpDetalhes['sequencia'] ?></b></span><?php endif;?>
      </div>
      <small><?=formatarNumero((float)$progressao['nivel']['xp_atual'])?> / <?=formatarNumero((float)$progressao['nivel']['xp_necessario'])?> XP para o próximo nível</small>
    </section>
    <?php endif?>

    <div class="result-actions">
      <?php if($partidaAprovada&&!$controlledEventMode): ?>
      <button type="button" class="btn btn-primary" data-share-result>📤 ABRIR ESTÚDIO DE COMPARTILHAMENTO</button>
      <button type="button" class="btn btn-outline-cyan" data-create-viral-challenge>⚔️ DESAFIAR AMIGO COM ESTA PONTUAÇÃO</button>
      <a href="<?= SITE_URL ?>/pages/replay.php?t=<?= urlencode((string)$p['share_token']) ?>" class="btn btn-secondary">▶ REPLAY ANIMADO</a>
      <button type="button" class="btn btn-secondary" data-copy-result>🔗 COPIAR LINK PÚBLICO</button>
      <a href="<?= SITE_URL ?>/pages/viral.php" class="btn btn-secondary">🚀 CENTRAL AURA VIRAL</a>
      <?php endif; ?>
      <?php if($controlledEventMode):?><a href="<?=esc($controlledEventRanking)?>" class="btn btn-primary">🏆 RANKING FECHADO DO EVENTO</a><a href="<?=SITE_URL?>/pages/evento-infantil.php" class="btn btn-secondary">🛡️ MEUS EVENTOS</a><?php else:?><a href="<?= SITE_URL ?>/pages/seguranca.php" class="btn btn-secondary">🛡️ CENTRAL DE SEGURANÇA</a><?php endif?>
      <?php if(!$controlledEventMode):?><a href="<?= SITE_URL ?>/pages/farmar.php" class="btn btn-secondary">↻ TENTAR NOVAMENTE</a><?php endif?>
      <?php if(!$controlledEventMode):?><a href="<?= SITE_URL ?>/pages/historico.php" class="btn btn-secondary">📊 VER HISTÓRICO</a><a href="<?= SITE_URL ?>/pages/ranking.php" class="btn btn-secondary">🏆 VER RANKING</a><?php endif?>
      <a href="<?= SITE_URL ?>/pages/home.php" class="btn btn-secondary">⌂ VOLTAR AO INÍCIO</a>
    </div>
    <div class="share-feedback" data-share-feedback aria-live="polite"></div>

    <?php if($partidaAprovada&&!$controlledEventMode): ?>
    <div class="share-studio" data-share-studio aria-hidden="true">
      <div class="share-studio__panel">
        <button type="button" class="share-studio__close" data-close-share aria-label="Fechar">×</button>
        <p class="eyebrow">ESTÚDIO AURA VIRAL</p><h2>CRIE SEU CARD</h2>
        <div class="share-studio__formats"><button class="active" data-share-format="story">STORY 9:16</button><button data-share-format="square">POST 1:1</button></div>
        <div class="share-studio__templates"><button class="active" data-share-template="neon">NEON</button><button data-share-template="purple">ROXO</button><button data-share-template="maximum">MÁXIMO</button></div>
        <div class="share-canvas-wrap"><canvas data-share-canvas width="1080" height="1920"></canvas></div>
        <div class="share-network-grid">
          <button data-share-network="whatsapp">💬 WhatsApp</button><button data-share-network="instagram">📸 Instagram</button><button data-share-network="tiktok">🎵 TikTok</button><button data-share-network="facebook">f Facebook</button><button data-share-network="x">𝕏 X</button>
        </div>
        <button class="btn btn-primary" data-native-share>📤 COMPARTILHAR CARD</button>
        <button class="btn btn-outline-cyan" data-download-card>⬇ BAIXAR PNG</button>
        <button class="btn btn-secondary" data-create-viral-challenge>⚔️ CRIAR DESAFIO POR LINK</button>
      </div>
    </div>

    <?php endif; ?>

    <p class="result-note">Modo de análise: <strong><?= (($p['modo_analise'] ?? 'movimento') === 'visao') ? 'Visão computacional' : 'Compatibilidade por movimento' ?></strong>. O vídeo permaneceu no aparelho e não foi enviado ao servidor.</p>
  </section>
</main>

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