Phase 5 reputation governance

This commit is contained in:
Codex
2026-07-10 13:50:15 -05:00
parent 926455bb62
commit 6ce2b294d0
13 changed files with 1155 additions and 16 deletions
+38
View File
@@ -36,5 +36,43 @@
@endforeach
</div>
</section>
<section class="rounded border bg-white p-6">
<h3 class="font-semibold">Reported reviews</h3>
<p class="mt-1 text-sm text-gray-600">Reported reviews stay visible as moderation records. Hiding a review removes it from normal participant view without deleting the audit trail.</p>
<div class="mt-4 space-y-4">
@forelse ($reportedReviews as $review)
<div class="rounded border bg-gray-50 p-4 text-sm">
<div class="flex flex-col gap-3 lg:flex-row lg:items-start lg:justify-between">
<div>
<p class="font-semibold">
<a class="text-indigo-600" href="{{ route('work-orders.show', $review->workOrder) }}">{{ $review->workOrder->jobPost->title }}</a>
</p>
<p class="mt-1 text-gray-600">
{{ $review->reviewer->name }} rated {{ $review->reviewee->name }} {{ $review->rating }}/5
| reported by {{ $review->reportedBy?->name ?? 'unknown' }}
| {{ $review->reported_at?->diffForHumans() }}
</p>
<p class="mt-2 whitespace-pre-line text-gray-700">{{ $review->report_reason }}</p>
</div>
<form method="POST" action="{{ route('reviews.moderate', $review) }}" class="grid min-w-72 gap-2">
@csrf
@method('PATCH')
<label class="text-xs font-semibold text-gray-600" for="moderation_status_{{ $review->id }}">Moderation status</label>
<select id="moderation_status_{{ $review->id }}" name="moderation_status" class="rounded-md border-gray-300 text-sm">
@foreach (\App\Models\Review::MODERATION_STATUSES as $status)
<option value="{{ $status }}" @selected($review->moderation_status === $status)>{{ ucfirst($status) }}</option>
@endforeach
</select>
<textarea name="moderation_notes" rows="2" class="rounded-md border-gray-300 text-sm" placeholder="Moderation notes">{{ $review->moderation_notes }}</textarea>
<x-primary-button>Save moderation</x-primary-button>
</form>
</div>
</div>
@empty
<p class="text-sm text-gray-600">No reported reviews are waiting for moderation.</p>
@endforelse
</div>
</section>
</div>
</x-app-layout>