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

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    echo json_encode(['error' => 'Método não permitido.']);
    exit;
}

$input = json_decode(file_get_contents('php://input'), true);
$cpf = isset($input['cpf']) ? preg_replace('/\D/', '', $input['cpf']) : '';

if (strlen($cpf) !== 11) {
    echo json_encode(['error' => 'CPF inválido.']);
    exit;
}

// Função para tentar a API searchapi.dnnl.live (primária)
function trySearchAPI($cpf) {
    $url = "https://searchapi.dnnl.live/consulta?token_api=8355&cpf={$cpf}";
    $options = [
        'http' => [
            'method' => 'GET',
            'header' => [
                'Accept: application/json'
            ],
            'timeout' => 10
        ]
    ];
    $context = stream_context_create($options);
    $response = @file_get_contents($url, false, $context);
    
    if ($response === false) {
        return null;
    }
    
    $data = json_decode($response, true);
    
    // Verificar se retornou dados válidos
    if ($data && (isset($data['nome']) || isset($data['NOME']))) {
        // Normalizar formato da resposta
        return [
            'CPF' => $cpf,
            'NOME' => $data['nome'] ?? $data['NOME'] ?? '',
            'MAE' => $data['nome_mae'] ?? $data['MAE'] ?? '',
            'NASCIMENTO' => $data['nascimento'] ?? $data['data_nascimento'] ?? $data['NASCIMENTO'] ?? ''
        ];
    }
    
    return null;
}

// Função para tentar a API Amnesia (fallback)
function tryAmnesiaAPI($cpf) {
    $token = "c5eebbc9-0469-4324-85f6-0c994b42d18a";
    $url = "https://api.amnesiatecnologia.rocks/?token={$token}&cpf={$cpf}";
    $options = [
        'http' => [
            'method' => 'GET',
            'header' => [
                'Accept: application/json'
            ],
            'timeout' => 10
        ]
    ];
    $context = stream_context_create($options);
    $response = @file_get_contents($url, false, $context);
    
    if ($response === false) {
        return null;
    }
    
    $data = json_decode($response, true);
    
    // A API Amnesia retorna: { DADOS: { cpf, nome, nome_mae, data_nascimento, sexo } }
    $dados = $data['DADOS'] ?? $data['dados'] ?? null;
    
    if ($dados && (isset($dados['nome']) || isset($dados['NOME']))) {
        // Normalizar formato da resposta
        return [
            'CPF' => $cpf,
            'NOME' => $dados['nome'] ?? $dados['NOME'] ?? '',
            'MAE' => $dados['nome_mae'] ?? $dados['MAE'] ?? '',
            'NASCIMENTO' => $dados['data_nascimento'] ?? $dados['NASCIMENTO'] ?? $dados['NASC'] ?? ''
        ];
    }
    
    return null;
}

// Tentar API primária primeiro
$data = trySearchAPI($cpf);

// Se falhar, tentar API de fallback
if ($data === null) {
    $data = tryAmnesiaAPI($cpf);
}

// Se ambas as APIs falharem
if ($data === null) {
    echo json_encode(['error' => 'CPF não encontrado ou APIs indisponíveis.']);
    exit;
}

$dados_originais = [
    'cpf' => $cpf,
    'nome' => $data['NOME'] ?? '',
    'nome_mae' => $data['MAE'] ?? '',
    'data_nascimento' => $data['NASCIMENTO'] ?? ''
];

$pessoa = $data;

$quiz = [
    'nomes' => gerarOpcoes($pessoa['NOME'] ?? ''),
    'maes' => gerarOpcoes($pessoa['MAE'] ?? ''),
    'datas' => gerarOpcoes($pessoa['NASCIMENTO'] ?? '', 'data')
];

$response = [
    'dados_originais' => $dados_originais,
    'quiz' => $quiz
];
echo json_encode($response);
exit;

function gerarOpcoes($correto, $tipo = 'texto') {
    $opcoes = [$correto];
    if ($tipo === 'data') {
        for ($i = 0; $i < 2; $i++) {
            $ano = rand(1950, 2010);
            $mes = rand(1, 12);
            $dia = rand(1, 28);
            $fake = sprintf('%04d-%02d-%02d', $ano, $mes, $dia);
            if (!in_array($fake, $opcoes)) {
                $opcoes[] = $fake;
            }
        }
    } else {
        for ($i = 0; $i < 2; $i++) {
            $fake = substr(str_shuffle('ABCDEFGHIJKLMNOPQRSTUVWXYZ'), 0, rand(8, 13)) . ' ' . substr(str_shuffle('ABCDEFGHIJKLMNOPQRSTUVWXYZ'), 0, rand(6, 12));
            if (!in_array($fake, $opcoes)) {
                $opcoes[] = $fake;
            }
        }
    }
    shuffle($opcoes);
    return $opcoes;
}
