projectPermissionService->userCanViewProject($request->user(), $project), 403, ); return Inertia::render('projects/Board', [ 'boardColumns' => $project->boardColumns() ->with([ 'tickets' => fn ($query) => $query ->with(['ticketPriority', 'ticketType']), ]) ->get(), 'canEditTickets' => $this->projectPermissionService->userHasPermission($request->user(), $project, 'edit'), 'project' => $project, 'status' => session('status'), ]); } public function move( MoveProjectTicketRequest $request, Project $project, Ticket $ticket, ): RedirectResponse { abort_unless( $this->projectPermissionService->userHasPermission($request->user(), $project, 'edit'), 403, ); $destinationColumn = $project->boardColumns() ->find($request->boardColumnId()); $originBoardColumnId = $ticket->board_column_id; $originLabel = $ticket->boardColumn?->name ?? 'Backlog'; $destinationLabel = $destinationColumn?->name ?? 'Backlog'; if ($ticket->board_column_id === $request->boardColumnId()) { return to_route($request->redirectRouteName(), $project) ->with('status', "{$ticket->ticket_key} already belongs to {$destinationLabel}."); } $ticket->update([ 'board_column_id' => $destinationColumn?->id, ]); $this->createTicketWorklogEntry->handle( $ticket->fresh(), $request->user(), 'status_changed', "Moved from {$originLabel} to {$destinationLabel}.", [ 'from' => [ 'board_column_id' => $originBoardColumnId, 'label' => $originLabel, ], 'to' => [ 'board_column_id' => $destinationColumn?->id, 'label' => $destinationLabel, ], ], ); return to_route($request->redirectRouteName(), $project) ->with('status', "{$ticket->ticket_key} moved to {$destinationLabel}."); } }