@php $stats = $report_stats ?? []; $state = $filter_state ?? []; $assignments = $assignments ?? null; $items = $assignments ? collect($assignments->items()) : collect(); $groupedByBusiness = $items->groupBy(fn ($assignment) => $assignment->business_id ?? 'no-business'); $statusBadgeClass = function ($status) { $status = strtolower((string) $status); if ($status === 'completed') { return 'success'; } if ($status === 'pending') { return 'warning'; } return 'secondary'; }; @endphp
@php $total = (int) ($stats['total'] ?? 0); $completed = (int) ($stats['completed'] ?? 0); $inProgress = (int) ($stats['in_progress'] ?? 0); $pending = (int) ($stats['pending'] ?? 0); $completedPct = $total > 0 ? (int) round(($completed / $total) * 100) : 0; $inProgressPct = $total > 0 ? (int) round(($inProgress / $total) * 100) : 0; $pendingPct = max(100 - $completedPct - $inProgressPct, 0); @endphp

Assignment Status Summary

{{ $stats['year_month'] ?? '-' }} @if(!empty($state['sector_id']) || !empty($state['business_id'])) | Filtered @endif
Total Assignments
{{ $total }}
Completed
{{ $completed }}
In Progress
{{ $inProgress }}
Pending
{{ $pending }}

Business / Assignment Details

@forelse($groupedByBusiness as $businessAssignments) @php $first = $businessAssignments->first(); $businessName = $first?->business?->name ?? 'Unknown Business'; $months = $businessAssignments->pluck('month')->filter()->unique()->implode(', '); $sectors = $businessAssignments->pluck('sector.name')->filter()->unique()->implode(', '); $businessCalls = $businessAssignments->flatMap(fn ($assignment) => $assignment->calls ?? collect()); $businessTotalCalls = $businessCalls->count(); $businessCompletedCalls = $businessCalls->filter(function ($call) { return $call->mystery_status === 'completed' && $call->access_status === 'completed' && $call->quality_status === 'completed'; })->count(); @endphp
{{ $businessName }}
{{ $sectors ?: 'N/A' }} | {{ $months ?: 'N/A' }}
{{ $businessCompletedCalls }}/{{ $businessTotalCalls }} completed
@foreach($businessAssignments as $assignment) @php $calls = $assignment->calls->sortBy('id')->values(); @endphp
Assignment #{{ $assignment->id }} | {{ str_replace('-', '/', (string) $assignment->month) }}
@forelse($calls as $call) @empty @endforelse
Call Mystery Shopper Access Assessor Quality Assessor Mystery Status Access Status Quality Status
{{ $loop->iteration }} {{ $call->mysteryShopper->name ?? 'N/A' }} {{ $call->assessorAccess->name ?? 'N/A' }} {{ $call->assessorQuality->name ?? 'N/A' }} {{ ucfirst($call->mystery_status ?? 'pending') }} {{ ucfirst($call->access_status ?? 'pending') }} {{ ucfirst($call->quality_status ?? 'pending') }}
No calls found
@endforeach
@empty
No assignments found for selected filters.
@endforelse
@if($assignments)
{{ $assignments->links('pagination::bootstrap-4') }}
@endif