<?php
// ─────────────────────────────────────────────────────────────────────────────
// ADICIONE estes métodos ao controller Patrimonio.php
// ─────────────────────────────────────────────────────────────────────────────

    // ── Arsenal completo de APIs com motor de correlação ──────────
    public function api_arsenal() {
        if (!$this->input->is_ajax_request()) show_404();
        $this->load->helper('patrimonial');

        $doc        = $this->input->post('documento');
        $exp_id     = (int)$this->input->post('expediente_id');
        $apis       = $this->input->post('apis') ?: [];
        $admin_id   = $this->session->userdata('admin')['id'];

        $resultado  = ['alertas' => []];
        $exp        = $exp_id ? $this->Pat_model->get_expediente($exp_id) : null;

        // ── CNPJ (BrasilAPI + OpenCNPJ + CNPJá + ReceitaWS) ───────
        if (in_array('cnpj', $apis) && strlen(preg_replace('/\D/','',$doc)) === 14) {
            $cache = $this->Pat_model->get_cache_api($doc, 'brasilapi_cnpj', 12);
            if (!$cache) {
                $cache = pat_consultar_cnpj($doc);
                $this->Pat_model->salvar_consulta_api([
                    'expediente_id' => $exp_id ?: null,
                    'api'           => 'brasilapi_cnpj',
                    'documento'     => preg_replace('/\D/','',$doc),
                    'resposta_json' => json_encode($cache),
                    'status_http'   => isset($cache['erro']) ? 400 : 200,
                    'created_by'    => $admin_id,
                ]);
                // Salvar investigação
                $this->db->insert('pat_investigacoes', [
                    'expediente_id' => $exp_id ?: 0,
                    'fonte'         => 'brasilapi_cnpj',
                    'documento'     => preg_replace('/\D/','',$doc),
                    'resultado'     => isset($cache['erro']) ? 'nao_encontrado' : 'encontrado',
                    'resumo'        => isset($cache['erro']) ? $cache['erro'] : ($cache['razao_social'] . ' — ' . $cache['situacao']),
                    'dados_json'    => json_encode($cache),
                    'relevancia'    => 'alta',
                    'created_by'    => $admin_id,
                ]);
            }
            $resultado['cnpj'] = $cache;
        }

        // ── DataJud ────────────────────────────────────────────────
        if (in_array('datajud', $apis)) {
            $cache = $this->Pat_model->get_cache_api($doc, 'datajud', 24);
            if (!$cache) {
                $cache = pat_consultar_datajud($doc);
                $this->Pat_model->salvar_consulta_api([
                    'expediente_id' => $exp_id ?: null,
                    'api'           => 'datajud',
                    'documento'     => preg_replace('/\D/','',$doc),
                    'resposta_json' => json_encode($cache),
                    'status_http'   => 200,
                    'created_by'    => $admin_id,
                ]);
                $this->db->insert('pat_investigacoes', [
                    'expediente_id' => $exp_id ?: 0,
                    'fonte'         => 'datajud',
                    'documento'     => preg_replace('/\D/','',$doc),
                    'resultado'     => ($cache['total'] ?? 0) > 0 ? 'encontrado' : 'nao_encontrado',
                    'resumo'        => ($cache['total'] ?? 0) . ' processos — ' . ($cache['como_credor'] ?? 0) . ' como credor',
                    'dados_json'    => json_encode($cache),
                    'relevancia'    => ($cache['como_credor'] ?? 0) > 0 ? 'alta' : 'media',
                    'created_by'    => $admin_id,
                ]);
            }
            $resultado['datajud'] = $cache;
        }

        // ── Portal da Transparência ────────────────────────────────
        if (in_array('transparencia', $apis) && strlen(preg_replace('/\D/','',$doc)) === 14) {
            $cache = $this->Pat_model->get_cache_api($doc, 'transparencia_contratos', 6);
            if (!$cache) {
                $cache = pat_transparencia_contratos($doc);
                $this->Pat_model->salvar_consulta_api([
                    'expediente_id' => $exp_id ?: null,
                    'api'           => 'transparencia_contratos',
                    'documento'     => preg_replace('/\D/','',$doc),
                    'resposta_json' => json_encode($cache),
                    'status_http'   => 200,
                    'created_by'    => $admin_id,
                ]);
            }
            $resultado['transparencia'] = $cache;
        }

        // ── ICIJ Offshore Leaks ─────────────────────────────────────
        if (in_array('offshore', $apis) && $exp) {
            $cache = $this->Pat_model->get_cache_api($exp->devedor_nome, 'icij_offshore', 48);
            if (!$cache) {
                $cache = pat_offshore_leaks($exp->devedor_nome);
                $this->Pat_model->salvar_consulta_api([
                    'expediente_id' => $exp_id,
                    'api'           => 'icij_offshore',
                    'documento'     => preg_replace('/\D/','',$doc),
                    'resposta_json' => json_encode($cache),
                    'status_http'   => 200,
                    'created_by'    => $admin_id,
                ]);
            }
            $resultado['offshore'] = $cache;
        }

        // ── Motor de correlação ────────────────────────────────────
        $dados_correlacao = [
            'cnpj'           => $resultado['cnpj']           ?? null,
            'datajud'        => $resultado['datajud']         ?? null,
            'transparencia'  => $resultado['transparencia']   ?? null,
            'offshore'       => $resultado['offshore']        ?? null,
            'valor_execucao' => $exp ? $exp->valor_execucao   : 0,
        ];
        $alertas = pat_motor_correlacao($dados_correlacao);

        // Salva alertas no banco
        foreach ($alertas as $al) {
            $this->db->insert('pat_alertas_fraude', [
                'expediente_id' => $exp_id ?: 0,
                'tipo'          => $al['tipo'],
                'descricao'     => $al['descricao'],
                'fontes'        => $al['fontes'],
                'tese_juridica' => $al['tese'] ?? $al['tese_juridica'] ?? '',
                'status'        => 'pendente',
            ]);
        }
        $resultado['alertas'] = $alertas;

        header('Content-Type: application/json');
        echo json_encode($resultado);
    }

    // ── Página do arsenal de investigação ─────────────────────────
    public function arsenal($id) {
        $exp = $this->Pat_model->get_expediente($id);
        if (!$exp) show_404();

        $data['exp']           = $exp;
        $data['investigacoes'] = $this->db->where('expediente_id', $id)->order_by('created_at','DESC')->get('pat_investigacoes')->result();
        $data['alertas_fraude']= $this->db->where('expediente_id', $id)->where('status','pendente')->order_by('created_at','DESC')->get('pat_alertas_fraude')->result();
        $data['page_title']    = 'Arsenal — ' . $exp->devedor_nome;
        $data['body']          = 'patrimonio/arsenal';
        $this->load->view('template/main', $data);
    }

    // ── Gerador de petições por modelo ────────────────────────────
    public function peticao_modelo($expediente_id) {
        $exp  = $this->Pat_model->get_expediente($expediente_id);
        if (!$exp) show_404();

        $tipo = $this->input->get('tipo') ?: 'renovacao_basica';

        // Busca modelo
        $this->db->where('tipo', $tipo)->where('ativo', 1);
        $modelo = $this->db->get('pat_modelos_peticao')->row();
        if (!$modelo) {
            $this->session->set_flashdata('error', 'Modelo de petição não encontrado.');
            redirect("admin/patrimonio/view/{$expediente_id}");
        }

        // Dados do advogado
        $admin = $this->session->userdata('admin');
        $adv   = $this->db->where('id', $admin['id'])->get('users')->row();
        $oab_r = $this->db->where('user_id', $admin['id'])->get('pje_advogados')->row();
        $adv->oab = $oab_r ? $oab_r->oab . '/' . $oab_r->uf_oab : 'XXXXX';

        // Alertas salvos para incluir no template de asfixia
        $alertas = $this->db->where('expediente_id', $expediente_id)->where('status !=', 'descartado')->get('pat_alertas_fraude')->result();
        $resumo_alertas = '';
        foreach ($alertas as $al) {
            $resumo_alertas .= "• {$al->descricao} (Fonte: {$al->fontes})\n";
        }

        // DataJud — processos como credor
        $cache_dj = $this->Pat_model->get_cache_api($exp->devedor_doc, 'datajud', 48);
        $processos_credor = '';
        if ($cache_dj && !empty($cache_dj['processos'])) {
            foreach ($cache_dj['processos'] as $p) {
                if ($p['como_autor'] ?? false) {
                    $processos_credor .= "Processo {$p['numero']} ({$p['tribunal']}); ";
                }
            }
        }

        $variaveis = [
            'case_no'            => $exp->case_no,
            'adv_nome'           => $adv->name,
            'adv_uf'             => 'PE',
            'adv_oab'            => $adv->oab,
            'devedor_nome'       => strtoupper($exp->devedor_nome),
            'devedor_doc'        => $exp->devedor_doc,
            'valor_execucao'     => 'R$ ' . number_format($exp->valor_execucao, 2, ',', '.'),
            'data_ultima_dilig'  => '—',
            'cidade'             => 'Recife/PE',
            'data_extenso'       => date('d') . ' de ' . pat_mes_extenso(date('m')) . ' de ' . date('Y'),
            'resumo_investigacao'=> $resumo_alertas ?: 'Investigação patrimonial realizada conforme documentação em anexo.',
            'alertas_fraude'     => $resumo_alertas ?: '—',
            'processos_como_credor' => $processos_credor ?: 'Nenhum localizado',
            'socios_identificados'  => '—',
            'indicio_idpj'          => '—',
            'empresas_grupo'        => '—',
            'descricao_ostentacao'  => '—',
            'percentual_faturamento'=> '10',
            'evidencias_operacao'   => 'conforme documentação acostada',
        ];

        $conteudo = pat_gerar_peticao_template($modelo->conteudo_template, $variaveis);

        // Salva petição
        $pet_id = $this->Pat_model->salvar_peticao([
            'expediente_id' => $expediente_id,
            'sistemas'      => $tipo,
            'conteudo'      => $conteudo,
            'status'        => 'gerada',
            'created_by'    => $admin['id'],
        ]);

        $this->session->set_flashdata('message', 'Petição gerada com sucesso.');
        redirect("admin/patrimonio/peticao/{$pet_id}");
    }

    // ── Gerenciar alertas de fraude ───────────────────────────────
    public function alerta_usar($id) {
        $this->db->where('id', $id)->update('pat_alertas_fraude', ['status' => 'em_uso']);
        $al = $this->db->where('id', $id)->get('pat_alertas_fraude')->row();
        $this->session->set_flashdata('message', 'Alerta marcado para uso na petição.');
        if ($al) redirect("admin/patrimonio/arsenal/{$al->expediente_id}");
        else redirect('admin/patrimonio');
    }

    public function alerta_descartar($id) {
        $al = $this->db->where('id', $id)->get('pat_alertas_fraude')->row();
        $this->db->where('id', $id)->update('pat_alertas_fraude', ['status' => 'descartado']);
        if ($al) redirect("admin/patrimonio/arsenal/{$al->expediente_id}");
        else redirect('admin/patrimonio');
    }

    // ── Relatório de checklist extrajudicial ──────────────────────
    public function relatorio_checklist($expediente_id) {
        $exp      = $this->Pat_model->get_expediente($expediente_id);
        if (!$exp) show_404();
        $checklist= $this->Pat_model->get_checklist($expediente_id);

        $data['exp']       = $exp;
        $data['checklist'] = $checklist;
        $data['page_title']= 'Relatório de Esgotamento';
        $data['body']      = 'patrimonio/relatorio_checklist';
        $this->load->view('template/main', $data);
    }

    // ── Adicionar link para arsenal na view ───────────────────────
    // Na view.php, adicione este link em "Ações Rápidas":
    // <a href="<?= site_url('admin/patrimonio/arsenal/'.$exp->id) ?>" class="btn btn-default btn-block btn-sm">
    //     <i class="fa fa-binoculars"></i> Arsenal de Investigação
    // </a>
