feat(cart): update CartItemResource to use visibleVariants method with included variant ID; enhance variant filtering logic

This commit is contained in:
2026-08-10 13:59:45 -03:00
parent 8542c03466
commit 6844ab7af9
4 changed files with 21 additions and 5 deletions

View File

@@ -38,7 +38,7 @@ class CartItemResource extends JsonResource
'product' => $selectedItem === null ? null : [
'nombre' => $selectedItem->getName(),
'imagen' => $imageUrl,
'variants' => $this->catalogItem->variants
'variants' => $this->catalogItem->visibleVariants($this->variant_id)
->map(fn (Variant $variant): array => [
'id' => $variant->id,
'precio' => $this->formatMoney($variant->getPrice()),

View File

@@ -172,10 +172,11 @@ class CatalogItem extends Model
}
/** @return Collection<int, Variant> */
public function visibleVariants(): Collection
public function visibleVariants(?int $includedVariantId = null): Collection
{
return $this->variants
->filter(fn (Variant $variant): bool => $this->inventory_policy === InventoryPolicy::Unlimited
->filter(fn (Variant $variant): bool => ($includedVariantId !== null && $variant->id === $includedVariantId)
|| $this->inventory_policy === InventoryPolicy::Unlimited
|| ($variant->inventory?->availableStock() ?? 0) > 0)
->values();
}