*/ public function handle(Project $project, User $user, mixed $status = null): array { $canManageTickets = $this->permissionService->allows($user, Permission::ProjectWrite, $project); return [ 'backlogTicketStatuses' => TicketStatusResource::collection( $project->ticketStatuses() ->whereNull('board_column_id') ->get(), )->resolve(), 'canCreateTickets' => $canManageTickets, 'canEditTickets' => $canManageTickets, 'canManageProject' => $this->permissionService->allows($user, Permission::ProjectAdmin, $project), 'project' => ProjectResource::make($project)->resolve(), 'status' => $status, 'ticketStatusOptions' => TicketStatusResource::collection( $project->ticketStatuses() ->with('boardColumn') ->get(), )->resolve(), 'ticketPriorities' => TicketPriorityResource::collection($project->ticketPriorities()->get())->resolve(), 'ticketTypes' => TicketTypeResource::collection($project->ticketTypes()->get())->resolve(), 'tickets' => TicketResource::collection( Ticket::query() ->with([ 'ticketPriority', 'ticketStatus.allowedTargetStatuses.boardColumn', 'ticketStatus.boardColumn', 'ticketType', ]) ->where('project_id', $project->id) ->whereHas('ticketStatus', fn ($query) => $query->whereNull('board_column_id')) ->orderByDesc('sequence_number') ->get(), )->resolve(), 'users' => UserResource::collection( User::query() ->visibleToProject($project) ->orderBy('name') ->get(), )->resolve(), ]; } }