- **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>
128 lines
4.9 KiB
PHP
128 lines
4.9 KiB
PHP
<?php
|
|
|
|
use Diglactic\Breadcrumbs\Breadcrumbs;
|
|
use Diglactic\Breadcrumbs\Generator as BreadcrumbTrail;
|
|
|
|
// Home
|
|
Breadcrumbs::for('home', function (BreadcrumbTrail $trail) {
|
|
$trail->push('Home', route('dashboard'));
|
|
});
|
|
|
|
// Home > Customers
|
|
Breadcrumbs::for('customer.index', function (BreadcrumbTrail $trail) {
|
|
$trail->parent('home');
|
|
$trail->push('Customers', route('customer.index'));
|
|
});
|
|
|
|
// Home > Customers > Create
|
|
Breadcrumbs::for('customer.create', function (BreadcrumbTrail $trail) {
|
|
$trail->parent('customer.index');
|
|
$trail->push('Create Customer', route('customer.create'));
|
|
});
|
|
|
|
// Home > Customers > [Customer Name]
|
|
Breadcrumbs::for('customer.show', function (BreadcrumbTrail $trail, $customer) {
|
|
$trail->parent('customer.index');
|
|
$trail->push($customer->name, route('customer.show', $customer));
|
|
});
|
|
|
|
// Home > Customers > [Customer Name] > Edit
|
|
Breadcrumbs::for('customer.edit', function (BreadcrumbTrail $trail, $customer) {
|
|
$trail->parent('customer.show', $customer);
|
|
$trail->push('Edit', route('customer.edit', $customer));
|
|
});
|
|
|
|
// Home > Email Blasts
|
|
Breadcrumbs::for('emailblast.index', function (BreadcrumbTrail $trail) {
|
|
$trail->parent('home');
|
|
$trail->push('Email Blasts', route('emailblast.index'));
|
|
});
|
|
|
|
// Home > Email Blasts > Create
|
|
Breadcrumbs::for('emailblast.create', function (BreadcrumbTrail $trail) {
|
|
$trail->parent('emailblast.index');
|
|
$trail->push('Create Email Blast', route('emailblast.create'));
|
|
});
|
|
|
|
// Home > Email Blasts > View Email Blast
|
|
Breadcrumbs::for('emailblast.view', function (BreadcrumbTrail $trail, $emailBlast) {
|
|
$trail->parent('emailblast.index');
|
|
$trail->push('View Email Blast', route('emailblast.view', $emailBlast->id));
|
|
});
|
|
|
|
// Home > Email Blasts > Edit Email Blast
|
|
Breadcrumbs::for('emailblast.edit', function (BreadcrumbTrail $trail, $emailBlast) {
|
|
$trail->parent('emailblast.index');
|
|
$trail->push('Edit Email Blast', route('emailblast.edit', $emailBlast->id));
|
|
});
|
|
|
|
Breadcrumbs::for('jenis-kartu.index', function (BreadcrumbTrail $trail) {
|
|
$trail->parent('home');
|
|
$trail->push('Jenis Kartu', route('jenis-kartu.index'));
|
|
});
|
|
|
|
Breadcrumbs::for('jenis-kartu.create', function (BreadcrumbTrail $trail) {
|
|
$trail->parent('jenis-kartu.index');
|
|
$trail->push('Create Jenis Kartu', route('jenis-kartu.create'));
|
|
});
|
|
|
|
// Home > Jenis Kartus > View Jenis Kartu
|
|
Breadcrumbs::for('jenis-kartu.view', function (BreadcrumbTrail $trail, $data) {
|
|
$trail->parent('jenis-kartu.index');
|
|
$trail->push('View Jenis Kartu', route('jenis-kartu.view', $data->id));
|
|
});
|
|
|
|
// Home > Jenis Kartus > Edit Jenis Kartu
|
|
Breadcrumbs::for('jenis-kartu.edit', function (BreadcrumbTrail $trail, $data) {
|
|
$trail->parent('jenis-kartu.index');
|
|
$trail->push('Edit Jenis Kartu', route('jenis-kartu.edit', $data->id));
|
|
});
|
|
|
|
|
|
Breadcrumbs::for('kartu-atm.index', function (BreadcrumbTrail $trail) {
|
|
$trail->parent('home');
|
|
$trail->push('Kartu ATM', route('kartu-atm.index'));
|
|
});
|
|
|
|
Breadcrumbs::for('sync-logs.index', function (BreadcrumbTrail $trail) {
|
|
$trail->parent('home');
|
|
$trail->push('Sync Logs Biaya Kartu', route('sync-logs.index'));
|
|
});
|
|
|
|
|
|
Breadcrumbs::for('periode-statements.index', function (BreadcrumbTrail $trail) {
|
|
$trail->parent('home');
|
|
$trail->push('Periode Statement', route('periode-statements.index'));
|
|
});
|
|
|
|
Breadcrumbs::for('periode-statements.create', function (BreadcrumbTrail $trail) {
|
|
$trail->parent('periode-statements.index');
|
|
$trail->push('Create Periode Statement', route('periode-statements.create'));
|
|
});
|
|
|
|
Breadcrumbs::for('periode-statements.edit', function (BreadcrumbTrail $trail, $data) {
|
|
$trail->parent('periode-statements.index');
|
|
$trail->push('Create Periode Statement', route('periode-statements.edit', $data));
|
|
});
|
|
|
|
Breadcrumbs::for('periode-statements.show', function (BreadcrumbTrail $trail, $data) {
|
|
$trail->parent('periode-statements.index');
|
|
$trail->push('View Periode Statement', route('periode-statements.show', $data));
|
|
});
|
|
|
|
Breadcrumbs::for('statements.index', function (BreadcrumbTrail $trail) {
|
|
$trail->parent('home');
|
|
$trail->push('Print Stetement', route('statements.index'));
|
|
});
|
|
|
|
|
|
Breadcrumbs::for('atm-reports.index', function (BreadcrumbTrail $trail) {
|
|
$trail->parent('home');
|
|
$trail->push('Laporan Transaksi ATM', route('atm-reports.index'));
|
|
});
|
|
|
|
Breadcrumbs::for('email-statement-logs.index', function (BreadcrumbTrail $trail) {
|
|
$trail->parent('home');
|
|
$trail->push('Statement Email Logs', route('email-statement-logs.index'));
|
|
});
|