isPrivileged($user) || ($user->isHelpdeskAgent() && ((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 true; } public function update(User $user, Ticket $ticket): bool { return $this->isPrivileged($user) || ($user->isHelpdeskAgent() && (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 { return $user->isHelpdeskAdmin(); } }