<?php
declare(strict_types=1);
require_once dirname(__DIR__) . '/_app_guard.php';
app_guard_validate();
header('Content-Type: application/json; charset=utf-8');
function out(array $p): void { echo json_encode($p, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES); exit; }
function norm_mac(string $mac): string { $c=strtoupper(substr(preg_replace('/[^A-Fa-f0-9]/','',trim($mac)),0,12)); return strlen($c)===12?implode(':',str_split($c,2)):''; }
try {
    $db=new PDO('sqlite:' . dirname(__DIR__) . '/db.db');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    $db->exec("CREATE TABLE IF NOT EXISTS vencimento_config (
        id INTEGER PRIMARY KEY CHECK (id = 1), ativo INTEGER NOT NULL DEFAULT 1, dias_antes INTEGER NOT NULL DEFAULT 7,
        titulo TEXT DEFAULT 'Seu acesso está perto de vencer', mensagem TEXT DEFAULT '', mostrar_qrcode INTEGER NOT NULL DEFAULT 1,
        updated_at INTEGER NOT NULL DEFAULT (strftime('%s','now')))");
    $db->exec("INSERT OR IGNORE INTO vencimento_config (id, ativo, dias_antes, titulo, mensagem, mostrar_qrcode) VALUES (1,1,7,'Seu acesso está perto de vencer','Renove para continuar assistindo.',1)");
    $mac=norm_mac((string)($_POST['mac'] ?? $_GET['mac'] ?? ''));
    if($mac==='') out(['status'=>'error','ativo'=>false,'show_modal'=>false]);
    $st=$db->prepare('SELECT * FROM usuarios WHERE mac=? LIMIT 1'); $st->execute([$mac]); $u=$st->fetch() ?: [];
    $v=(int)($u['vencimento'] ?? 0);
    $cfg=$db->query('SELECT * FROM vencimento_config WHERE id=1')->fetch() ?: [];
    if(empty($cfg['ativo']) || $v<=0) out(['status'=>'ok','ativo'=>!empty($cfg['ativo']),'show_modal'=>false,'expired'=>false]);
    $now=time();
    $diff=$v-$now;
    $dias=(int)ceil($diff/86400);
    $expired=$diff<=0;
    $diasAntes=max(0,min(7,(int)($cfg['dias_antes'] ?? 7)));
    $show=$expired || ($dias>=0 && $dias <= $diasAntes);
    $scheme=(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS']!=='off')?'https':'http';
    $host=$_SERVER['HTTP_HOST'] ?? '';
    $base=$host ? ($scheme . '://' . $host . rtrim(dirname($_SERVER['SCRIPT_NAME'] ?? '/api'), '/\\')) : '';
    out([
        'status'=>'ok','ativo'=>true,'show_modal'=>$show,'expired'=>$expired,'dias_restantes'=>max(0,$dias),'vencimento'=>$v,
        'titulo'=>(string)($cfg['titulo'] ?: 'Seu acesso vence em breve'),'mensagem'=>(string)($cfg['mensagem'] ?: 'Renove para continuar assistindo.'),
        'mostrar_qrcode'=>((int)($cfg['mostrar_qrcode'] ?? 1)===1),'qrcode_url'=>($base ? $base . '/img/qrcode.png' : 'api/img/qrcode.png'),'auto_close_seconds'=>0
    ]);
} catch(Throwable $e){ out(['status'=>'ok','ativo'=>false,'show_modal'=>false,'expired'=>false]); }
