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( $this->runInTransaction(
function () use ($validated, $rawMaterial): void { function () use ($validated, $rawMaterial): void {
$payload = $this->enrichPayload($this->buildPayloadFromValidated($validated)); $payload = $this->enrichPayload($this->buildPayloadFromValidated($validated));
$this->applyPayloadToRawMaterial($rawMaterial, $payload); $this->applyPayloadToRawMaterial($rawMaterial, $payload, originalPrices: $validated['prices'] ?? []);
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);
}
}
}, },
'Gagal memperbarui bahan baku', 'Gagal memperbarui bahan baku',
); );
@ -316,6 +305,7 @@ private function applyPayloadToRawMaterial(
RawMaterial $rawMaterial, RawMaterial $rawMaterial,
array $payload, array $payload,
?OwnerVerificationRequest $verificationRequest = null, ?OwnerVerificationRequest $verificationRequest = null,
array $originalPrices = [],
): void { ): void {
$rawMaterial->update([ $rawMaterial->update([
'name' => $payload['name'], 'name' => $payload['name'],
@ -353,6 +343,8 @@ private function applyPayloadToRawMaterial(
if ($verificationRequest !== null) { if ($verificationRequest !== null) {
$this->applyPriceImageChanges($verificationRequest, $price, $priceData, (int) $index); $this->applyPriceImageChanges($verificationRequest, $price, $priceData, (int) $index);
} elseif (isset($originalPrices[$index])) {
$this->syncPriceImages($price, $originalPrices[$index], $index);
} }
continue; continue;
@ -366,6 +358,8 @@ private function applyPayloadToRawMaterial(
if ($verificationRequest !== null) { if ($verificationRequest !== null) {
$this->copyRequestPriceImages($verificationRequest, (int) $index, $price); $this->copyRequestPriceImages($verificationRequest, (int) $index, $price);
} elseif (isset($originalPrices[$index])) {
$this->syncPriceImages($price, $originalPrices[$index], $index);
} }
} }
} }