Refactor: Enforce type safety, fix close deadlock, implement assignee restrictions and notify admin fallbacks
This commit is contained in:
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user