*/ public function toArray(Request $request): array { $selectedItem = $this->selectedItem(); $imageUrl = null; $tenant = $request->route('tenant'); $displayImage = ! $tenant instanceof Tenant || $tenant->display_cart_item_images; if ($displayImage && $selectedItem?->relationLoaded('attachments')) { $imageUrl = $selectedItem->attachments->first()?->getTemporaryUrl(1440); } if ($displayImage && $imageUrl === null && $this->catalogItem?->relationLoaded('attachments')) { $imageUrl = $this->catalogItem->attachments->first()?->getTemporaryUrl(1440); } return [ 'id' => $this->id, 'cantidad' => $this->cantidad, 'precio_unitario' => $this->formatMoney($selectedItem?->getPrice()), 'catalog_item_id' => $this->catalog_item_id, 'variant_id' => $this->variant_id, 'nombre' => $selectedItem?->getName(), 'imagen' => $imageUrl, 'variant' => $this->variant === null ? null : [ 'id' => $this->variant->id, 'precio' => $this->formatMoney($this->variant->getPrice()), 'stock_tecnico' => $this->catalogItem->inventory_policy === InventoryPolicy::Unlimited ? null : $this->variant->inventory->availableStock(), 'values' => $this->variant->selectorOptions($this->catalogItem->itemAttributes), ], ]; } protected function formatMoney(float|int|string|null $amount): string { return number_format((float) ($amount ?? 0), 2, '.', ''); } }