loadMissing(self::RELATIONS); $catalogItem = $ticket->sourceCatalogItem; if ($catalogItem === null) { return ''; } $variant = $ticket->sourceVariant; if ($variant === null) { return $catalogItem->nombre; } $properties = $variant->selectionOptions() ->flatMap(function (array $option): array { if (array_is_list($option)) { return collect($option) ->pluck('label') ->filter(fn ($label): bool => is_string($label) && $label !== '') ->all(); } $label = $option['label'] ?? null; return is_string($label) && $label !== '' ? [$label] : []; }) ->values(); return $properties->isEmpty() ? $catalogItem->nombre : $catalogItem->nombre.' ('.$properties->implode(', ').')'; } public function description(Ticket $ticket): string { $ticket->loadMissing(self::RELATIONS); return (string) ($ticket->sourceVariant?->getDescription() ?? $ticket->sourceCatalogItem?->descripcion ?? ''); } }