<?php
header('Content-Type: application/json');

function salvarLog($dados){
    $arquivo = __DIR__ . "/payment_log.txt";
    $dataHora = date("Y-m-d H:i:s");
    $conteudo = "[$dataHora] " . json_encode($dados, JSON_UNESCAPED_UNICODE) . PHP_EOL;
    file_put_contents($arquivo, $conteudo, FILE_APPEND | LOCK_EX);
}

$data = json_decode(file_get_contents('php://input'), true);
$paymentId = $data['paymentId'] ?? null;
$plano = $data['plano'] ?? null;

if(!$paymentId || !$plano){
    $resposta = [
        "status" => "erro",
        "mensagem" => "paymentId ou plano ausente",
        "ip" => $_SERVER['REMOTE_ADDR'] ?? null
    ];
    salvarLog($resposta);
    echo json_encode($resposta);
    exit;
}

// Define dias de renovação por plano
$diasPlanos = [
    'plano1' => 30,
    'plano2' => 180,
    'plano3' => 365
];

$dias = $diasPlanos[$plano] ?? 0;
if($dias === 0){
    $resposta = [
        "status" => "erro",
        "mensagem" => "Plano inválido",
        "paymentId" => $paymentId,
        "plano" => $plano,
        "ip" => $_SERVER['REMOTE_ADDR'] ?? null
    ];
    salvarLog($resposta);
    echo json_encode($resposta);
    exit;
}

try {
    $db = new SQLite3(__DIR__ . '/.ansdb.db');
    $ip = $_SERVER['REMOTE_ADDR'] ?? 'desconhecido';

    $stmt = $db->prepare("SELECT expire_date FROM ibo WHERE ip_endereco = ?");
    $stmt->bindValue(1, $ip, SQLITE3_TEXT);
    $res = $stmt->execute();
    $row = $res->fetchArray(SQLITE3_ASSOC);

    if($row){
        $currentExpire = strtotime($row['expire_date']);
        $newExpire = date('Y-m-d H:i:s', $currentExpire + ($dias*24*60*60));

        $update = $db->prepare("UPDATE ibo SET expire_date = ? WHERE ip_endereco = ?");
        $update->bindValue(1, $newExpire, SQLITE3_TEXT);
        $update->bindValue(2, $ip, SQLITE3_TEXT);
        $update->execute();

        $resposta = [
            "status" => "sucesso",
            "mensagem" => "Expiração atualizada com sucesso",
            "paymentId" => $paymentId,
            "plano" => $plano,
            "ip" => $ip,
            "expire_date_antiga" => $row['expire_date'],
            "expire_date_nova" => $newExpire,
            "dias_renovacao" => $dias
        ];
    } else {
        $resposta = [
            "status" => "erro",
            "mensagem" => "IP não encontrado no banco",
            "paymentId" => $paymentId,
            "plano" => $plano,
            "ip" => $ip
        ];
    }
} catch (Exception $e) {
    $resposta = [
        "status" => "erro",
        "mensagem" => "Falha no banco: " . $e->getMessage(),
        "paymentId" => $paymentId,
        "plano" => $plano,
        "ip" => $_SERVER['REMOTE_ADDR'] ?? null
    ];
}

salvarLog($resposta);
echo json_encode($resposta, JSON_UNESCAPED_UNICODE);
