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) {
|
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'],
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user