<?php
/**
 * Inicia a assinatura: cria o preapproval no Mercado Pago e devolve o
 * init_point para redirecionar. Em MODO DEMO (sem token) ativa na hora.
 */

require_once __DIR__ . '/db.php';
require_once __DIR__ . '/mp.php';

iniciar_sessao();
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    responder(['erro' => 'Método não permitido'], 405);
}
if (empty($_SESSION['usuario_id'])) {
    responder(['erro' => 'Entre na sua conta para assinar.'], 401);
}

$u = usuario_por_id((int) $_SESSION['usuario_id']);
if (!$u) {
    responder(['erro' => 'Sessão inválida.'], 401);
}
if (assinatura_ativa($u)) {
    responder(['ok' => true, 'ja_ativa' => true]);
}

if (modo_demo()) {
    $st = db()->prepare(
        "UPDATE usuarios SET sub_status = 'authorized', mp_preapproval_id = 'demo',
         sub_verificada_em = datetime('now') WHERE id = ?"
    );
    $st->execute([$u['id']]);
    responder(['ok' => true, 'demo' => true]);
}

$res = mp_criar_assinatura($u);
if (isset($res['erro'])) {
    responder(['erro' => $res['erro']], 502);
}

$st = db()->prepare(
    'UPDATE usuarios SET mp_preapproval_id = ?, sub_status = "pending" WHERE id = ?'
);
$st->execute([$res['preapproval_id'], $u['id']]);

responder(['ok' => true, 'init_point' => $res['init_point']]);
