user(); abort_unless( $this->permissionService->allows($user, Permission::ProjectRead, $project), 403, ); return Inertia::render('projects/Backlog', [ 'backlogTicketStatuses' => $project->ticketStatuses() ->whereNull('board_column_id') ->get(), 'canEditTickets' => $this->permissionService->allows($user, Permission::ProjectWrite, $project), 'canCreateTickets' => $this->permissionService->allows($user, Permission::ProjectWrite, $project), 'project' => $project, 'status' => session('status'), 'ticketStatusOptions' => $project->ticketStatuses() ->with('boardColumn') ->get(), 'ticketPriorities' => $project->ticketPriorities()->get(), 'ticketTypes' => $project->ticketTypes()->get(), 'tickets' => 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(), 'users' => User::query() ->orderBy('name') ->get(), ]); } public function store(StoreProjectTicketRequest $request, Project $project): RedirectResponse { $user = $request->user(); $validated = $request->validated(); abort_unless( $this->permissionService->allows($user, Permission::ProjectWrite, $project), 403, ); $ticket = $this->createProjectTicket->handle($project, $validated, $user); return to_route('projects.backlog.index', $project) ->with('status', "{$ticket->ticket_key} was added to the backlog."); } }