Refactor: Enforce type safety, fix close deadlock, implement assignee restrictions and notify admin fallbacks
Some checks failed
Tests / PHP 8.3 (push) Has been cancelled
Tests / PHP 8.4 (push) Has been cancelled
Tests / PHP 8.5 (push) Has been cancelled

This commit is contained in:
2026-05-20 10:42:30 +00:00
parent 44a7f53deb
commit fc9158b928
16 changed files with 409 additions and 10 deletions

View File

@@ -24,6 +24,20 @@ class TransferService
]);
}
if ($newHandlerId !== null) {
$handler = User::find($newHandlerId);
if (! $handler) {
throw ValidationException::withMessages([
'new_assignee_id' => __('feedback.user_not_found'),
]);
}
if ($handler->department_id !== $toDepartment->id && $toDepartment->manager_id !== $handler->id) {
throw ValidationException::withMessages([
'new_assignee_id' => __('feedback.handler_not_in_department'),
]);
}
}
$fromDepartmentId = $feedback->current_department_id;
$fromDepartmentName = $feedback->currentDepartment?->name ?? 'N/A';
@@ -67,6 +81,12 @@ class TransferService
if ($manager) {
$manager->notify(new \App\Notifications\TicketTransferred($feedback, $log, $sender));
} else {
// No manager! Notify admins
$admins = User::whereHas('roles', fn ($q) => $q->where('name', 'admin'))->get();
foreach ($admins as $admin) {
$admin->notify(new \App\Notifications\TicketTransferred($feedback, $log, $sender));
}
}
}
}