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:
@@ -96,14 +96,80 @@
|
||||
{
|
||||
foreach ($cards as $card) {
|
||||
try {
|
||||
$accountInfo = $this->getAccountInfo($card->accflag);
|
||||
$this->updateOrCreateAtmCard($card, $accountInfo);
|
||||
$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->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,
|
||||
'branch' => $accountInfo['acctCompany'],
|
||||
'currency' => $accountInfo['acctCurrency'],
|
||||
]
|
||||
);
|
||||
$cardData = [
|
||||
'branch' => $accountInfo['acctCompany'],
|
||||
'currency' => $accountInfo['acctCurrency'],
|
||||
];
|
||||
|
||||
Atmcard::where('crdno', $cardNumber)->update($cardData);
|
||||
|
||||
Log::info("Berhasil memperbarui branch dan currency untuk kartu {$cardNumber}");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user