feat(webstatement): tambahkan fitur konfirmasi email dan optimasi proses download statement
- **Penambahan Fitur Konfirmasi Email:**
- Menambahkan event listener untuk form submit:
- Menampilkan SweetAlert jika field email telah diisi.
- Mengonfirmasi pengiriman statement ke alamat email yang diisi pengguna.
- Submit form hanya setelah user mengonfirmasi.
- **Optimalisasi Proses Download Statement:**
- Menangani logic download statement dalam rentang periode (period range):
- Mencatat log keberadaan file untuk setiap periode.
- Membuat file ZIP yang berisi semua file statement yang tersedia dalam rentang tersebut.
- Mengelola file sementara untuk proses kompresi dengan pembersihan otomatis.
- Menambahkan log error dan warning untuk file yang hilang dalam rentang periode.
- Mendukung mekanisme download file tunggal untuk periode tertentu.
- Menyesuaikan log dengan detail proses, seperti:
- Informasi periode yang tersedia dan tidak.
- Notifikasi penyelesaian atau kegagalan proses download ZIP.
- Menambahkan logging trace pada exception untuk debugging lebih rinci.
- **Perubahan Validasi Logic:**
- Validasi baru pada `PrintStatementRequest`:
- Menentukan `is_period_range` hanya jika `period_to` berbeda dengan `period_from`.
- **Perbaikan dan Penyesuaian Pengiriman Email:**
- Menambahkan pengecekan field email sebelum menjalankan fungsi kirim email di `PrintStatementController`.
- Mengintegrasikan fungsi `sendEmail` jika terdapat email pada statement.
- **Penambahan Dokumentasi Kode:**
- Menambahkan komentar inline di beberapa bagian:
- Logika konfirmasi email.
- Proses pembuatan ZIP dan penanganan download.
- Menjelaskan tiap langkah operasional untuk mempermudah pemahaman dan debugging.
Perubahan ini mengintegrasikan fitur konfirmasi email yang lebih interaktif, meningkatkan proses download statement berjenjang, serta memperbaiki validasi dan logging pada tiap langkah proses.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
This commit is contained in:
@@ -57,7 +57,7 @@
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="display:none">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="email">Email</label>
|
||||
<input type="email" class="input form-control @error('email') is-invalid @enderror"
|
||||
id="email" name="email" value="{{ old('email', $statement->email ?? '') }}"
|
||||
@@ -177,6 +177,10 @@
|
||||
|
||||
@push('scripts')
|
||||
<script type="text/javascript">
|
||||
/**
|
||||
* Fungsi untuk menghapus data statement
|
||||
* @param {number} data - ID statement yang akan dihapus
|
||||
*/
|
||||
function deleteData(data) {
|
||||
Swal.fire({
|
||||
title: 'Are you sure?',
|
||||
@@ -207,6 +211,56 @@
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Konfirmasi email sebelum submit form
|
||||
* Menampilkan SweetAlert jika email diisi untuk konfirmasi pengiriman
|
||||
*/
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const form = document.querySelector('form');
|
||||
const emailInput = document.getElementById('email');
|
||||
|
||||
// Log: Inisialisasi event listener untuk konfirmasi email
|
||||
console.log('Email confirmation listener initialized');
|
||||
|
||||
form.addEventListener('submit', function(e) {
|
||||
const emailValue = emailInput.value.trim();
|
||||
|
||||
// Jika email diisi, tampilkan konfirmasi
|
||||
if (emailValue) {
|
||||
e.preventDefault(); // Hentikan submit form sementara
|
||||
|
||||
// Log: Email terdeteksi, menampilkan konfirmasi
|
||||
console.log('Email detected:', emailValue);
|
||||
|
||||
Swal.fire({
|
||||
title: 'Konfirmasi Pengiriman Email',
|
||||
text: `Apakah Anda yakin ingin mengirimkan statement ke email: ${emailValue}?`,
|
||||
icon: 'question',
|
||||
showCancelButton: true,
|
||||
confirmButtonColor: '#3085d6',
|
||||
cancelButtonColor: '#d33',
|
||||
confirmButtonText: 'Ya, Kirim Email',
|
||||
cancelButtonText: 'Batal',
|
||||
reverseButtons: true
|
||||
}).then((result) => {
|
||||
if (result.isConfirmed) {
|
||||
// Log: User konfirmasi pengiriman email
|
||||
console.log('User confirmed email sending');
|
||||
|
||||
// Submit form setelah konfirmasi
|
||||
form.submit();
|
||||
} else {
|
||||
// Log: User membatalkan pengiriman email
|
||||
console.log('User cancelled email sending');
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// Log: Tidak ada email, submit form normal
|
||||
console.log('No email provided, submitting form normally');
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<script type="module">
|
||||
|
||||
Reference in New Issue
Block a user