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
89 lines
2.8 KiB
PHP
89 lines
2.8 KiB
PHP
<?php
|
|
|
|
namespace Modules\Webstatement\Console;
|
|
|
|
use Exception;
|
|
use Illuminate\Console\Command;
|
|
use Illuminate\Support\Facades\Log;
|
|
use Modules\Webstatement\Http\Controllers\WebstatementController;
|
|
|
|
/**
|
|
* 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()
|
|
{
|
|
$queueName = $this->option('queue_name');
|
|
|
|
// Log start of process
|
|
Log::info('Starting daily statement export process', [
|
|
'queue_name' => $queueName ?? 'default',
|
|
'command' => 'webstatement:export-statements'
|
|
]);
|
|
|
|
$this->info('Starting daily statement export process...');
|
|
$this->info('Queue Name: ' . ($queueName ?? 'default'));
|
|
|
|
try {
|
|
$controller = app(WebstatementController::class);
|
|
|
|
// Pass queue name to controller if needed
|
|
// Jika controller membutuhkan queue name, bisa ditambahkan sebagai parameter
|
|
$response = $controller->index($queueName);
|
|
|
|
$responseData = json_decode($response->getContent(), true);
|
|
$message = $responseData['message'] ?? 'Export process completed';
|
|
|
|
$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;
|
|
}
|
|
}
|
|
}
|