refactor: streamline raw material update process by consolidating price handling into payload application, improving code clarity and maintainability
This commit is contained in:
parent
0489badf03
commit
2e578cd976
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user