argument('import_id'); $limit = (int) $this->option('limit'); $verbose = (bool) $this->option('verbose'); $import = Import::find($importId); if (! $import) { $this->error("Import #{$importId} not found."); return 1; } $this->info("Simulating import #{$importId} - {$import->file_name}"); $this->info("Client: ".($import->client->name ?? 'N/A')); $this->info("Limit: {$limit} rows"); $this->line(''); $result = $service->simulate($import, $limit, $verbose); if (! $result['success']) { $this->error('Simulation failed: '.$result['error']); return 1; } $this->info("✓ Simulated {$result['total_simulated']} rows"); $this->line(''); // Display summaries if (! empty($result['summaries'])) { $this->info('=== Entity Summaries ==='); $summaryRows = []; foreach ($result['summaries'] as $entity => $stats) { $summaryRows[] = [ 'entity' => $entity, 'create' => $stats['create'], 'update' => $stats['update'], 'skip' => $stats['skip'], 'invalid' => $stats['invalid'], 'total' => array_sum($stats), ]; } $this->table( ['Entity', 'Create', 'Update', 'Skip', 'Invalid', 'Total'], $summaryRows ); $this->line(''); } // Display row previews (first 5) if (! empty($result['rows'])) { $this->info('=== Row Previews (first 5) ==='); foreach (array_slice($result['rows'], 0, 5) as $row) { $this->line("Row #{$row['row_number']}:"); if (! empty($row['entities'])) { foreach ($row['entities'] as $entity => $data) { $action = $data['action']; $color = match ($action) { 'create' => 'green', 'update' => 'yellow', 'skip' => 'gray', 'invalid', 'error' => 'red', default => 'white', }; $line = " {$entity}: {$action}"; if (isset($data['reference'])) { $line .= " ({$data['reference']})"; } if (isset($data['existing_id'])) { $line .= " [ID: {$data['existing_id']}]"; } $this->line($line); if ($verbose && ! empty($data['changes'])) { foreach ($data['changes'] as $field => $change) { $this->line(" {$field}: {$change['old']} → {$change['new']}"); } } if (! empty($data['errors'])) { foreach ($data['errors'] as $error) { $this->error(" ✗ {$error}"); } } } } if (! empty($row['warnings'])) { foreach ($row['warnings'] as $warning) { $this->warn(" ⚠ {$warning}"); } } if (! empty($row['errors'])) { foreach ($row['errors'] as $error) { $this->error(" ✗ {$error}"); } } $this->line(''); } } $this->info('Simulation completed successfully.'); return 0; } }