File manager - Edit - /var/www/html/transparencia/database/seeders/ImportEmendasPixSeeder.php
Back
<?php namespace Database\Seeders; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; use Maatwebsite\Excel\Facades\Excel; class ImportEmendasPixSeeder extends Seeder { /** * Run the database seeds. */ public function run(): void { $sheetPath = base_path('temp/Emendas_PIX.xlsx'); $rows = Excel::toArray([], $sheetPath)[0] ?? []; if (count($rows) < 3) { $this->command?->warn('Nenhum dado válido encontrado na planilha de emendas PIX.'); return; } DB::table('emendas_pix')->truncate(); $payload = []; foreach ($rows as $index => $row) { if ($index < 2) { continue; } $numeroCodigo = $this->cleanCell($row[0] ?? null); $valorRepassadoRaw = $this->cleanCell($row[1] ?? null); $anoRaw = $this->cleanCell($row[2] ?? null); $beneficiario = $this->cleanCell($row[3] ?? null); $objeto = $this->cleanCell($row[4] ?? null); $numeroEmpenho = $this->cleanCell($row[5] ?? null); $empenhadoRaw = $this->cleanCell($row[6] ?? null); $liquidadoRaw = $this->cleanCell($row[7] ?? null); $pagoRaw = $this->cleanCell($row[8] ?? null); $dadosPlanoAcao = $this->cleanCell($row[9] ?? null); if ($this->isFullRowEmpty([ $numeroCodigo, $valorRepassadoRaw, $anoRaw, $beneficiario, $objeto, $numeroEmpenho, $empenhadoRaw, $liquidadoRaw, $pagoRaw, $dadosPlanoAcao, ])) { continue; } $payload[] = [ 'numero_codigo' => $numeroCodigo ? mb_substr($numeroCodigo, 0, 60) : '', 'valor_repassado' => $this->parseMoney($valorRepassadoRaw), 'valor_repassado_raw' => $valorRepassadoRaw ? mb_substr($valorRepassadoRaw, 0, 60) : '', 'ano' => is_numeric($anoRaw) ? (int) $anoRaw : 0, 'ano_raw' => $anoRaw ? mb_substr($anoRaw, 0, 30) : '', 'beneficiario' => $beneficiario ? mb_substr($beneficiario, 0, 255) : '', 'objeto' => $objeto ?? '', 'numero_empenho' => $numeroEmpenho ? mb_substr($numeroEmpenho, 0, 100) : '', 'empenhado' => $this->parseMoney($empenhadoRaw), 'empenhado_raw' => $empenhadoRaw ? mb_substr($empenhadoRaw, 0, 60) : '', 'liquidado' => $this->parseMoney($liquidadoRaw), 'liquidado_raw' => $liquidadoRaw ? mb_substr($liquidadoRaw, 0, 60) : '', 'pago' => $this->parseMoney($pagoRaw), 'pago_raw' => $pagoRaw ? mb_substr($pagoRaw, 0, 60) : '', 'dados_plano_acao' => $dadosPlanoAcao ?? '', 'created_at' => now(), 'updated_at' => now(), ]; } if (empty($payload)) { $this->command?->warn('Nenhum registro elegível para importação foi montado.'); return; } DB::table('emendas_pix')->insert($payload); $this->command?->info(count($payload) . ' registros processados a partir da planilha de emendas PIX.'); } private function cleanCell(mixed $value): ?string { if ($value === null) { return null; } $value = trim((string) $value); if ($value === '') { return null; } return $value; } private function isFullRowEmpty(array $values): bool { foreach ($values as $value) { if ($value !== null && trim((string) $value) !== '') { return false; } } return true; } private function parseMoney(mixed $value): float { if ($value === null || trim((string) $value) === '') { return 0.0; } if (is_numeric($value)) { return (float) $value; } $normalized = preg_replace('/[^\d,.-]/', '', (string) $value); $normalized = str_replace('.', '', $normalized ?? ''); $normalized = str_replace(',', '.', $normalized); return is_numeric($normalized) ? (float) $normalized : 0.0; } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.01 |
proxy
|
phpinfo
|
Settings