isPrivileged($user) || ((bool) ($user->helpdesk_agent ?? false) && ((int) $ticket->agent_id === (int) $user->id || (int) $ticket->user_id === (int) $user->id)) || (int) $ticket->user_id === (int) $user->id; } public function create(User $user): bool { return $user->exists; } public function update(User $user, Ticket $ticket): bool { return $this->isPrivileged($user) || ((bool) ($user->helpdesk_agent ?? false) && (int) $ticket->agent_id === (int) $user->id); } public function comment(User $user, Ticket $ticket): bool { return $this->view($user, $ticket); } public function delete(User $user, Ticket $ticket): bool { return $this->isPrivileged($user); } private function isPrivileged(User $user): bool { if ((bool) ($user->helpdesk_admin ?? false)) { return true; } if (method_exists($user, 'isMpbaPlatformAdmin') && $user->isMpbaPlatformAdmin()) { return true; } return false; } }