From 8d4accffafe4dd373ab4f0a7c1abfa7254bfaf8a Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Sun, 8 Jun 2025 23:41:10 +0700 Subject: [PATCH] feat(webstatement): tambahkan command generate laporan transaksi ATM - Menambahkan command baru `webstatement:generate-atm-report`: - Membuat laporan transaksi ATM berdasarkan periode yang ditentukan melalui opsi `--period` dengan format `Ymd` (contoh: 20250512). - Melakukan validasi format periode untuk memastikan input sesuai. - Menampilkan pesan error jika format periode tidak valid atau tidak disertakan. - Mengintegrasikan dengan job `GenerateAtmTransactionReportJob`: - Mendukung antrian jalur background untuk pengelolaan laporan besar. - Menyediakan informasi log tambahan, seperti periode laporan dan status pembuatan laporan di background. - Menangani error saat proses: - Menampilkan pesan error detail jika terjadi exception saat dispatch job. Signed-off-by: Daeng Deni Mardaeni --- app/Console/GenerateAtmTransactionReport.php | 59 ++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 app/Console/GenerateAtmTransactionReport.php diff --git a/app/Console/GenerateAtmTransactionReport.php b/app/Console/GenerateAtmTransactionReport.php new file mode 100644 index 0000000..5aa41dc --- /dev/null +++ b/app/Console/GenerateAtmTransactionReport.php @@ -0,0 +1,59 @@ +info('Starting ATM Transaction report generation...'); + $period = $this->option('period'); + + if (!$period) { + $this->error('Period parameter is required. Format: Ymd (example: 20250512)'); + return Command::FAILURE; + } + + // Validate period format + if (!preg_match('/^\d{8}$/', $period)) { + $this->error('Invalid period format. Use Ymd format (example: 20250512)'); + return Command::FAILURE; + } + + try { + // Dispatch the job + GenerateAtmTransactionReportJob::dispatch($period); + + $this->info("ATM Transaction report generation job queued for period: {$period}"); + $this->info('The report will be generated in the background.'); + + return Command::SUCCESS; + } catch (Exception $e) { + $this->error('Error queuing ATM Transaction report job: ' . $e->getMessage()); + return Command::FAILURE; + } + } +}