feat: simplify media handling in getVariants method and enhance price mapping for product variants

This commit is contained in:
Yoga Pangestu 2026-08-20 11:28:28 +07:00
parent f128ace2ea
commit 9cca0427c8

View File

@ -81,13 +81,18 @@ public function getVariants(Product $product): Collection
->with(['productPrices:id,variant_id,type,price'])
->get()
->each(function (ProductVariant $variant) {
$media = $variant->getMedia('images');
$variant->photo_urls = $media->map(fn ($m) => $this->s3Service->getTemporaryUrl($m->getPath()))->toArray();
$variant->photo_conversion_urls = $media->map(
fn ($m) => $m->getGeneratedConversions()->contains('thumb')
? $this->s3Service->getTemporaryUrl($m->getPath('thumb'))
: $this->s3Service->getTemporaryUrl($m->getPath())
)->toArray();
$media = $variant->getFirstMedia('images');
$variant->photo_url = $media
? $this->s3Service->getTemporaryUrl($media->getPath())
: null;
$variant->photo_conversion_url = $media
? ($media->getGeneratedConversions()->contains('thumb')
? $this->s3Service->getTemporaryUrl($media->getPath('thumb'))
: $this->s3Service->getTemporaryUrl($media->getPath()))
: null;
$prices = $variant->productPrices->mapWithKeys(fn ($p) => [$p->type->value => $p->price]);
$variant->prices = $prices;
});
}