@php use App\Enum\Dsar\DsarStatus; @endphp {{-- Shared evidence-review body: filter bar + recipient → DSAR → document grouping. Rendered by both the client Evidence tab (ClientEvidence) and the standalone workbench (EvidenceWorkbench); all wire: directives resolve to the host, which pulls in App\Trait\ManagesEvidenceReview for the backing behaviour. Terminology is fixed everywhere: Total · Confirmed · To review · Dismissed. --}} {{-- ── Filter bar ──────────────────────────────────────────────────────────── --}}
{{-- Show-excluded sits beside the review-state filter — both scope the corpus. --}}
@if($hasProcessing) Processing… auto-refreshing @endif
{{-- ── By DSAR recipient & DSAR ─────────────────────────────────────────────── --}} @forelse($recipientGroups as $group)
{{-- Recipient header --}}
{{ $group['label'] }}
{{ $group['dsar_count'] }} DSAR{{ $group['dsar_count'] === 1 ? '' : 's' }} · {{ $group['files'] }} document{{ $group['files'] === 1 ? '' : 's' }} @if($group['items'] > 0) · {{ $group['items'] }} finding{{ $group['items'] === 1 ? '' : 's' }} @endif @if($group['local_authority']) · {{ $group['local_authority'] }} @endif
{{-- Single roll-up status; detailed counts live on the document rows. --}} @if($group['items'] > 0) @if($group['unreviewed'] === 0) Reviewed @else {{ $group['unreviewed'] }} to review @endif @endif
{{-- DSAR sub-groups --}} @foreach($group['dsars'] as $sub)
{{-- DSAR band --}}
{{ $sub['reference'] }} @if($sub['status']) {{ DsarStatus::label($sub['status']) }} @endif @if($sub['posted_at']) Sent {{ $sub['posted_at']->format('d M Y') }} @endif @if($sub['received_at']) Received {{ $sub['received_at']->format('d M Y') }} @endif {{ $sub['files'] }} document{{ $sub['files'] === 1 ? '' : 's' }} @if($sub['items'] > 0) @if($sub['unreviewed'] === 0) Reviewed @else {{ $sub['unreviewed'] }} to review @endif @endif
{{-- Documents in this DSAR --}}
@foreach($sub['rows'] as $row) @php // Labelled document-row summary (no bare numbers, no tiny bar). $n = $row['count']; $noun = \Illuminate\Support\Str::plural('finding', $n); if ($n === 0) { $rowSummary = null; } elseif ($row['unreviewed'] === 0 && $row['dismissed'] === 0) { $rowSummary = "{$n} {$noun} · All reviewed"; } elseif ($row['unreviewed'] === 0) { $rowSummary = "{$n} {$noun} · {$row['confirmed']} confirmed · {$row['dismissed']} dismissed"; } else { $bits = []; if ($row['confirmed'] > 0) $bits[] = "{$row['confirmed']} confirmed"; $bits[] = "{$row['unreviewed']} to review"; if ($row['dismissed'] > 0) $bits[] = "{$row['dismissed']} dismissed"; $rowSummary = "{$n} {$noun} · " . implode(' · ', $bits); } @endphp
{{-- Preview / doctype tile --}}
{{ $row['file_ext'] }}
@if($row['is_image'] && $row['preview_url']) @endif
{{-- Filename (prominent) + metadata (de-emphasised) + counts --}}
{{ $row['name'] }} @include('components.client.partials.evidence-status', ['status' => $row['status'], 'excluded' => $row['excluded']])
{{ $row['origin'] }} · {{ $row['meta'] }}
@if($rowSummary)
{{ $rowSummary }}
@endif
{{-- Labelled actions --}}
@if($row['view_url']) @if($row['unreviewed'] > 0) Review findings @else View findings @endif @endif @can('synapse.use') @php $extractFn = $row['type'] === 'attachment' ? "runAttachmentExtraction({$row['id']}, {$row['dsar']->id})" : "runDocumentExtraction({$row['id']})"; @endphp @if(!in_array($row['status'], ['processing', 'completed'])) @elseif($row['status'] === 'completed') @endif @endcan @if(in_array($row['status'], ['processing', 'failed'])) @endif @if($row['excluded']) @else @endif
@endforeach
@endforeach
@empty

No evidence documents match the current filters.

@endforelse