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) {
try {
$existingCard = $this->getExistingCard($card->crdno);
// 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->updateOrCreateAtmCard($card, $accountInfo);
$this->updateBranchAndCurrency($card->crdno, $accountInfo);
} else {
Atmcard::updateOrCreate(['crdno' => $card->crdno], $cardData);
}
} catch (Exception $e) {
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
*
@@ -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
*
* @return void
*/
private function updateOrCreateAtmCard(object $card, array $accountInfo)
private function updateBranchAndCurrency(string $cardNumber, array $accountInfo)
: void
{
Atmcard::updateOrCreate(
['crdno' => $card->crdno],
[
'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,
'crdate' => $card->crdate,
$cardData = [
'branch' => $accountInfo['acctCompany'],
'currency' => $accountInfo['acctCurrency'],
]
);
];
Atmcard::where('crdno', $cardNumber)->update($cardData);
Log::info("Berhasil memperbarui branch dan currency untuk kartu {$cardNumber}");
}
}