@php
// Évalué une fois pour la page plutôt qu'à chaque ligne.
$peutVoirClient = auth()->user()?->can('clients.view');
@endphp
{{-- Deux lignes par intervention (.table-deux-lignes) : l'essentiel en
haut, le détail en dessous, en petit (.ligne-2). Rien n'est caché — la
version à une ligne, qui réduisait l'adresse à la ville, a été jugée
trop serrée. Le texte coupé reste entier dans l'infobulle. --}}
@forelse ($interventions as $i)
@php
$client = $i['CLIENT'] ?? null;
$idClient = (int) ($client['IDCONTACT'] ?? 0);
$rs = $client['RAISON_SOCIALE'] ?? null;
$nomComplet = trim(($client['NOMFAMILLE'] ?? '') . ' ' . ($client['PRENOM'] ?? ''));
$displayName = $rs ?: $nomComplet;
// Le LIEU de l'intervention quand il est saisi, l'adresse du client
// sinon (gestan_inter_adresse).
$lieu = gestan_inter_adresse($i);
$adresse = implode(', ', $lieu['lignes']);
@endphp
@include('admin.gestan.partials.badge-status', [
'statut' => $i['ST_INTER'] ?? null,
])
@php
// Saisie depuis 3 jours ou plus et toujours ouverte : même
// pastille que l'échéance dépassée des commandes.
$retard = gestan_inter_retard($i);
// Prise en charge (PriseEnCharge) : qui y va, et quand.
$prise = ($prises ?? collect())->get((int) $i['IDINTERVENTION']);
// Rapports saisis dans le portail. Vert : tous injectés dans
// Gestan ; orange : au moins un attend la validation de
// l'accueil — tant qu'il en reste un, l'intervention ne peut
// pas être terminée. Le détail est dans l'infobulle.
$liste = ($rapports ?? collect())->get($i['IDINTERVENTION'], collect());
$dernier = $liste->first();
$nonSync = $liste->whereNull('approuve_le')->count();
@endphp
@if ($retard || ($prise && $prise->users->isNotEmpty()) || $dernier)
@if ($retard)
{{ $retard['libelle'] }}
@endif
@if ($prise && $prise->users->isNotEmpty())
{{ \App\Services\Interventions\PriseEnCharge::noms($prise, court: true) }}@if ($prise->date_debut) · {{ $prise->date_debut->format('d/m H:i') }}@endif
@endif
@if ($dernier)
@php
$infobulle = __(':n rapport(s) — dernier le :date par :auteur', [
'n' => $liste->count(),
'date' => $dernier->created_at->format('d/m/Y H:i'),
'auteur' => $dernier->contenu['signataire'] ?? '—',
]);
if ($nonSync) {
$infobulle .= ' — ' . __(':n en attente de validation', ['n' => $nonSync]);
}
@endphp
{{ $liste->count() }}
@endif
@endif
{{-- Statut de facturation (ST_FACT) : À FACTURER, FACTURÉE ou
NON RENSEIGNÉ, libellés de mapStatusFact côté api. La date vit
dans le champ texte libre DEMANDEUR de Gestan : même nettoyage
que sur la fiche (show.blade.php). --}}
{{-- À faire et en cours : le formulaire est dans le modal rendu
sous le tableau de l'index. Un technicien qui vient de
s'attribuer l'intervention la trouve « en cours » — c'est
justement le moment où il saisit. --}}
@if (gestan_inter_saisie_rapport($i))
@endif