refactor(webstatement): optimalkan logika pembaruan kartu ATM

- Menambahkan metode untuk mendapatkan data dasar kartu (getCardBaseData).
- Menambahkan metode untuk memeriksa apakah pembaruan branch dan currency diperlukan (needBranchAndCurrencyUpdate).
- Menambahkan metode untuk memperbarui branch dan currency (updateBranchAndCurrency).
- Memisahkan logika menjadi fungsi-fungsi modular untuk meningkatkan keterbacaan dan pemeliharaan kode.
- Mengganti logika pembaruan kartu ATM untuk mendukung pembaruan selektif berdasarkan kebutuhan.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
This commit is contained in:
Daeng Deni Mardaeni
2025-05-08 16:23:43 +07:00
parent 697966471a
commit 0235f17b01

View File

@@ -96,14 +96,80 @@
{ {
foreach ($cards as $card) { foreach ($cards as $card) {
try { try {
$accountInfo = $this->getAccountInfo($card->accflag); $existingCard = $this->getExistingCard($card->crdno);
$this->updateOrCreateAtmCard($card, $accountInfo);
// Perbarui data kartu dasar
$cardData = $this->getCardBaseData($card);
// Periksa jika perlu memperbarui branch dan currency
if ($this->needBranchAndCurrencyUpdate($existingCard)) {
$accountInfo = $this->getAccountInfo($card->accflag);
$this->updateBranchAndCurrency($card->crdno, $accountInfo);
} else {
Atmcard::updateOrCreate(['crdno' => $card->crdno], $cardData);
}
} catch (Exception $e) { } catch (Exception $e) {
Log::warning("Gagal memproses kartu {$card->crdno}: " . $e->getMessage()); Log::warning("Gagal memproses kartu {$card->crdno}: " . $e->getMessage());
} }
} }
} }
/**
* Get existing card from database if exists
*
* @param string $cardNumber
*
* @return Atmcard|null
*/
private function getExistingCard(string $cardNumber)
: ?Atmcard
{
return Atmcard::where('crdno', $cardNumber)->first();
}
/**
* Get base data for card update
*
* @param object $card
*
* @return array
*/
private function getCardBaseData(object $card)
: array
{
return [
'accflag' => $card->accflag,
'cracc1' => $card->cracc1,
'cracc2' => $card->cracc2,
'cracc3' => $card->cracc3,
'cracc4' => $card->cracc4,
'cracc5' => $card->cracc5,
'craccnam1' => $card->craccnam1,
'craccnam2' => $card->craccnam2,
'craccnam3' => $card->craccnam3,
'craccnam4' => $card->craccnam4,
'craccnam5' => $card->craccnam5,
'crsts' => $card->crsts,
'cttype' => $card->cttype,
'ctdesc' => $card->ctdesc,
'last_update' => $card->lastupdate,
];
}
/**
* Check if branch and currency update is needed
*
* @param Atmcard|null $card
*
* @return bool
*/
private function needBranchAndCurrencyUpdate(?Atmcard $card)
: bool
{
// Jika kartu belum ada atau branch/currency belum terisi
return $card === null || empty($card->branch) || empty($card->currency);
}
/** /**
* Get account information from the API * Get account information from the API
* *
@@ -126,38 +192,23 @@
} }
/** /**
* Update or create ATM card record * Update branch and currency information for a card
* *
* @param object $card * @param string $cardNumber
* @param array $accountInfo * @param array $accountInfo
* *
* @return void * @return void
*/ */
private function updateOrCreateAtmCard(object $card, array $accountInfo) private function updateBranchAndCurrency(string $cardNumber, array $accountInfo)
: void : void
{ {
Atmcard::updateOrCreate( $cardData = [
['crdno' => $card->crdno], 'branch' => $accountInfo['acctCompany'],
[ 'currency' => $accountInfo['acctCurrency'],
'accflag' => $card->accflag, ];
'cracc1' => $card->cracc1,
'cracc2' => $card->cracc2, Atmcard::where('crdno', $cardNumber)->update($cardData);
'cracc3' => $card->cracc3,
'cracc4' => $card->cracc4, Log::info("Berhasil memperbarui branch dan currency untuk kartu {$cardNumber}");
'cracc5' => $card->cracc5,
'craccnam1' => $card->craccnam1,
'craccnam2' => $card->craccnam2,
'craccnam3' => $card->craccnam3,
'craccnam4' => $card->craccnam4,
'craccnam5' => $card->craccnam5,
'crsts' => $card->crsts,
'cttype' => $card->cttype,
'ctdesc' => $card->ctdesc,
'last_update' => $card->lastupdate,
'crdate' => $card->crdate,
'branch' => $accountInfo['acctCompany'],
'currency' => $accountInfo['acctCurrency'],
]
);
} }
} }