@extends('layouts.internal') @section('title', $aggregate->display_name.' · PLOCAL Evaluation') @section('content') ← Active Nominee Evaluations

PLOCAL Evaluation · Policy {{ $aggregate->effective_version }}

{{ $aggregate->display_name }}

{{ $aggregate->submitted_city_text }}, {{ $aggregate->submitted_state_text }} · Nominee {{ $aggregate->nominated_at }}

{{ str($aggregate->window_status)->title() }}
Evaluation window
Website
{{ $aggregate->website_url ?: 'Not recorded' }}
Policy
{{ $aggregate->policy_code }} · {{ $aggregate->effective_version }}

Internal-only evaluation

Enter one Digital, Service and Trust rating from 0.00–10.00. The server uses the bound policy and exact integer calculator. This page creates no Public Voting, Qualification, Candidate, Recognition, Award or public Profile projection.

View submitted website screenshot

Internal Candidate gate

After the 96-hour window closes, a finalized evaluation, current public qualification, policy thresholds, and a ReviewerAssessment recommending Business of the Day are required. This creates an internal Candidate only; it does not make a final decision or issue an award.

@csrf
@if($canModerateVotes)

Public Voting

Ballot moderation

Each ballot is fully pseudonymous by design — no voter identity or rating value is ever stored, only which dimensions were cast. Invalidating a ballot re-checks this Nominee's public qualification against the policy's vote target immediately.

@if(count($ballots))
@foreach($ballots as $ballot) @endforeach
Voting ballots for this Nominee
BallotSubmittedDimensions castStateAction
{{ $ballot['public_id'] }}{{ $ballot['submitted_at'] }}{{ collect($ballot['dimensions'])->map(fn($d) => str($d)->title())->join(', ') ?: 'None' }}{{ str($ballot['validity_state'])->title() }}@if($ballot['invalidated_at']) · {{ $ballot['invalidated_at'] }}@endif @if($ballot['validity_state'] !== 'invalidated')
@csrf
@else — @endif
@else

No ballots have been cast for this Nominee yet.

@endif
@endif

Submission context

Business information

Services
{{ $aggregate->main_services_text ?: 'Not recorded' }}
Phone
{{ $aggregate->phone ?: 'Not recorded' }}
Public email
{{ $aggregate->email ?: 'Not recorded' }}
Acceptance checks
@if($aggregate->submission_review_public_id)Recorded on the accepted SubmissionReview; provenance is not rewritten here.@else No SubmissionReview exists for this Nominee; this Submission entered Evaluation through paid activation. @endif
@php($current = collect($dimensions)->keyBy('dimension'))
@csrf

Server-authoritative inputs

Digital · Service · Trust

Use the guidance from the approved evaluation policy. Do not enter sub-scores or vote counts here.

@foreach(['digital' => 'Digital', 'service' => 'Service', 'trust' => 'Trust'] as $code => $label)
{{ $label }}

{{ $code === 'digital' ? 'Website quality, mobile experience, navigation, functionality, content, images/portfolio and overall digital presentation.' : ($code === 'service' ? 'Service clarity, calls to action, contact visibility, quote/booking flow, service areas, hours and ease of communication.' : 'Reputation, reviews, proof of work, business information, local presence, transparency and applicable credentials.') }}

0.00–10.00, maximum two decimal places. Server validation is authoritative.
@endforeach
Internal only.
@if($internalUser->isAdministrator() && $aggregate->window_status === 'closed')

Administrator FinalDecision

Final outcome selection is reserved for PLOCAL Administrators. The server revalidates all evidence, policy thresholds, qualification and award-period rules.

@csrf
@endif @endsection