File manager - Edit - /var/www/html/portalHomolog/app/Console/Commands/ClearProjetosProgramas.php
Back
<?php namespace App\Console\Commands; use Illuminate\Console\Command; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\File; class ClearProjetosProgramas extends Command { protected $signature = 'projetos-programas:clear {--force : Não pergunta confirmação} {--files : Também remove os arquivos físicos dos anexos}'; protected $description = 'Limpa todos os dados do módulo Projetos e Programas (projetos, programas, objetivos, anexos e histórico).'; public function handle(): int { $tables = [ 'project_program_attachments', 'project_program_history', 'project_program_ods', 'project_program_orgaos', 'projects_programs', 'project_programs', 'project_objectives', ]; $counts = []; foreach ($tables as $table) { if (!DB::getSchemaBuilder()->hasTable($table)) { $counts[$table] = null; continue; } $counts[$table] = (int) DB::table($table)->count(); } $this->line('Registros atuais (por tabela):'); foreach ($counts as $table => $count) { $this->line('- ' . $table . ': ' . ($count === null ? 'NÃO EXISTE' : $count)); } if (!$this->option('force')) { $warn = 'Tem certeza que deseja apagar TODOS os dados do módulo Projetos e Programas? Esta ação não pode ser desfeita!'; if ($this->option('files')) { $warn .= ' (inclui remoção de arquivos físicos de anexos)'; } if (!$this->confirm($warn)) { $this->info('Operação cancelada.'); return self::SUCCESS; } } $removeFiles = (bool) $this->option('files'); $deletedFiles = 0; $missingFiles = 0; DB::beginTransaction(); try { DB::statement('SET FOREIGN_KEY_CHECKS=0'); if ($removeFiles && DB::getSchemaBuilder()->hasTable('project_program_attachments')) { $paths = DB::table('project_program_attachments')->pluck('url')->filter()->values(); foreach ($paths as $path) { $cleanPath = str_replace('\\', '/', (string) $path); $fullPath = public_path('pmar/assets/files/' . ltrim($cleanPath, '/')); if (File::exists($fullPath)) { File::delete($fullPath); $deletedFiles++; } else { $missingFiles++; } } } foreach ($tables as $table) { if (!DB::getSchemaBuilder()->hasTable($table)) { continue; } DB::table($table)->truncate(); } DB::statement('SET FOREIGN_KEY_CHECKS=1'); DB::commit(); } catch (\Throwable $e) { try { DB::statement('SET FOREIGN_KEY_CHECKS=1'); } catch (\Throwable $ignored) { // noop } DB::rollBack(); $this->error('Falha ao limpar dados: ' . $e->getMessage()); return self::FAILURE; } $this->info('Dados do módulo Projetos e Programas removidos com sucesso.'); if ($removeFiles) { $this->line("Arquivos removidos: {$deletedFiles}"); $this->line("Arquivos não encontrados: {$missingFiles}"); } return self::SUCCESS; } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.03 |
proxy
|
phpinfo
|
Settings