refactor: streamline material validation and stock management in create and update methods of CuttingService

This commit is contained in:
Yoga Pangestu 2026-08-06 10:41:41 +07:00
parent aaafbb92a2
commit 71128002d7

View File

@ -145,6 +145,7 @@ public function getForEdit(Cutting $cutting): array
public function create(array $data): Cutting public function create(array $data): Cutting
{ {
return DB::transaction(function () use ($data) {
foreach ($data['materials'] as $materialData) { foreach ($data['materials'] as $materialData) {
$usage = (int) ($materialData['material_usage'] ?? 0); $usage = (int) ($materialData['material_usage'] ?? 0);
if ($usage <= 0) { if ($usage <= 0) {
@ -161,7 +162,6 @@ public function create(array $data): Cutting
} }
} }
return DB::transaction(function () use ($data) {
$cutting = Cutting::create([ $cutting = Cutting::create([
'created_by_id' => auth()->id(), 'created_by_id' => auth()->id(),
'status' => 'in_progress', 'status' => 'in_progress',
@ -247,6 +247,7 @@ public function create(array $data): Cutting
public function update(Cutting $cutting, array $data): Cutting public function update(Cutting $cutting, array $data): Cutting
{ {
return DB::transaction(function () use ($cutting, $data) {
$cutting->load(['cuttingMaterials.rawMaterialPrice']); $cutting->load(['cuttingMaterials.rawMaterialPrice']);
foreach ($cutting->cuttingMaterials as $oldMaterial) { foreach ($cutting->cuttingMaterials as $oldMaterial) {
@ -271,7 +272,6 @@ public function update(Cutting $cutting, array $data): Cutting
} }
} }
return DB::transaction(function () use ($cutting, $data) {
$cutting->load(['cuttingMaterials', 'cuttingMaterialCombinations', 'cuttingResults']); $cutting->load(['cuttingMaterials', 'cuttingMaterialCombinations', 'cuttingResults']);
$cutting->cuttingResults()->delete(); $cutting->cuttingResults()->delete();