@php $filterResults = $row->filter_results ?? []; // Check if this is the new format with failed_filters_by_order $hasFailedFiltersByOrder = isset($filterResults['failed_filters_by_order']) && !empty($filterResults['failed_filters_by_order']); if ($hasFailedFiltersByOrder) { // New format: multiple orders with failed filters $totalOrders = count($filterResults['failed_filters_by_order']); // Count passed and failed across all orders $allChecks = collect(); foreach ($filterResults['failed_filters_by_order'] as $orderData) { $orderResults = $orderData['results'] ?? []; $orderChecks = $orderResults['checks'] ?? $orderResults; $metadataKeys = ['passed', 'evaluated_at', 'failed_count', 'passed_count', 'filter_version', 'checks', 'order_ineligible', 'order_eligible', 'order_eligibility_results']; $filtered = collect($orderChecks)->filter(function($value, $key) use ($metadataKeys) { return !in_array($key, $metadataKeys) && is_array($value) && isset($value['passed']); }); $allChecks = $allChecks->merge($filtered); } $passedCount = $allChecks->filter(fn($r) => $r['passed'] ?? false)->count(); $failedCount = $allChecks->filter(fn($r) => !($r['passed'] ?? true))->count(); $totalCount = $allChecks->count(); // Get failed filter names $failedFilters = $allChecks->filter(fn($r) => !($r['passed'] ?? true))->map(function($result, $key) { return $result['label'] ?? (trans()->has('lead_filters.'.$key) ? __('lead_filters.'.$key) : ucfirst(str_replace('_', ' ', $key))); })->unique()->values(); } else { // Original format: single filter results $checksRaw = $filterResults['checks'] ?? $filterResults; // Filter out metadata fields, keep only actual filter checks $metadataKeys = ['passed', 'evaluated_at', 'failed_count', 'passed_count', 'filter_version', 'checks', 'rejection_reason', 'summary', 'failed_filters_by_order']; $checks = collect($checksRaw)->filter(function($value, $key) use ($metadataKeys) { return !in_array($key, $metadataKeys) && is_array($value) && isset($value['passed']); }); $passedCount = $filterResults['passed_count'] ?? $checks->filter(fn($r) => $r['passed'] ?? false)->count(); $failedCount = $filterResults['failed_count'] ?? $checks->filter(fn($r) => ! ($r['passed'] ?? true))->count(); $totalCount = $checks->count(); // Get failed filter names $failedFilters = $checks->filter(fn($r) => !($r['passed'] ?? true))->map(function($result, $key) { return $result['label'] ?? (trans()->has('lead_filters.'.$key) ? __('lead_filters.'.$key) : ucfirst(str_replace('_', ' ', $key))); })->values(); } // Build tooltip HTML $tooltipHtml = view('partials.api.lead-logs.filter-results-tooltip', ['row' => $row])->render(); $tooltipHtml = str_replace(["\n", "\r", '"'], ['', '', '"'], $tooltipHtml); @endphp @if($totalCount > 0 || $hasFailedFiltersByOrder)
@if($failedCount === 0) {{-- All passed --}} {{ __('Tout OK') }} @else {{-- Show failed filters and passed count --}}
@foreach($failedFilters->take(5) as $filterName) {{ $filterName }} @endforeach @if($failedFilters->count() > 5) +{{ $failedFilters->count() - 5 }} {{ __('échoué(s)') }} @endif @if($passedCount > 0) {{ $passedCount }} {{ __('OK') }} @endif
@endif {{-- Filter name badge --}} @if($row->filter) {{ $row->filter->name }} @endif
@else - @endif