@forelse ($clients as $c) @php $rs = trim($c['RAISON_SOCIALE'] ?? ''); $nom = trim(($c['NOMFAMILLE'] ?? '') . ' ' . ($c['PRENOM'] ?? '')); $prenomNom = trim(($c['PRENOM'] ?? '') . ' ' . ($c['NOMFAMILLE'] ?? '')); // Normalisation pour comparer (casse + espaces multiples ignorés) $norm = fn ($s) => mb_strtoupper(preg_replace('/\s+/', ' ', trim($s))); // La raison sociale fait doublon si elle correspond au nom+prénom // (dans un sens ou dans l'autre) $doublon = $rs !== '' && $nom !== '' && ($norm($rs) === $norm($nom) || $norm($rs) === $norm($prenomNom)); @endphp @php // Une ligne par client (liste compacte) : le nom du contact suit la // raison sociale, l'adresse tient sur une ligne ; le texte entier // reste dans l'infobulle. $libelle = ($doublon || $nom === '' || $rs === '') ? ($rs ?: $nom) : $rs . ' · ' . $nom; $adresse = collect([$c['ADRESSEP1'] ?? '', $c['ADRESSEP2'] ?? '', trim(($c['CPOSTALP'] ?? '') . ' ' . ($c['VILLEP'] ?? ''))]) ->map(fn ($l) => trim((string) $l))->filter()->implode(', '); $url = route('clients.show', $c['IDCONTACT']); @endphp