refactor(webstatement): perbaiki pembentukan logika, struktur kode, dan validasi parameter pada SendStatementEmailCommand

- **Perbaikan Struktur Kode:**
  - Melakukan perapihan kode dengan konsistensi indentasi dan penyusunan namespace.
  - Memisahkan logika kompleks dan mengorganisasi ulang kode untuk meningkatkan keterbacaan.
  - Menambahkan namespace `InvalidArgumentException`.

- **Peningkatan Validasi:**
  - Menambahkan validasi komprehensif untuk parameter `period`, `type`, `--account`, dan `--branch`.
  - Validasi lebih spesifik untuk memastikan account atau branch terkait sesuai kebutuhan.
  - Memberikan pesan error informatif ketika validasi gagal.

- **Peningkatan Metode Utility:**
  - Menambahkan metode `validateParameters` untuk menangani berbagai skenario validasi input.
  - Menambahkan metode `determineRequestTypeAndTarget` untuk memisahkan logika penentuan tipe request.
  - Memperbarui metode `createLogEntry` untuk menyesuaikan atribut log dengan lebih baik berdasarkan request type.

- **Perbaikan Feedback Pengguna:**
  - Menampilkan informasi yang lebih rinci terkait status pengiriman email, seperti parameter validasi, log ID, dan batch ID.
  - Memberikan panduan untuk monitoring queue melalui command.

- **Penanganan Error dan Logging:**
  - Menambahkan logging detail untuk error yang terjadi dalam proses pengiriman email.
  - Memastikan rollback jika terjadi kegagalan selama proses dispatch job.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
This commit is contained in:
Daeng Deni Mardaeni
2025-06-12 09:15:38 +07:00
parent 9199a4d748
commit f6df453ddc

View File

@@ -1,21 +1,22 @@
<?php <?php
namespace Modules\Webstatement\Console; namespace Modules\Webstatement\Console;
use Exception; use Exception;
use Illuminate\Console\Command; use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Modules\Webstatement\Jobs\SendStatementEmailJob; use Modules\Basicdata\Models\Branch;
use Modules\Webstatement\Models\Account; use Modules\Webstatement\Jobs\SendStatementEmailJob;
use Modules\Webstatement\Models\PrintStatementLog; use Modules\Webstatement\Models\Account;
use Modules\Basicdata\Models\Branch; use Modules\Webstatement\Models\PrintStatementLog;
use InvalidArgumentException;
/** /**
* Command untuk mengirim email statement PDF ke nasabah * Command untuk mengirim email statement PDF ke nasabah
* Mendukung pengiriman per rekening, per cabang, atau seluruh cabang * Mendukung pengiriman per rekening, per cabang, atau seluruh cabang
*/ */
class SendStatementEmailCommand extends Command class SendStatementEmailCommand extends Command
{ {
protected $signature = 'webstatement:send-email protected $signature = 'webstatement:send-email
{period : Format periode YYYYMM (contoh: 202401)} {period : Format periode YYYYMM (contoh: 202401)}
{--type=single : Tipe pengiriman: single, branch, all} {--type=single : Tipe pengiriman: single, branch, all}
@@ -182,7 +183,7 @@ class SendStatementEmailCommand extends Command
case 'all': case 'all':
return ['all_branches', null]; return ['all_branches', null];
default: default:
throw new \InvalidArgumentException("Invalid type: {$type}"); throw new InvalidArgumentException("Invalid type: {$type}");
} }
} }
@@ -245,4 +246,4 @@ class SendStatementEmailCommand extends Command
$this->line(" Batch ID: {$log->batch_id}"); $this->line(" Batch ID: {$log->batch_id}");
$this->line(" Queue: {$queueName}"); $this->line(" Queue: {$queueName}");
} }
} }