From 762b1457bad489942bf04f348543f1b7e5306c52 Mon Sep 17 00:00:00 2001 From: daengdeni Date: Wed, 28 May 2025 10:38:27 +0700 Subject: [PATCH] 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. --- app/Jobs/ExportStatementJob.php | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/app/Jobs/ExportStatementJob.php b/app/Jobs/ExportStatementJob.php index 990f8a0..fcd2215 100644 --- a/app/Jobs/ExportStatementJob.php +++ b/app/Jobs/ExportStatementJob.php @@ -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());