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
This commit is contained in:
Daeng Deni Mardaeni
2025-07-30 08:16:53 +07:00
parent 33b1255dfb
commit 5f9a82ec20

View File

@@ -1,51 +1,88 @@
<?php
namespace Modules\Webstatement\Console;
namespace Modules\Webstatement\Console;
use Exception;
use Illuminate\Console\Command;
use Modules\Webstatement\Http\Controllers\WebstatementController;
use Exception;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;
use Modules\Webstatement\Http\Controllers\WebstatementController;
class ExportDailyStatements extends Command
/**
* Console command untuk export daily statements
* Command ini dapat dijalankan secara manual atau dijadwalkan
*/
class ExportDailyStatements extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'webstatement:export-statements
{--queue_name=default : Queue name untuk menjalankan export jobs (default: default)}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Export daily statements for all configured client accounts dengan queue name yang dapat dikustomisasi';
/**
* Execute the console command.
* Menjalankan proses export daily statements
*
* @return int
*/
public function handle()
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'webstatement:export-statements';
$queueName = $this->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;
}
}
}