refactor: streamline raw material update process by consolidating price handling into payload application, improving code clarity and maintainability
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled

This commit is contained in:
Yoga Pangestu 2026-07-15 04:01:10 +07:00
parent 0489badf03
commit 2e578cd976

View File

@ -134,18 +134,7 @@ public function update(RawMaterial $rawMaterial, array $validated, User $user):
$this->runInTransaction(
function () use ($validated, $rawMaterial): void {
$payload = $this->enrichPayload($this->buildPayloadFromValidated($validated));
$this->applyPayloadToRawMaterial($rawMaterial, $payload);
foreach ($validated['prices'] as $index => $priceData) {
if (! empty($priceData['id'])) {
$price = $rawMaterial->prices()->find($priceData['id']);
if ($price) {
$this->syncPriceImages($price, $priceData, $index);
}
} else {
$this->createPrice($rawMaterial, $priceData, $index);
}
}
$this->applyPayloadToRawMaterial($rawMaterial, $payload, originalPrices: $validated['prices'] ?? []);
},
'Gagal memperbarui bahan baku',
);
@ -316,6 +305,7 @@ private function applyPayloadToRawMaterial(
RawMaterial $rawMaterial,
array $payload,
?OwnerVerificationRequest $verificationRequest = null,
array $originalPrices = [],
): void {
$rawMaterial->update([
'name' => $payload['name'],
@ -353,6 +343,8 @@ private function applyPayloadToRawMaterial(
if ($verificationRequest !== null) {
$this->applyPriceImageChanges($verificationRequest, $price, $priceData, (int) $index);
} elseif (isset($originalPrices[$index])) {
$this->syncPriceImages($price, $originalPrices[$index], $index);
}
continue;
@ -366,6 +358,8 @@ private function applyPayloadToRawMaterial(
if ($verificationRequest !== null) {
$this->copyRequestPriceImages($verificationRequest, (int) $index, $price);
} elseif (isset($originalPrices[$index])) {
$this->syncPriceImages($price, $originalPrices[$index], $index);
}
}
}