File size: 2,038 Bytes
1426bed
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import React from 'react'
import DataTable from './DataTable'

function formatarProcessosAdministrativos(item) {
  const processosArray = Array.isArray(item?.processos_administrativos)
    ? item.processos_administrativos.map((valor) => String(valor || '').trim()).filter(Boolean)
    : []
  if (processosArray.length) {
    return processosArray.join(' | ')
  }

  const processoResumo = String(
    item?.processos_administrativos_resumo || item?.processo_administrativo || ''
  ).trim()
  if (processoResumo) {
    return processoResumo
  }

  return 'Nenhum registrado'
}

function montarTabelaTrabalhos(trabalhos) {
  const lista = Array.isArray(trabalhos) ? trabalhos : []
  const rows = lista.map((item) => {
    const imoveis = Array.isArray(item?.imoveis) ? item.imoveis : []
    const enderecosTexto = imoveis
      .map((imovel) => String(imovel?.endereco || '').trim())
      .filter(Boolean)
      .join(' | ') || '-'
    return {
      'Trabalho Técnico': String(item?.trabalho_nome || item?.trabalho_id || '-').trim() || '-',
      Tipo: String(item?.tipo_label || '-').trim() || '-',
      'Total de Imóveis': item?.total_imoveis ?? 0,
      Endereços: enderecosTexto,
      'Processos SEI': formatarProcessosAdministrativos(item),
    }
  })

  return {
    columns: ['Trabalho Técnico', 'Tipo', 'Total de Imóveis', 'Endereços', 'Processos SEI'],
    rows,
  }
}

export default function ModeloTrabalhosTecnicosPanel({ trabalhos }) {
  const lista = Array.isArray(trabalhos) ? trabalhos : []
  if (!lista.length) {
    return <div className="empty-box">Nenhum trabalho técnico vinculado foi encontrado na base atual. Essa base ainda pode não estar completa.</div>
  }

  return (
    <>
      <div className="section1-empty-hint modelo-trabalhos-tecnicos-disclaimer">
        {lista.length} trabalho(s) técnico(s) utilizando este modelo foram encontrados na base atual. Essa base ainda pode não estar completa.
      </div>
      <DataTable table={montarTabelaTrabalhos(lista)} maxHeight={620} />
    </>
  )
}