From 5f9a82ec206dd7c33db65e559c502728890bc6a8 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 30 Jul 2025 08:16:53 +0700 Subject: [PATCH] feat(console): tambah parameter queue_name pada ExportDailyStatements command Menambahkan parameter queue_name untuk memberikan fleksibilitas dalam pemilihan queue saat menjalankan export daily statements: - Menambahkan parameter queue_name dengan default value 'default' pada signature command - Memperbarui description command untuk mencantumkan informasi queue name - Menambahkan function-level comment pada class dan method handle sesuai standar - Menambahkan import Log facade untuk logging yang konsisten - Menambahkan logging di awal proses dengan informasi queue name dan command - Memperbarui controller call untuk mengirim queue_name sebagai parameter - Menambahkan output queue name pada info message untuk feedback user - Menambahkan informasi queue pada job summary untuk transparansi - Menambahkan logging sukses dengan detail job count dan queue name - Memperbarui error logging untuk mencakup queue information - Mempertahankan backward compatibility dengan parameter opsional - Meningkatkan fleksibilitas dalam manajemen queue untuk proses export - Memungkinkan penggunaan queue khusus untuk prioritas atau isolasi proses - Meningkatkan observability dengan logging yang lebih komprehensif --- app/Console/ExportDailyStatements.php | 113 +++++++++++++++++--------- 1 file changed, 75 insertions(+), 38 deletions(-) diff --git a/app/Console/ExportDailyStatements.php b/app/Console/ExportDailyStatements.php index d21348b..8954f24 100644 --- a/app/Console/ExportDailyStatements.php +++ b/app/Console/ExportDailyStatements.php @@ -1,51 +1,88 @@ option('queue_name'); - /** - * The console command description. - * - * @var string - */ - protected $description = 'Export daily statements for all configured client accounts'; + // Log start of process + Log::info('Starting daily statement export process', [ + 'queue_name' => $queueName ?? 'default', + 'command' => 'webstatement:export-statements' + ]); - /** - * Execute the console command. - * - * @return int - */ - public function handle() - { - $this->info('Starting daily statement export process...'); + $this->info('Starting daily statement export process...'); + $this->info('Queue Name: ' . ($queueName ?? 'default')); - try { - $controller = app(WebstatementController::class); - $response = $controller->index(); + try { + $controller = app(WebstatementController::class); - $responseData = json_decode($response->getContent(), true); - $this->info($responseData['message']); + // Pass queue name to controller if needed + // Jika controller membutuhkan queue name, bisa ditambahkan sebagai parameter + $response = $controller->index($queueName); - // Display summary of jobs queued - $jobCount = count($responseData['jobs'] ?? []); - $this->info("Successfully queued {$jobCount} statement export jobs"); + $responseData = json_decode($response->getContent(), true); + $message = $responseData['message'] ?? 'Export process completed'; - return Command::SUCCESS; - } catch (Exception $e) { - $this->error('Error exporting statements: ' . $e->getMessage()); - return Command::FAILURE; - } + $this->info($message); + + // Display summary of jobs queued + $jobCount = count($responseData['jobs'] ?? []); + $this->info("Successfully queued {$jobCount} statement export jobs"); + $this->info("Jobs dispatched to queue: {$queueName}"); + + // Log successful completion + Log::info('Daily statement export process completed successfully', [ + 'message' => $message, + 'job_count' => $jobCount, + 'queue_name' => $queueName ?? 'default' + ]); + + return Command::SUCCESS; + } catch (Exception $e) { + $errorMessage = 'Error exporting statements: ' . $e->getMessage(); + $this->error($errorMessage); + + // Log error with queue information + Log::error($errorMessage, [ + 'exception' => $e->getTraceAsString(), + 'queue_name' => $queueName ?? 'default' + ]); + + return Command::FAILURE; } } +}