feat(webstatement): update date formatting logic with dynamic relation mapping

- Tambahkan logika untuk memetakan prefix `trans_reference` ke hubungan objek terkait menggunakan `relationMap`.
- Update method untuk mengambil nilai `date_time` dari properti terkait berdasarkan mapping prefix (`FT`, `TT`, `DC`, `AA`) dan fallback ke default `0000000000` jika mapping tidak ditemukan.
- Modifikasi format tanggal menggunakan kombinasi `booking_date` dan parsing substring yang dinamis dari properti `date_time`.
- Perbaiki pengolahan format tanggal pada dua method yang terpengaruh untuk memastikan data yang lebih dinamis dan akurat.
- Tambahkan fallback error handling tetap menggunakan logging untuk mendeteksi potensi kesalahan format.
This commit is contained in:
daengdeni
2025-05-28 10:38:27 +07:00
parent 1b3e0ed30d
commit 762b1457ba

View File

@@ -168,9 +168,23 @@
: string
{
try {
$prefix = substr($item->trans_reference ?? '', 0, 2);
$relationMap = [
'FT' => 'ft',
'TT' => 'tt',
'DC' => 'dc',
'AA' => 'aa'
];
$datetime = '0000000000';
if (isset($relationMap[$prefix])) {
$relation = $relationMap[$prefix];
$datetime = $item->$relation?->date_time ?? '0000000000';
}
return Carbon::createFromFormat(
'YmdHi',
$item->booking_date . substr($item->ft?->date_time ?? '0000000000', 6, 4)
$item->booking_date . substr($datetime, 6, 4)
)->format('d/m/Y H:i');
} catch (Exception $e) {
Log::warning("Error formatting transaction date: " . $e->getMessage());
@@ -182,9 +196,24 @@
: string
{
try {
$prefix = substr($item->trans_reference ?? '', 0, 2);
$relationMap = [
'FT' => 'ft',
'TT' => 'tt',
'DC' => 'dc',
'AA' => 'aa'
];
$datetime = '0000000000';
if (isset($relationMap[$prefix])) {
$relation = $relationMap[$prefix];
$datetime = $item->$relation?->date_time ?? '0000000000';
}
return Carbon::createFromFormat(
'ymdHi',
$item->ft?->date_time ?? '2505120000'
$datetime
)->format('d/m/Y H:i');
} catch (Exception $e) {
Log::warning("Error formatting actual date: " . $e->getMessage());