From 2e578cd9766459bb414eaed34167dc1e58b4853a Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Wed, 15 Jul 2026 04:01:10 +0700 Subject: [PATCH] refactor: streamline raw material update process by consolidating price handling into payload application, improving code clarity and maintainability --- app/Services/Master/RawMaterialService.php | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/app/Services/Master/RawMaterialService.php b/app/Services/Master/RawMaterialService.php index 22651eb..e8bc5bc 100644 --- a/app/Services/Master/RawMaterialService.php +++ b/app/Services/Master/RawMaterialService.php @@ -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); } } }