feat: overhaul project workspace navigation
This commit is contained in:
@@ -10,8 +10,8 @@ use App\Actions\ProjectBoard\StoreTicketStatus;
|
||||
use App\Actions\ProjectBoard\UpdateBoardColumn;
|
||||
use App\Actions\ProjectBoard\UpdateTicketStatus;
|
||||
use App\Actions\ProjectBoard\UpdateTicketStatusTransitions;
|
||||
use App\Actions\Projects\BuildProjectBoardSettingsPayload;
|
||||
use App\Enums\Permission;
|
||||
use App\Enums\ProjectSettingsSection;
|
||||
use App\Http\Requests\StoreBoardColumnRequest;
|
||||
use App\Http\Requests\StoreTicketStatusRequest;
|
||||
use App\Http\Requests\UpdateBoardColumnRequest;
|
||||
@@ -22,13 +22,10 @@ use App\Models\Project;
|
||||
use App\Models\TicketStatus;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Inertia\Inertia;
|
||||
use Inertia\Response;
|
||||
|
||||
class ProjectBoardSettingsController extends Controller
|
||||
{
|
||||
public function __construct(
|
||||
private readonly BuildProjectBoardSettingsPayload $buildProjectBoardSettingsPayload,
|
||||
private readonly DeleteBoardColumn $deleteBoardColumn,
|
||||
private readonly DeleteTicketStatus $deleteTicketStatus,
|
||||
private readonly PermissionService $permissionService,
|
||||
@@ -39,19 +36,6 @@ class ProjectBoardSettingsController extends Controller
|
||||
private readonly UpdateTicketStatusTransitions $updateTicketStatusTransitions,
|
||||
) {}
|
||||
|
||||
public function show(Request $request, Project $project): Response
|
||||
{
|
||||
abort_unless(
|
||||
$this->permissionService->allows($request->user(), Permission::ProjectAdmin, $project),
|
||||
403,
|
||||
);
|
||||
|
||||
return Inertia::render(
|
||||
'projects/settings/Board',
|
||||
$this->buildProjectBoardSettingsPayload->handle($project, session('status')),
|
||||
);
|
||||
}
|
||||
|
||||
public function store(
|
||||
StoreBoardColumnRequest $request,
|
||||
Project $project,
|
||||
@@ -62,7 +46,7 @@ class ProjectBoardSettingsController extends Controller
|
||||
);
|
||||
$boardColumn = $this->storeBoardColumn->handle($project, $request->validated());
|
||||
|
||||
return to_route('projects.settings.board', $project)
|
||||
return $this->settingsRedirect($project)
|
||||
->with('status', "{$boardColumn->name} was added to the board workflow.");
|
||||
}
|
||||
|
||||
@@ -77,7 +61,7 @@ class ProjectBoardSettingsController extends Controller
|
||||
);
|
||||
$boardColumn = $this->updateBoardColumn->handle($project, $boardColumn, $request->validated());
|
||||
|
||||
return to_route('projects.settings.board', $project)
|
||||
return $this->settingsRedirect($project)
|
||||
->with('status', "{$boardColumn->fresh()->name} was updated.");
|
||||
}
|
||||
|
||||
@@ -93,7 +77,7 @@ class ProjectBoardSettingsController extends Controller
|
||||
|
||||
$deletedName = $this->deleteBoardColumn->handle($project, $boardColumn);
|
||||
|
||||
return to_route('projects.settings.board', $project)
|
||||
return $this->settingsRedirect($project)
|
||||
->with('status', "{$deletedName} was removed from the board workflow.");
|
||||
}
|
||||
|
||||
@@ -107,7 +91,7 @@ class ProjectBoardSettingsController extends Controller
|
||||
);
|
||||
$ticketStatus = $this->storeTicketStatus->handle($project, $request->validated());
|
||||
|
||||
return to_route('projects.settings.board', $project)
|
||||
return $this->settingsRedirect($project)
|
||||
->with('status', "{$ticketStatus->name} was added to {$this->statusContextLabel($ticketStatus)}.");
|
||||
}
|
||||
|
||||
@@ -122,7 +106,7 @@ class ProjectBoardSettingsController extends Controller
|
||||
);
|
||||
$ticketStatus = $this->updateTicketStatus->handle($ticketStatus, $request->validated());
|
||||
|
||||
return to_route('projects.settings.board', $project)
|
||||
return $this->settingsRedirect($project)
|
||||
->with('status', "{$ticketStatus->fresh()->name} was updated.");
|
||||
}
|
||||
|
||||
@@ -138,7 +122,7 @@ class ProjectBoardSettingsController extends Controller
|
||||
|
||||
$result = $this->deleteTicketStatus->handle($project, $ticketStatus);
|
||||
|
||||
return to_route('projects.settings.board', $project)
|
||||
return $this->settingsRedirect($project)
|
||||
->with('status', "{$result['deleted_name']} was removed from {$result['context_label']}.");
|
||||
}
|
||||
|
||||
@@ -153,7 +137,7 @@ class ProjectBoardSettingsController extends Controller
|
||||
);
|
||||
$this->updateTicketStatusTransitions->handle($ticketStatus, $request->validated());
|
||||
|
||||
return to_route('projects.settings.board', $project)
|
||||
return $this->settingsRedirect($project)
|
||||
->with('status', "{$ticketStatus->name} move targets were updated.");
|
||||
}
|
||||
|
||||
@@ -161,4 +145,12 @@ class ProjectBoardSettingsController extends Controller
|
||||
{
|
||||
return $ticketStatus->boardColumn?->name ?? 'Backlog';
|
||||
}
|
||||
|
||||
private function settingsRedirect(Project $project): RedirectResponse
|
||||
{
|
||||
return to_route('projects.settings.index', [
|
||||
'project' => $project,
|
||||
'section' => ProjectSettingsSection::Board->value,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user