*/ public function toArray(Request $request): array { return [ 'id' => $this->id, 'type' => $this->type->value, 'category_id' => $this->category_id, 'brand_id' => $this->brand_id, 'slug' => $this->slug, 'nombre' => $this->nombre, 'descripcion' => $this->descripcion, 'precio' => $this->precio, 'inventory_policy' => $this->inventory_policy?->value, 'has_tickets' => $this->has_tickets, 'minimum_use_date' => $this->minimum_use_date, 'maximum_use_date' => $this->maximum_use_date, 'real_stock' => $this->whenLoaded('inventory', fn () => $this->inventory?->real_stock), 'images' => $this->whenLoaded('attachments', fn () => $this->attachments ->map(fn ($attachment) => $attachment->getTemporaryUrl(1440)) ->values()), 'variants' => $this->whenLoaded('variants', fn () => $this->variants ->map(fn ($variant) => [ 'id' => $variant->id, 'real_stock' => $variant->inventory?->real_stock, 'values' => $variant->definitions ->mapWithKeys(fn ($definition) => [ $definition->itemAttribute?->attribute?->codigo => $definition->value, ]) ->filter(fn ($value, $key) => $key !== null), 'images' => $variant->attachments ->map(fn ($attachment) => $attachment->getTemporaryUrl(1440)) ->values(), ]) ->values()), ]; } }