<?php
/** AURA FARMING — Retorno de pagamento dos Diamantes — Parte 05 */
require_once __DIR__ . '/../config/config.php';
require_once __DIR__ . '/../config/database.php';
require_once __DIR__ . '/../includes/functions.php';
require_once __DIR__ . '/../includes/diamond_mercadopago_functions.php';

requireLogin();
recarregarSessaoUsuario($pdo, (int)$_SESSION['usuario_id']);
$u = usuarioAtual();
$userId = (int)($u['id'] ?? 0);

$retorno = (string)($_GET['retorno'] ?? 'pending');
if (!in_array($retorno, ['success', 'pending', 'failure'], true)) $retorno = 'pending';

$messageTitle = 'Pagamento em análise';
$messageText = 'Assim que o Mercado Pago confirmar o pagamento, seus Diamantes serão liberados automaticamente.';
$statusClass = 'warning';
$statusIcon = '⏳';
$order = null;
$processResult = null;
$error = '';

try {
    $paymentId = preg_replace('/[^0-9]/', '', (string)($_GET['payment_id'] ?? $_GET['collection_id'] ?? ''));
    $externalReference = trim((string)($_GET['external_reference'] ?? ''));

    if ($paymentId !== '' && afDiamondMpEnabled($pdo)) {
        $processResult = afDiamondMpProcessPayment($pdo, $paymentId, 'return');
        if (!empty($processResult['order_id'])) {
            $order = afDiamondMpGetOrderById($pdo, (int)$processResult['order_id'], false);
        }
    }

    if (!$order && $externalReference !== '') {
        $order = afDiamondMpGetOrderByExternalReference($pdo, $externalReference, false);
    }

    if ($order && (int)$order['user_id'] !== $userId) {
        $order = null;
        throw new RuntimeException('Este retorno não pertence à sua conta.');
    }

    $currentStatus = (string)($order['status'] ?? ($processResult['status'] ?? 'pending'));
    if ($currentStatus === 'approved') {
        $messageTitle = 'Diamantes liberados!';
        $messageText = 'Pagamento aprovado. Os Diamantes já foram creditados na sua carteira.';
        $statusClass = 'success';
        $statusIcon = '✅';
    } elseif (in_array($currentStatus, ['rejected', 'cancelled', 'failed'], true) || $retorno === 'failure') {
        $messageTitle = 'Pagamento não aprovado';
        $messageText = 'O Mercado Pago não aprovou este pagamento. Nenhum Diamante foi liberado.';
        $statusClass = 'danger';
        $statusIcon = '✕';
    } elseif ($currentStatus === 'refunded') {
        $messageTitle = 'Pagamento reembolsado';
        $messageText = 'Este pagamento foi marcado como reembolsado. Nenhum novo Diamante será liberado.';
        $statusClass = 'info';
        $statusIcon = '↩';
    }
} catch (Throwable $e) {
    $error = $e->getMessage();
    $messageTitle = 'Não foi possível confirmar agora';
    $messageText = 'O pedido continuará sendo verificado pelo webhook do Mercado Pago. Tente atualizar o histórico em alguns instantes.';
    $statusClass = 'warning';
    $statusIcon = '⚠️';
}

$balance = 0;
try { $balance = afDiamondsGetBalance($pdo, $userId); } catch (Throwable $e) {}

$pageTitle = 'Pagamento de Diamantes';
$activePage = 'perfil';
$pageStyles = [SITE_URL . '/assets/css/diamonds-shop.css?v=5.0.0'];
require_once __DIR__ . '/../includes/header.php';
?>
<header class="app-header">
  <a href="<?= SITE_URL ?>/pages/comprar-diamantes.php" class="btn-back">← Diamantes</a>
  <div class="logo-inline"><span class="logo-main">AURA</span><span class="logo-sub">PAGAMENTO</span></div>
  <div class="header-actions"><div class="diamonds-mini-balance">💎 <?= (int)$balance ?></div></div>
</header>

<main class="page-content diamonds-shop-page">
  <section class="card card--glow diamond-payment-result">
    <div class="diamond-payment-icon diamond-status--<?= esc($statusClass) ?>"><?= esc($statusIcon) ?></div>
    <span class="diamond-kicker">Mercado Pago</span>
    <h1><?= esc($messageTitle) ?></h1>
    <p><?= esc($messageText) ?></p>

    <?php if ($error): ?>
      <div class="diamond-error-card"><strong>Detalhe técnico</strong><p><?= esc($error) ?></p></div>
    <?php endif; ?>

    <?php if ($order): $stInfo = afDiamondShopStatusLabel((string)$order['status']); ?>
      <div class="diamond-last-order">
        <div>
          <h2><?= esc((string)$order['package_name']) ?></h2>
          <p><?= (int)$order['total_diamonds'] ?> Diamantes • <?= afDiamondShopMoney($order['amount'], (string)$order['currency']) ?></p>
          <small>Referência: <?= esc((string)$order['external_reference']) ?></small>
        </div>
        <span class="diamond-status diamond-status--<?= esc($stInfo[1]) ?>"><?= esc($stInfo[2]) ?> <?= esc($stInfo[0]) ?></span>
      </div>
    <?php endif; ?>

    <div class="diamond-result-actions">
      <a class="btn btn-primary" href="<?= SITE_URL ?>/pages/comprar-diamantes.php">Ver carteira</a>
      <a class="btn btn-secondary" href="<?= SITE_URL ?>/pages/perfil.php">Voltar ao perfil</a>
    </div>
  </section>
</main>

<style>
.diamond-payment-result{text-align:center;padding:26px 18px}.diamond-payment-result h1{margin:8px 0 8px;font-size:26px}.diamond-payment-result p{color:var(--text-muted);font-size:13px;line-height:1.45}.diamond-payment-icon{width:68px;height:68px;border-radius:24px;margin:0 auto 12px;display:grid;place-items:center;font-size:30px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.06)}.diamond-result-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:18px}.diamond-payment-result .diamond-last-order{margin:18px 0;text-align:left}
</style>

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