File manager - Edit - /var/www/html/transparencia/database/seeders/BeneficioFiscalImobiliarioSeeder.php
Back
<?php namespace Database\Seeders; use App\Models\BeneficioFiscalImobiliario; use Illuminate\Database\Seeder; use PhpOffice\PhpSpreadsheet\IOFactory; use PhpOffice\PhpSpreadsheet\Shared\Date; use Illuminate\Support\Facades\DB; class BeneficioFiscalImobiliarioSeeder extends Seeder { /** * Run the database seeds. */ public function run(): void { DB::table('beneficios_fiscais_imobiliarios')->truncate(); $path = base_path('temp/imobiliario.xlsx'); if (!file_exists($path)) { $this->command->error("Arquivo não encontrado: {$path}"); return; } $spreadsheet = IOFactory::load($path); $sheet = $spreadsheet->getActiveSheet(); $rows = $sheet->getRowIterator(); $isFirst = true; foreach ($rows as $row) { if ($isFirst) { $isFirst = false; continue; // Pular cabeçalho } $cellIterator = $row->getCellIterator(); $cellIterator->setIterateOnlyExistingCells(false); $data = []; foreach ($cellIterator as $cell) { $data[] = $cell->getValue(); } if (empty(array_filter($data))) { continue; } // Inscrição Municipal | CPF/CNPJ | Nome/Razão Social | Descrição | Descrição Redução | % Redução | Data Início | Data Fim | Status $cpfCnpj = $data[1] ?? null; if ($cpfCnpj && strpos($cpfCnpj, '="') === 0) { $cpfCnpj = substr($cpfCnpj, 2, -1); } if ($cpfCnpj) { $cpfCnpj = preg_replace('/\D/', '', $cpfCnpj); } $nome = $data[2] ?? null; $cpfCnpjAnonimizado = $this->anonimizarDocumento($cpfCnpj); $nomeAnonimizado = $this->anonimizarNome($nome); $dataInicio = null; if (!empty($data[6])) { if (is_numeric($data[6])) { $dataInicio = Date::excelToDateTimeObject($data[6])->format('Y-m-d'); } else { $dataInicio = date('Y-m-d', strtotime(str_replace('/', '-', $data[6]))); } } $dataFim = null; if (!empty($data[7])) { if (is_numeric($data[7])) { $dataFim = Date::excelToDateTimeObject($data[7])->format('Y-m-d'); } else { $dataFim = date('Y-m-d', strtotime(str_replace('/', '-', $data[7]))); } } BeneficioFiscalImobiliario::create([ 'inscricao_municipal' => (string) ($data[0] ?? null), 'cpf_cnpj' => $cpfCnpj, 'cpf_cnpj_anonimizado' => $cpfCnpjAnonimizado, 'nome_razao_social' => $nome, 'nome_anonimizado' => $nomeAnonimizado, 'descricao' => (string) ($data[3] ?? null), 'descricao_reducao' => (string) ($data[4] ?? null), 'percentual_reducao' => (string) ($data[5] ?? null), 'data_inicio' => $dataInicio, 'data_fim' => $dataFim, 'status' => (string) ($data[8] ?? null), ]); } } private function anonimizarDocumento($doc) { if (!$doc) return null; if (strlen($doc) === 11) { $iniciais = substr($doc, 0, 3); $ultimos = substr($doc, 9, 2); return $iniciais . '.***.***-' . $ultimos; } elseif (strlen($doc) === 14) { $iniciais = substr($doc, 0, 2); $parteMeio = substr($doc, 8, 4); // 0001 $ultimos = substr($doc, 12, 2); return "{$iniciais}.***.***/{$parteMeio}-{$ultimos}"; } return $doc; } private function anonimizarNome($nome) { $nome = trim($nome ?? ''); if (!$nome) return null; $partes = preg_split('/\s+/', $nome); $total = count($partes); $anonimizadas = []; foreach ($partes as $i => $parte) { $parte = trim($parte); $len = mb_strlen($parte); if ($len <= 2) { $anonimizadas[] = mb_strtolower($parte); continue; } if ($i === 0) { $mostrar = ceil($len / 2); $anonimizadas[] = mb_substr($parte, 0, $mostrar) . str_repeat('*', max(0, $len - $mostrar)); continue; } if ($i === $total - 1) { $anonimizadas[] = mb_substr($parte, 0, 1) . '.'; continue; } $anonimizadas[] = mb_substr($parte, 0, 1) . '.'; } return implode(' ', $anonimizadas); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.01 |
proxy
|
phpinfo
|
Settings