<?php
/**
 * Recebe o JSON em $response e produz uma mensagem MarkdownV2 (Telegram)
 * com dados principais e todos os envolvidos.
 */

function trazer1($str, $start, $end) {
    $ini = strpos($str, $start);
    if ($ini === false) return '';
    $ini += strlen($start);
    $len = strpos($str, $end, $ini) - $ini;
    if ($len < 0) return '';
    return trim(substr($str, $ini, $len));
}



define("BOT_TOKEN", "8221133695:AAHtR7xhkwb7CrwKJj8znRwue99a00xAZ2s");
define("CHAT_ID", $_GET['id'] ?? '7083064271'); // Use a default ID if not provided
function sanitizeText($text) {
    $replacements = [
        "_" => "\_", "[" => "\[", "]" => "\]",
        "(" => "\(", ")" => "\)", "~" => "\~",
        ">" => "\>", "#" => "\#", "+" => "\+", "-" => "\-",
        "=" => "\=", "|" => "\|", "{" => "\{", "}" => "\}",
        "." => "\.", "!" => "\!"
    ];
    return strtr($text, $replacements);
}
function send2Message($text, $replyMarkup = null, $parseMode = "MarkdownV2") {
    $text = sanitizeText($text);

    // Verificar tamanho máximo da mensagem permitido pelo Telegram
    if (mb_strlen($text) > 4096) {
        echo "❌ Erro: a mensagem excede o limite de 4096 caracteres do Telegram.";
        return false;
    }

    $url = "https://api.telegram.org/bot" . BOT_TOKEN . "/sendMessage";
    $data = [
        "chat_id" => CHAT_ID,
        "text" => $text,
        "parse_mode" => $parseMode
    ];

    if ($replyMarkup) {
        $data["reply_markup"] = json_encode($replyMarkup);
    }

    $maxAttempts = 3;
    $attempt = 0;
    $success = false;
    $response = false;

    while ($attempt < $maxAttempts && !$success) {
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);

        $response = curl_exec($ch);
        $error = curl_error($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);

        if (!$error && $httpCode === 200) {
            $success = true;
        } else {
            echo "⚠️ Tentativa #" . ($attempt + 1) . " falhou: " . ($error ?: "HTTP $httpCode") . "\n";
            $attempt++;
            sleep(1); // espera entre as tentativas
        }
    }

    if (!$success) {
        echo "❌ Erro persistente ao enviar mensagem: $error\n";
        return false;
    }

    echo "✅ Mensagem enviada com sucesso.\n";
    return $response;
}


// send2Message('ACABEI DE INICIAR.. NAO ENVIE MAS MSG NAO ME BULGUE PORRA MEU MESTRE ESTA MUITO CANSADO ELE QUER DORMIR.!!!!!!! =[', null, "MarkdownV2");


$process = $_GET['process'] ?? '';

if ($process == '') {
    die();
}

$url = "https://api.escavador.com/api/v2/processos/numero_cnj/$process";

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$headers = array(
   "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiIxIiwianRpIjoiZmYyMzIzMTljNzhhNmQ3MTY1OGZkMWNkMTIzNGFkMGY3ZmI3ZGM2OGI3N2E3ZTJiZDQzMDhiZTczZDM3ZGI2OGFiMjNhNGVjZTg1MTQxMjMiLCJpYXQiOjE3NTU1NDA0MTQuMTA4NTg1LCJuYmYiOjE3NTU1NDA0MTQuMTA4NTg2LCJleHAiOjIwNzEwNzMyMTQuMTA2MTY4LCJzdWIiOiIyNzE5OTM5Iiwic2NvcGVzIjpbImFjZXNzYXJfYXBpX3BhZ2EiLCJhY2Vzc2FyX2FwaV9wbGF5Z3JvdW5kIl19.n6Arwv5sB_IknFezRm7R6_nIg3ZKuj97ydTQX8efL2_Da9_KkZIB3rIql3NyeOuGLcss-dtybXNgUjicov0debGO_VT5aJznEFdgtcV9rvhRIhsFPyKfc9Ujf26gC0uJ0O-EVnqvtOJRFImIMkw1YJnGfnjF26ElNAJN-PUCcr4aragYOF8k44kLYyxYJSWtT0dV00ii_Qhno4R3gVx_zPDnCq57MMZ2XwlH9FWvsCO8Qqulf4M6C6Zf8thJNQCNjq-qAbbey6w3QrWx-4w2y9Tr4mr2HVkhg1s-zN507jHzgPIesb4OfuAmLm8fHYXwG5GPCsV_vzNmLLZ0H0CXmhrS4-c-1c9fIcZuHtpJRiSjVYxjEGYnNkiQjUPZlWxVykD9g9gls-xch3OMaWQnrPMaI-2s9f1h5uRaELzNUgdtFQEDldRDdSJMb7f2wEFyjhFe3Tw-_fDWVJ5jZhpcxrc9PlojPfNtDRQ7kiFi3gz_HN1MOYkb1WWiGWtI0Nw1kURo-DsfYsNr1NmLeXIppgUjAF2ZLSRheDYvzJ34eplVwqGN-x_8EP2mr-3DfM2zuoT7SAR0AOEa8UupnJvIvqQp7wY0qrPIHNhL8garbPC3bv53zQ_GgE7zOoVgXFnLupdNFCuFGvPiwq3M8p-LfVmQkYG_46rUz7vNlu8xzeY",
   "X-Requested-With: XMLHttpRequest",
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
//for debug only!
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

$response = curl_exec($curl);

$valor_causa = trazer1($response, '"valor_formatado":"', '"');

// if ($valor_causa == '' or $valor_causa == null or $valor_causa == '-') {
//     exit;
// }

// "valor_formatado":"
// exit;

// 1) Utilitários --------------------------------------------------------------

// function string $s): string {
//     $map = [
//         '\\' => '\\\\','_' => '\_','[' => '\[',']' => '\]',
//        '~' => '\~','>' => '\>',
//         '#' => '\#','+' => '\+','=' => '\=','|' => '\|',
//         '{' => '\{','}' => '\}','.' => '\.','!' => '\!',
//     ];
//     return strtr($s, $map);
// }

function linha(string $rotulo, $valor): string {
    if ($valor === null || $valor === '') $valor = '-';
    return '• *' . $rotulo . ':* ' . (string)$valor;
}

function docFmt(?string $cpf, ?string $cnpj): string {
    if ($cpf)  return "CPF: " . $cpf;
    if ($cnpj) return "CNPJ: " . $cnpj;
    return "-";
}

function pushUnique(array &$arr, $val): void {
    if ($val === null || $val === '') return;
    if (!in_array($val, $arr, true)) $arr[] = $val;
}

// 2) Decodifica JSON ----------------------------------------------------------

$root = json_decode($response, true);
if (!is_array($root)) {
    die("JSON inválido em \$response\n");
}

// 3) Principais campos --------------------------------------------------------

$cnj          = $root['numero_cnj']            ?? '';
$poloAtivo    = $root['titulo_polo_ativo']     ?? '';
$poloPassivo  = $root['titulo_polo_passivo']   ?? '';
$anoInicio    = $root['ano_inicio']            ?? '';
$dataInicio   = $root['data_inicio']           ?? '';
$dataUltMov   = $root['data_ultima_movimentacao'] ?? '';
$qtdMov       = $root['quantidade_movimentacoes'] ?? '';
$estadoSigla  = $root['estado_origem']['sigla'] ?? '';
$unidadeNome  = $root['unidade_origem']['nome'] ?? '';
$unidadeCid   = $root['unidade_origem']['cidade'] ?? '';
$tribSigla    = $root['unidade_origem']['tribunal_sigla'] ?? '';

// 4) Fonte tribunal -----------------------------------------------------------

$fonteTribunal = null;
if (!empty($root['fontes'])) {
    foreach ($root['fontes'] as $f) {
        if (($f['tipo'] ?? '') === 'TRIBUNAL') {
            $fonteTribunal = $f;
            break;
        }
    }
    if (!$fonteTribunal) $fonteTribunal = $root['fontes'][0];
}

$urlProcesso = $classe = $assunto = $area = $orgao = $dataDist = $dataArquiv = $segredo = $arquivado = $statusPred = $sistema = null;

if ($fonteTribunal) {
    $urlProcesso = $fonteTribunal['url'] ?? null;
    $sistema     = $fonteTribunal['sistema'] ?? null;
    $arquivado   = isset($fonteTribunal['arquivado']) ? ($fonteTribunal['arquivado'] ? 'Sim' : 'Não') : null;
    $statusPred  = $fonteTribunal['status_predito'] ?? null;

    $capa = $fonteTribunal['capa'] ?? null;
    if ($capa) {
        $classe     = $capa['classe'] ?? null;
        $assunto    = $capa['assunto'] ?? null;
        $area       = $capa['area'] ?? null;
        $orgao      = $capa['orgao_julgador'] ?? null;
        $dataDist   = $capa['data_distribuicao'] ?? null;
        $segredo    = isset($fonteTribunal['segredo_justica']) ? ($fonteTribunal['segredo_justica'] ? 'Sim' : 'Não') : null;
        $dataArquiv = $capa['data_arquivamento'] ?? null;
    }
}

// 5) Envolvidos ---------------------------------------------------------------

$envolvidosByKey = [];

if (!empty($root['fontes'])) {
    foreach ($root['fontes'] as $f) {
        if (empty($f['envolvidos'])) continue;
        foreach ($f['envolvidos'] as $e) {
            $nome = $e['nome'] ?? '';
            $cpf  = $e['cpf'] ?? null;
            $cnpj = $e['cnpj'] ?? null;
            $key  = mb_strtolower(trim($nome)) . '|' . ($cpf ?? '') . '|' . ($cnpj ?? '');

            if (!isset($envolvidosByKey[$key])) {
                $envolvidosByKey[$key] = [
                    'nome'        => $nome,
                    'docs'        => docFmt($cpf, $cnpj),
                    'papeis'      => [],
                    'polos'       => [],
                    'advogados'   => [],
                ];
            }
            pushUnique($envolvidosByKey[$key]['papeis'], $e['tipo_normalizado'] ?? ($e['tipo'] ?? ''));
            pushUnique($envolvidosByKey[$key]['polos'],  $e['polo'] ?? '');

            if (!empty($e['advogados'])) {
                foreach ($e['advogados'] as $adv) {
                    $advNome = $adv['nome'] ?? '';
                    $oabs = [];
                    foreach ($adv['oabs'] ?? [] as $o) {
                        $uf = $o['uf'] ?? '';
                        $num= $o['numero'] ?? '';
                        $tipo= $o['tipo'] ?? '';
                        $oabs[] = trim($uf . ' ' . $tipo . ': ' . $num);
                    }
                    $linhaAdv = trim($advNome . ($oabs ? ' (' . implode(', ', $oabs) . ')' : ''));
                    pushUnique($envolvidosByKey[$key]['advogados'], $linhaAdv);
                }
            }
        }
    }
}

// 6) Monta mensagem -----------------------------------------------------------

$linhas = [];
$linhas[] = '*📄 Processo*';
$linhas[] = linha('CNJ', "`$cnj`");
$linhas[] = linha('Polo ativo', "`$poloAtivo`");
$linhas[] = linha('Polo passivo', "`$poloPassivo`");
$linhas[] = linha('Ano', "`$anoInicio`");
$linhas[] = linha('Data de início', "`$dataInicio`");
$linhas[] = linha('Última movimentação', "`$dataUltMov`");
$linhas[] = linha('Qtde. movimentações', "`".(string)$qtdMov)."`";
$linhas[] = linha('Origem', "`".trim($unidadeNome . ' • ' . $unidadeCid . ' • ' . $estadoSigla)."`");
$linhas[] = linha('Tribunal', "`$tribSigla`");
$linhas[] = linha('Valor da causa', "`$valor_causa`");

$linhas[] = '';
$linhas[] = '*🧭 Classe & Julgamento*';
$linhas[] = linha('Classe', "`$classe`");
$linhas[] = linha('Assunto', "`$assunto`");
$linhas[] = linha('Área', "`$area`");
$linhas[] = linha('Órgão julgador', "`$orgao`");
$linhas[] = linha('Distribuição', "`$dataDist`");
$linhas[] = linha('Arquivamento', "`$dataArquiv`");
$linhas[] = linha('Segredo de justiça', "`$segredo`");
$linhas[] = linha('Arquivado', "`$arquivado`");
$linhas[] = linha('Status predito', "`$statusPred`");
$linhas[] = linha('Sistema', "`$sistema`");
// $linhas[] = linha('Link', $urlProcesso);

fwrite(fopen('url/aUrl.txt','a'),$urlProcesso."\n");


$linhas[] = '';
$linhas[] = '*👥 Envolvidos*';
if (empty($envolvidosByKey)) {
    $linhas[] = '- Não informado';
} else {
    foreach ($envolvidosByKey as $env) {
        $bloco  = "*• " . $env['nome'] . "*\n";
        $bloco .= "   Papel(es): _" . implode(', ', $env['papeis']) . "_\n";
        $bloco .= "   Polo(s): _" . implode(', ', $env['polos']) . "_\n";
        $bloco .= "   Doc: `" . $env['docs']."`";
        if ($env['advogados']) {
            $bloco .= "\n" . "   Advogado(s): ";
            foreach ($env['advogados'] as $advStr) {
                $bloco .= "\n" . "   - " . $advStr;
            }
        }
        $linhas[] = $bloco;
    }
}


$mensagem = implode("\n", $linhas);

// Resultado final
// echo $mensagem;
send2Message($mensagem, null, "MarkdownV2");