- **Implementasi Custom Email Sender:**
- Menambahkan metode `send()` dengan EsmtpTransport untuk mendukung pengiriman email menggunakan fallback konfigurasi yang lebih fleksibel.
- Penanganan port `STARTTLS` dengan koneksi manual serta pengaturan SSL.
- **Refaktor Method Build:**
- Memperbaiki tampilan struktur email:
- Menyertakan template email, attachment, dan penempatan properti email secara lebih dinamis.
- Mendukung file PDF atau ZIP sebagai lampiran.
- **Implementasi Konversi Laravel to Symfony Mailer:**
- Metode `toSymfonyEmail()` diimplementasikan untuk mengonversi email Laravel ke Symfony Mailer.
- Penanganan dari email `from`, `to`, `subject`, hingga body HTML secara langsung.
- Penambahan mekanisme attachment dengan validasi eksistensi file.
- **Peningkatan Logging:**
- Menambahkan logging detail untuk setiap tahap proses pengiriman, termasuk metode fallback yang berhasil atau gagal.
- Log peringatan dan error ditambahkan saat terjadi kegagalan di setiap metode yang dicoba.
- **Penanganan Error:**
- Menangani pengecualian dan pencatatan error terakhir dari koneksi email manual serta fallback ke Laravel mailer jika cara custom gagal.
- **Konsistensi Format:**
- Melakukan perapihan atribut class serta alignment pada kode untuk meningkatkan keterbacaan dan konsistensi.
- **Optimalisasi Email Statement:**
- Memastikan format periode (bulanan/range) tampil dinamis pada subjek email.
- Menambahkan validasi serta pengelolaan untuk lampiran file sebelum pengiriman.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- **Migrasi ke PHPMailer:**
- Mengganti penggunaan `Illuminate\Support\Facades\Mail` ke PHPMailer untuk pengiriman email.
- Menambahkan service baru `PHPMailerService` dengan dukungan autentikasi NTLM/GSSAPI.
- Mengintegrasikan logika pengiriman email ke dalam `StatementEmail` menggunakan PHPMailer.
- Memindahkan logika attachment dan body email ke helper method pada kelas `StatementEmail`.
- **Perbaikan Logging dan Penanganan Error:**
- Menambah logging lebih mendetail pada proses pengiriman email, termasuk informasi seperti penerima, subjek, dan status pengiriman.
- Menambahkan fallback untuk pembuatan konten HTML jika terjadi kegagalan rendering pada template Blade.
- Menambahkan pengecekan dan logging untuk kegagalan pengiriman email dengan mekanisme exception handling.
- **Peningkatan Template Email:**
- Memperbaiki elemen ulasan pada template email untuk mendukung tampilan yang lebih bersih menggunakan `list-style-type: none`.
- Memodifikasi markup footer untuk memberikan batas terformat lebih baik.
- **Optimasi Proses Backend:**
- Menambahkan delay antar pengiriman email untuk menghindari rate limiting pada koneksi NTLM/GSSAPI.
- Menyediakan format nama attachment dinamis berdasarkan rekening dan periode laporan.
- Memanfaatkan konfigurasi enkripsi dinamis, dengan fallback untuk pengujian/development.
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>
- Menambahkan kolom `email` dan `email_sent_at` pada tabel `print_statement_logs`.
- Menambah endpoint baru untuk mengirim statement via email (`/send-email`).
- Mengupdate form request untuk validasi email pada `PrintStatementRequest`.
- Menambah logika pengiriman email dengan menggunakan `Mailable` (`StatementEmail`).
- Memvalidasi ketersediaan file statement sebelum dikirimkan via email.
- Menambahkan tombol baru pada tampilan frontend untuk opsi `Send to Email`.
- Mengupdate file zip untuk pengiriman email ketika ada statement dalam rentang waktu.
- Refaktor dan perbaikan minor pada kode terkait check statement availability.
- Menyesuaikan title menu pada `module.json` dari "Periode Statement" ke "Create Periode" dan "Print Statement" ke "Statement".
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>