@php use Illuminate\Pagination\LengthAwarePaginator; $items = $assignments instanceof LengthAwarePaginator ? collect($assignments->items()) : collect($assignments ?? []); $groupedByBusiness = $items->groupBy(function ($assignment) { return $assignment->business_id ?? 'no-business'; }); @endphp
@forelse($groupedByBusiness as $businessAssignments) @php $first = $businessAssignments->first(); $businessName = $first?->business?->name ?? 'Unknown Business'; $totalCalls = $businessAssignments->sum(fn ($a) => $a->calls->count()); $completedCalls = $businessAssignments->sum(function ($assignment) { return $assignment->calls->filter(function ($call) { return $call->mystery_status === 'completed' && $call->access_status === 'completed' && $call->quality_status === 'completed'; })->count(); }); $sectors = $businessAssignments->pluck('sector.name')->filter()->unique()->implode(', '); $months = $businessAssignments->pluck('month')->filter()->unique()->implode(', '); @endphp
{{ $businessName }}
{{ $sectors ?: 'N/A' }} | {{ $months ?: 'N/A' }}
@foreach($businessAssignments as $assignment) @php $calls = $assignment->calls->sortBy(fn ($call) => $call->call_number ?? $call->id)->values(); @endphp
Assignment #{{ $assignment->id }} | {{ str_replace('-', '/', (string) $assignment->month) }}
@forelse($calls as $call) @empty @endforelse
Call Scenario Mystery Shopper Access Assessor Quality Assessor
{{ $call->call_number ?? $loop->iteration }} {{ $call->scenario_number ?? 'N/A' }} {{ $call->mysteryShopper->name ?? 'N/A' }} {{ $call->assessorAccess->name ?? 'N/A' }} {{ $call->assessorQuality->name ?? 'N/A' }}
No calls found
@endforeach
@empty
No completed assignments found for the selected filters.
@endforelse @if($assignments instanceof LengthAwarePaginator)
{{ $assignments->links('pagination::bootstrap-4') }}
@endif