<?php
/**
 * PJe Comunica - Sincronização via Cloudflare Worker
 * Breno Paiva Advocacia
 * Cron: 0 0,12 * * * php /home/brenopai/public_html/brenopaiva.com.br/sistema/pje_cron.php
 */

define('BASE_PATH', '/home/brenopai/public_html/brenopaiva.com.br/sistema');
define('WORKER_URL', 'https://pje-proxy-final.breno-augusto.workers.dev');
define('WORKER_SECRET', 'bp_advocacia_pje_2026');

// ── Cookies do PJe (renovar quando expirar - fazer login em comunicaapi.pje.jus.br) ──
// Para renovar: login no site → F12 → Application → Cookies → copiar pcp_session e XSRF-TOKEN
$db = mysqli_connect('localhost','brenopai_advteste','qaR2Pd751U','brenopai_advteste');
$r  = mysqli_query($db,"SELECT pcp_session, xsrf_token FROM pje_config LIMIT 1");
$cfg = $r ? mysqli_fetch_assoc($r) : [];
define('PCP_SESSION', $cfg['pcp_session'] ?? '');
define('XSRF_TOKEN',  $cfg['xsrf_token']  ?? '');

function log_msg($msg) {
    $log = BASE_PATH.'/logs/pje_cron.log';
    if(!is_dir(dirname($log))) mkdir(dirname($log),0755,true);
    $line = '['.date('Y-m-d H:i:s').'] '.$msg."\n";
    file_put_contents($log, $line, FILE_APPEND);
    echo $line;
}

function worker_get($action, $params=[]) {
    $url = WORKER_URL.'?action='.$action.'&secret='.WORKER_SECRET
         .'&pcp='.urlencode(PCP_SESSION).'&xsrf='.urlencode(XSRF_TOKEN);
    foreach($params as $k=>$v) $url .= '&'.$k.'='.urlencode($v);
    $ch = curl_init($url);
    curl_setopt_array($ch,[CURLOPT_RETURNTRANSFER=>true,CURLOPT_TIMEOUT=>30,CURLOPT_SSL_VERIFYPEER=>false]);
    $resp = curl_exec($ch);
    $err  = curl_error($ch);
    curl_close($ch);
    if($err) { log_msg("  cURL erro: $err"); return false; }
    return json_decode($resp, true);
}

// ── Verifica cookies ──
if(empty(PCP_SESSION)) {
    log_msg('ERRO: Cookies do PJe não configurados.');
    log_msg('Acesse: '.BASE_PATH.'/index.php/admin/diario_oficial/config_cookies');
    exit(1);
}

log_msg('=== PJe Comunica — Sincronização ===');

// Testa Worker
$ping = worker_get('ping');
if(!$ping || !isset($ping['success'])) { log_msg('ERRO: Worker offline.'); exit(1); }
log_msg('✓ Worker online');

// Busca advogados
$adv_r = mysqli_query($db,"SELECT * FROM pje_advogados WHERE ativo=1");
$advogados = [];
while($a=mysqli_fetch_assoc($adv_r)) $advogados[]=$a;

if(empty($advogados)) { log_msg('Nenhum advogado cadastrado.'); exit(0); }
log_msg(count($advogados).' advogado(s)');

$total = 0;
foreach($advogados as $adv) {
    log_msg("Buscando: {$adv['nome']} OAB {$adv['oab']}/{$adv['uf_oab']}");

    $result = worker_get('comunicacoes', [
        'oab'    => $adv['oab'],
        'uf'     => $adv['uf_oab'],
        'pagina' => 1,
        'tamanho'=> 50,
    ]);

    if(!$result || !$result['success']) {
        log_msg("  ✗ Falhou: ".($result['data']['message']??'erro'));
        continue;
    }

    $lista = $result['data']['items'] ?? [];
    if(empty($lista)) { log_msg("  Sem publicações novas."); continue; }

    $novos = 0;
    foreach($lista as $item) {
        $cid = (string)($item['id'] ?? '');
        if(!$cid) continue;

        $esc = mysqli_real_escape_string($db,$cid);
        $check = mysqli_query($db,"SELECT id FROM pje_publicacoes WHERE comunicacao_id='$esc' AND advogado_id={$adv['id']} LIMIT 1");
        if(mysqli_num_rows($check)>0) continue;

        $dt       = $item['data_disponibilizacao'] ? "'".date('Y-m-d',strtotime($item['data_disponibilizacao']))."'" : "NOW()";
        $titulo   = mysqli_real_escape_string($db, mb_substr($item['tipoComunicacao']??'Publicação PJe',0,200));
        $conteudo = mysqli_real_escape_string($db, strip_tags($item['texto']??''));
        $processo = mysqli_real_escape_string($db, $item['numeroProcesso']??'');
        $tribunal = mysqli_real_escape_string($db, $item['siglaTribunal']??'');
        $orgao    = mysqli_real_escape_string($db, $item['nomeOrgao']??'');

        $sql = "INSERT INTO pje_publicacoes (advogado_id,comunicacao_id,titulo,conteudo,numero_processo,tribunal,data_publicacao,lida,created_at)
                VALUES ({$adv['id']},'$esc','$titulo','$conteudo','$processo','$tribunal - $orgao',$dt,0,NOW())";
        if(mysqli_query($db,$sql)) $novos++;
    }

    log_msg("  ✓ $novos nova(s) publicação(ões) de {$result['data']['count']} total");
    $total += $novos;
}

log_msg("=== Concluído: $total nova(s) publicação(ões) ===");
mysqli_close($db);
