diff --git a/app/Services/Manage/StockService.php b/app/Services/Manage/StockService.php index 3e4c0ca..86fcf41 100644 --- a/app/Services/Manage/StockService.php +++ b/app/Services/Manage/StockService.php @@ -5,11 +5,13 @@ use App\Enums\CuttingStatus; use App\Models\Cutting; use App\Models\CuttingMaterial; +use App\Models\CuttingResult; use App\Models\CuttingResultPrice; use App\Models\ProductPrice; use App\Models\ProductVariant; use App\Models\User; use App\Services\System\PushNotificationService; +use App\Support\Media\MediaPresenter; use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; @@ -28,14 +30,16 @@ public function getPendingVerificationCuttings(User $user): Collection 'createdBy.profile', 'rejection.rejectedBy.profile', 'materials.rawMaterialPrice.rawMaterial:id,name,unit', + 'materials.rawMaterialPrice.media', 'results.productVariant.product:id,name', - 'results.productVariant:id,product_id,name', + 'results.productVariant.media', ]) ->completed() ->latest() ->get() ->each(function (Cutting $cutting): void { $this->appendCostPreview($cutting); + $this->appendPhotos($cutting); $cutting->materials->each(fn (CuttingMaterial $m) => $this->breakMaterialCircularReference($m)); }); } @@ -48,8 +52,9 @@ public function getPendingApprovalCuttings(User $user): Collection 'submittedBy.profile', 'rejection.rejectedBy.profile', 'materials.rawMaterialPrice.rawMaterial:id,name,unit', + 'materials.rawMaterialPrice.media', 'results.productVariant.product:id,name', - 'results.productVariant:id,product_id,name', + 'results.productVariant.media', 'resultPrices.productVariant:id,product_id,name', ]) ->pendingVerification() @@ -57,6 +62,7 @@ public function getPendingApprovalCuttings(User $user): Collection ->get() ->each(function (Cutting $cutting): void { $this->appendCostPreview($cutting); + $this->appendPhotos($cutting); $cutting->materials->each(fn (CuttingMaterial $m) => $this->breakMaterialCircularReference($m)); }); } @@ -346,4 +352,26 @@ private function appendCostPreview(Cutting $cutting): void $cutting->setAttribute('estimated_cost_per_unit', $costPerUnit); $cutting->setAttribute('estimated_cost_per_unit_formatted', 'Rp '.number_format($costPerUnit, 0, ',', '.')); } + + private function appendPhotos(Cutting $cutting): void + { + $cutting->materials->each(function (CuttingMaterial $material): void { + $price = $material->rawMaterialPrice; + + if ($price) { + $price->setAttribute('images', MediaPresenter::collection($price, 'images')); + } + }); + + $cutting->results->each(function (CuttingResult $result): void { + $variant = $result->productVariant; + + if ($variant) { + $variant->setAttribute( + 'images', + MediaPresenter::collection($variant, 'images'), + ); + } + }); + } } diff --git a/resources/js/pages/admin/manage/cuttings/table/CuttingCompletedSection.vue b/resources/js/pages/admin/manage/cuttings/table/CuttingCompletedSection.vue index 06f4606..18641c8 100644 --- a/resources/js/pages/admin/manage/cuttings/table/CuttingCompletedSection.vue +++ b/resources/js/pages/admin/manage/cuttings/table/CuttingCompletedSection.vue @@ -104,7 +104,7 @@ const totalCompleted = computed(() => props.cuttings.length); Hasil Produk: