Add notification preferences and admin governance

This commit is contained in:
Codex
2026-07-10 18:33:39 -05:00
parent eb9456e1bd
commit de9e473d3b
28 changed files with 734 additions and 20 deletions
@@ -3,6 +3,7 @@
namespace App\Http\Controllers;
use App\Models\WorkOrder;
use App\Models\AuditLog;
use App\Models\WorkOrderChangeRequest;
use App\Models\WorkOrderContactEvent;
use App\Notifications\ExchangeEventNotification;
@@ -113,6 +114,10 @@ class WorkOrderController extends Controller
$workOrder->update($updates);
AuditLog::record($request, 'work_order.transitioned', $workOrder, [
'status' => $status,
]);
$recipient = $request->user()->id === $workOrder->buyer_id
? $workOrder->provider
: $workOrder->buyer;
@@ -186,6 +191,11 @@ class WorkOrderController extends Controller
'status' => 'open',
]);
AuditLog::record($request, 'work_order.change_requested', $changeRequest, [
'work_order_id' => $workOrder->id,
'reason_code' => $changeRequest->reason_code,
]);
$recipient = $request->user()->id === $workOrder->buyer_id
? $workOrder->provider
: $workOrder->buyer;
@@ -218,6 +228,10 @@ class WorkOrderController extends Controller
'responded_at' => now(),
]);
AuditLog::record($request, 'work_order.change_resolved', $changeRequest, [
'status' => $data['status'],
]);
return redirect()->route('work-orders.show', $workOrder)->with('status', 'Change request updated.');
}
@@ -239,6 +253,11 @@ class WorkOrderController extends Controller
'attempted_at' => $data['attempted_at'] ?? now(),
]);
AuditLog::record($request, 'work_order.contact_event', $event, [
'work_order_id' => $workOrder->id,
'event_type' => $event->event_type,
]);
$workOrder->buyer->notify(new ExchangeEventNotification(
WorkOrderContactEvent::EVENT_TYPES[$event->event_type] ?? 'Contact event logged',
$request->user()->name.' logged '.str_replace('_', ' ', $event->event_type).' on '.$workOrder->jobPost->title.'.',