- **Perbaikan Struktural:**
- Melakukan perapihan kode dengan konsistensi indentasi dan penyusunan namespace seluruh file.
- Menambahkan dan mengimpor namespace baru seperti `Throwable`, `InvalidArgumentException`, dan `Exception`.
- **Peningkatan Readability:**
- Menambahkan format dan penyesuaian pada komentar, khususnya penjelasan method dan atribut.
- Menggunakan alignment untuk parameter pada log dan constructor untuk meningkatkan keterbacaan.
- **Pengelolaan Job:**
- Menambahkan logging detail saat memulai, menjalankan, hingga menyelesaikan job.
- Menambahkan penanganan proses tiap akun dalam batch, termasuk logging sukses/gagal dan pembaruan status log.
- **Penanganan Error:**
- Menambahkan rollback database jika terjadi exception pada saat proses pengiriman email.
- Melakukan logging error dengan detail tambahan termasuk pesan dan trace.
- **Penambahan Utility:**
- Menambahkan metode reusable seperti `updateLogStatus` untuk update status log dengan parameter dinamis.
- Menambahkan validasi seperti pengecekan eksistensi file PDF dan email terkait sebelum pengiriman.
- **Peningkatan Proses Batch:**
- Menambahkan pengelolaan batch berbasis properti `batchId` untuk tracking.
- Memperbaiki handle retries dan status akhir batch secara komprehensif (completed, failed).
- Menambahkan logging agregat untuk jumlah akun yang diproses dan tingkat keberhasilan.
- **Peningkatan Validasi Email:**
- Menambahkan skenario untuk pengambilan email dari `stmt_email` atau fallback ke data customer jika tersedia.
- Menambahkan peringatan saat akun tertentu tidak memiliki email yang valid.
- **Pemeliharaan File PDF:**
- Mengecek keberadaan file PDF terkait sebelum proses pengiriman.
- Menampilkan log error jika file tidak ditemukan.
- **Peningkatan Retry dan Logging Gagal:**
- Implementasi metode `failed()` untuk logging pada job yang gagal permanen.
- Menangani detail error dan rollback pada level tiap akun dan batch.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- **Perbaikan dan Penambahan Komando:**
- Memberikan komando baru `webstatement:check-progress` untuk memantau progres pengiriman email statement.
- Menampilkan informasi seperti `Log ID`, `Batch ID`, `Request Type`, status, hingga persentase progress.
- Menangani secara detail jumlah akun yang diproses, sukses, gagal, dan kalkulasi tingkat keberhasilan.
- Menyediakan penanganan error jika log tidak ditemukan atau terjadi kegagalan lainnya.
- Memperluas komando `webstatement:send-email`:
- Mendukung pengiriman berdasarkan `single account`, `branch`, atau `all branches`.
- Menambahkan validasi parameter `type` (`single`, `branch`, `all`) dan input spesifik seperti `--account` atau `--branch` untuk mode tertentu.
- Melakukan pencatatan log awal dengan metadata lengkap seperti `request_type`, `batch_id`, dan status.
- **Peningkatan Logika Proses Backend:**
- Menambahkan fungsi `createLogEntry` untuk mencatat log pengiriman email statement secara dinamis berdasarkan tipe request.
- Menyediakan reusable method seperti `validateParameters` dan `determineRequestTypeAndTarget` untuk mempermudah pengelolaan parameter pengiriman.
- Memberikan feedback dan panduan kepada pengguna mengenai ID log dan komando monitoring (`webstatement:check-progress`).
- **Penambahan Controller dan Fitur UI:**
- Menambahkan controller baru `EmailStatementLogController`:
- Mendukung pengelolaan log seperti list, detail, dan retry untuk pengiriman ulang email statement.
- Menyediakan fitur pencarian, filter, dan halaman data log yang responsif menggunakan datatable.
- Menambahkan kemampuan resend email untuk log dengan status `completed` atau `failed`.
- Mengimplementasikan UI untuk log pengiriman:
- Halaman daftar monitoring dengan filter berdasarkan branch, account number, request type, status, dan tanggal.
- Menampilkan kemajuan, tingkat keberhasilan, serta tombol aksi seperti detail dan pengiriman ulang.
- **Peningkatan Model dan Validasi:**
- Menyesuaikan model `PrintStatementLog` untuk mendukung lebih banyak atribut seperti `processed_accounts`, `success_count`, `failed_count`, `request_type`, serta metode utilitas seperti `getProgressPercentage()` dan `getSuccessRate()`.
- Memvalidasi parameter input lebih mendalam agar kesalahan dapat diminimalisasi di awal proses.
- **Peningkatan pada View dan Feedback Pengguna:**
- Menambah daftar command berguna untuk user di interface log:
- Status antrian dengan `php artisan queue:work`.
- Monitoring menggunakan komando custom yang baru ditambahkan.
- **Perbaikan Logging dan Error Handling:**
- Menambahkan logging komprehensif pada semua proses, termasuk batch pengiriman ulang.
- Memastikan rollback pada database jika terjadi error melalui transaksi pada critical path.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Menambahkan Command `SendStatementEmailCommand` untuk mengirim email statement PDF:
- Mendukung parameter input seperti periode laporan (`YYYY-MM`), nomor rekening, ID batch, queue, dan delay waktu.
- Menjalankan validasi parameter input, mencatat log eksekusi, dan mendispatch job pengiriman email.
- Menyediakan feedback status eksekusi serta informasi job kepada user.
- Menambahkan Job `SendStatementEmailJob` untuk pengiriman statement dalam latar belakang:
- Memfilter account yang memiliki email terkait, baik dari `stmt_email` atau email dari data customer.
- Melakukan pengiriman email dengan attachment file PDF statement.
- Mencatat log sukses atau kegagalan pengiriman untuk setiap account.
- Memperbarui Model dan Template Email:
- Mengubah template email untuk mendukung pengisian nama rekening secara dinamis berdasarkan customer account.
- Menambahkan pengisian dinamis untuk tahun copyright di footer.
- Memperbarui Provider `WebstatementServiceProvider`:
- Mendaftarkan Command baru `SendStatementEmailCommand` ke dalam aplikasi.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>