option('stats')) { return $this->showStats(); } info('Preparing for DATA POOL TRANSFORMATION'); warning('This will create/update companies and transactions from the data pool.'); if (! $this->option('no-interaction') && ! confirm('Do you want to continue?', true)) { info('Transformation cancelled.'); return self::SUCCESS; } $batchSize = (int) $this->option('batch-size'); // Show current stats before transformation $this->showStatsBefore(); // Create the job $job = new TransformDataPoolToProduction(batchSize: $batchSize); // Execute the job if ($this->option('queue')) { info('Dispatching job to queue...'); dispatch($job); info('Job dispatched successfully!'); } else { info('Running transformation synchronously...'); spin( fn () => $job->handle(app(\App\Services\KycRiskCalculator::class)), 'Transforming data...' ); info('Transformation completed successfully!'); } // Show stats after transformation $this->showStatsAfter(); return self::SUCCESS; } /** * Show statistics only */ private function showStats(): int { $job = new TransformDataPoolToProduction; $stats = $job->getStats(); info('Data Pool Transformation Statistics'); table( ['Metric', 'Value'], [ ['Data Pool Transactions', number_format($stats['data_pool_transactions'])], ['Companies in Database', number_format($stats['companies_count'])], ['Transactions in Database', number_format($stats['transactions_count'])], ['Migrated Transactions', number_format($stats['migrated_transactions'])], ] ); return self::SUCCESS; } /** * Show stats before transformation */ private function showStatsBefore(): void { $job = new TransformDataPoolToProduction; $stats = $job->getStats(); $this->newLine(); info('Stats BEFORE transformation:'); table( ['Metric', 'Value'], [ ['Data Pool Transactions', number_format($stats['data_pool_transactions'])], ['Companies in Database', number_format($stats['companies_count'])], ['Migrated Transactions', number_format($stats['migrated_transactions'])], ] ); $this->newLine(); } /** * Show stats after transformation */ private function showStatsAfter(): void { $job = new TransformDataPoolToProduction; $stats = $job->getStats(); $this->newLine(); info('Stats AFTER transformation:'); table( ['Metric', 'Value'], [ ['Data Pool Transactions', number_format($stats['data_pool_transactions'])], ['Companies in Database', number_format($stats['companies_count'])], ['Migrated Transactions', number_format($stats['migrated_transactions'])], ] ); $this->newLine(); } }