*/ public function handle(Project $project, mixed $status = null): array { return [ 'channelOptions' => NotificationChannel::options(), 'eventTypeOptions' => NotificationEventType::options(), 'notificationActions' => NotificationActionResource::collection( $this->listProjectNotificationActions->handle($project), )->resolve(), 'project' => ProjectResource::make($project)->resolve(), 'status' => $status, 'templateVariables' => $this->templateVariables(), ]; } /** * @return array */ private function templateVariables(): array { return [ [ 'description' => 'Absolute ticket URL for the status change event.', 'value' => '$url', ], [ 'description' => 'Project ticket key such as CORE-42.', 'value' => '$ticket_key', ], [ 'description' => 'Ticket title from the changed ticket.', 'value' => '$ticket_title', ], [ 'description' => 'Project name that owns the ticket.', 'value' => '$project_name', ], [ 'description' => 'Origin status label before the move.', 'value' => '$status_from', ], [ 'description' => 'Destination status label after the move.', 'value' => '$status_to', ], [ 'description' => 'Actor name when the move has a known user.', 'value' => '$actor_name', ], ]; } }