@php use App\Enums\QuestionBatteryStatus; use App\Services\QuestionBatteryScopeService; /** @var \App\Data\UserPortalBatteryDiagnostic $batteryDiagnostic */ $scopeService = app(QuestionBatteryScopeService::class); $formatBatteryScope = static function ($battery) use ($scopeService): string { $battery->loadMissing(['sectors', 'trainingGroups', 'sector', 'trainingGroup']); $areas = $scopeService->sectorIdsForBattery($battery); $groups = $scopeService->trainingGroupIdsForBattery($battery); $areaNames = $battery->sectors->pluck('name')->all(); if ($areaNames === [] && $battery->sector) { $areaNames = [$battery->sector->name]; } $groupNames = $battery->trainingGroups->pluck('name')->all(); if ($groupNames === [] && $battery->trainingGroup) { $groupNames = [$battery->trainingGroup->name]; } $areaLabel = $areaNames !== [] ? implode(', ', $areaNames) : '—'; $groupLabel = $groupNames !== [] ? implode(', ', $groupNames) : '—'; return "{$areaLabel} · {$groupLabel}"; }; @endphp
A visibilidade depende da combinação área + grupo do utilizador com o escopo da bateria publicada.
php artisan route:cache se o problema persistir.
| Área | Grupo | Bateria visível | Diagnóstico |
|---|---|---|---|
| {{ $row->sectorName }} | {{ $row->trainingGroupName }} | @if($row->isVisible()) {{ $row->publishedBattery?->title }} @else — @endif | @if($row->isVisible()) Publicada e dentro da janela de datas. @else {{ $row->blockReasonLabel() }} @if($row->latestMatchingBattery && \Illuminate\Support\Facades\Route::has('training.question-batteries.show')) Ver bateria #{{ $row->latestMatchingBattery->id }} ({{ QuestionBatteryStatus::tryFrom((string) $row->latestMatchingBattery->status)?->label() ?? $row->latestMatchingBattery->status }}) @endif @endif |
Se o utilizador estiver na área/grupo errados, selecione a bateria desejada para copiar o escopo dela para este utilizador.