feat: overhaul project workspace navigation
This commit is contained in:
@@ -3,7 +3,6 @@
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Actions\Permissions\PermissionService;
|
||||
use App\Actions\Projects\BuildProjectTicketMetadataSettingsPayload;
|
||||
use App\Actions\ProjectTicketMetadata\DeleteProjectTicketPriority;
|
||||
use App\Actions\ProjectTicketMetadata\DeleteProjectTicketType;
|
||||
use App\Actions\ProjectTicketMetadata\DeleteTicketFieldDefinition;
|
||||
@@ -18,6 +17,7 @@ use App\Actions\ProjectTicketMetadata\UpdateProjectTicketType;
|
||||
use App\Actions\ProjectTicketMetadata\UpdateTicketFieldDefinition;
|
||||
use App\Actions\ProjectTicketMetadata\UpdateTicketLinkType;
|
||||
use App\Enums\Permission;
|
||||
use App\Enums\ProjectSettingsSection;
|
||||
use App\Http\Requests\DestroyProjectTicketTypeRequest;
|
||||
use App\Http\Requests\StoreProjectNamedSettingRequest;
|
||||
use App\Http\Requests\StoreProjectTicketTypeRequest;
|
||||
@@ -35,13 +35,10 @@ use App\Models\TicketPriority;
|
||||
use App\Models\TicketType;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Inertia\Inertia;
|
||||
use Inertia\Response;
|
||||
|
||||
class ProjectTicketMetadataSettingsController extends Controller
|
||||
{
|
||||
public function __construct(
|
||||
private readonly BuildProjectTicketMetadataSettingsPayload $buildProjectTicketMetadataSettingsPayload,
|
||||
private readonly DeleteProjectTicketPriority $deleteProjectTicketPriority,
|
||||
private readonly DeleteProjectTicketType $deleteProjectTicketType,
|
||||
private readonly DeleteTicketFieldDefinition $deleteTicketFieldDefinition,
|
||||
@@ -58,23 +55,13 @@ class ProjectTicketMetadataSettingsController extends Controller
|
||||
private readonly UpdateTicketLinkType $updateTicketLinkType,
|
||||
) {}
|
||||
|
||||
public function show(Request $request, Project $project): Response
|
||||
{
|
||||
$this->abortUnlessCanManage($request, $project);
|
||||
|
||||
return Inertia::render(
|
||||
'projects/settings/Metadata',
|
||||
$this->buildProjectTicketMetadataSettingsPayload->handle($project, session('status'), session('error')),
|
||||
);
|
||||
}
|
||||
|
||||
public function update(UpdateProjectTicketMetadataSettings $request, Project $project): RedirectResponse
|
||||
{
|
||||
$this->abortUnlessCanManage($request, $project);
|
||||
|
||||
$this->updateProjectTicketMetadataSettings->handle($project, $request->validated());
|
||||
|
||||
return to_route('projects.settings.metadata', $project)
|
||||
return $this->settingsRedirect($project)
|
||||
->with('status', 'Settings have been updated.');
|
||||
}
|
||||
|
||||
@@ -84,7 +71,7 @@ class ProjectTicketMetadataSettingsController extends Controller
|
||||
|
||||
$ticketType = $this->storeProjectTicketType->handle($project, $request->validated());
|
||||
|
||||
return to_route('projects.settings.metadata', $project)
|
||||
return $this->settingsRedirect($project)
|
||||
->with('status', "{$ticketType->name} type was added.");
|
||||
}
|
||||
|
||||
@@ -97,7 +84,7 @@ class ProjectTicketMetadataSettingsController extends Controller
|
||||
|
||||
$ticketType = $this->updateProjectTicketType->handle($project, $ticketType, $request->validated());
|
||||
|
||||
return to_route('projects.settings.metadata', $project)
|
||||
return $this->settingsRedirect($project)
|
||||
->with('status', "{$ticketType->fresh()->name} type was updated.");
|
||||
}
|
||||
|
||||
@@ -116,12 +103,12 @@ class ProjectTicketMetadataSettingsController extends Controller
|
||||
);
|
||||
|
||||
if (! $result['deleted']) {
|
||||
return to_route('projects.settings.metadata', $project)
|
||||
return $this->settingsRedirect($project)
|
||||
->with('error', true)
|
||||
->with('status', $result['message']);
|
||||
}
|
||||
|
||||
return to_route('projects.settings.metadata', $project)
|
||||
return $this->settingsRedirect($project)
|
||||
->with('status', $result['message']);
|
||||
}
|
||||
|
||||
@@ -131,7 +118,7 @@ class ProjectTicketMetadataSettingsController extends Controller
|
||||
|
||||
$ticketPriority = $this->storeProjectTicketPriority->handle($project, $request->validated());
|
||||
|
||||
return to_route('projects.settings.metadata', $project)
|
||||
return $this->settingsRedirect($project)
|
||||
->with('status', "{$ticketPriority->name} priority was added.");
|
||||
}
|
||||
|
||||
@@ -144,7 +131,7 @@ class ProjectTicketMetadataSettingsController extends Controller
|
||||
|
||||
$ticketPriority = $this->updateProjectTicketPriority->handle($project, $ticketPriority, $request->validated());
|
||||
|
||||
return to_route('projects.settings.metadata', $project)
|
||||
return $this->settingsRedirect($project)
|
||||
->with('status', "{$ticketPriority->fresh()->name} priority was updated.");
|
||||
}
|
||||
|
||||
@@ -158,12 +145,12 @@ class ProjectTicketMetadataSettingsController extends Controller
|
||||
$result = $this->deleteProjectTicketPriority->handle($project, $ticketPriority);
|
||||
|
||||
if (! $result['deleted']) {
|
||||
return to_route('projects.settings.metadata', $project)
|
||||
return $this->settingsRedirect($project)
|
||||
->with('error', true)
|
||||
->with('status', $result['message']);
|
||||
}
|
||||
|
||||
return to_route('projects.settings.metadata', $project)
|
||||
return $this->settingsRedirect($project)
|
||||
->with('status', $result['message']);
|
||||
}
|
||||
|
||||
@@ -175,7 +162,7 @@ class ProjectTicketMetadataSettingsController extends Controller
|
||||
|
||||
$ticketFieldDefinition = $this->storeTicketFieldDefinition->handle($project, $request->validated());
|
||||
|
||||
return to_route('projects.settings.metadata', $project)
|
||||
return $this->settingsRedirect($project)
|
||||
->with('status', "{$ticketFieldDefinition->label} field was added.");
|
||||
}
|
||||
|
||||
@@ -188,7 +175,7 @@ class ProjectTicketMetadataSettingsController extends Controller
|
||||
|
||||
$ticketFieldDefinition = $this->updateTicketFieldDefinition->handle($project, $ticketFieldDefinition, $request->validated());
|
||||
|
||||
return to_route('projects.settings.metadata', $project)
|
||||
return $this->settingsRedirect($project)
|
||||
->with('status', "{$ticketFieldDefinition->fresh()->label} field was updated.");
|
||||
}
|
||||
|
||||
@@ -201,7 +188,7 @@ class ProjectTicketMetadataSettingsController extends Controller
|
||||
|
||||
$deletedLabel = $this->deleteTicketFieldDefinition->handle($project, $ticketFieldDefinition);
|
||||
|
||||
return to_route('projects.settings.metadata', $project)
|
||||
return $this->settingsRedirect($project)
|
||||
->with('status', "{$deletedLabel} field was removed.");
|
||||
}
|
||||
|
||||
@@ -211,7 +198,7 @@ class ProjectTicketMetadataSettingsController extends Controller
|
||||
|
||||
$ticketLinkType = $this->storeTicketLinkType->handle($project, $request->validated());
|
||||
|
||||
return to_route('projects.settings.metadata', $project)
|
||||
return $this->settingsRedirect($project)
|
||||
->with('status', "{$ticketLinkType->label} link type was added.");
|
||||
}
|
||||
|
||||
@@ -225,7 +212,7 @@ class ProjectTicketMetadataSettingsController extends Controller
|
||||
|
||||
$ticketLinkType = $this->updateTicketLinkType->handle($project, $ticketLinkType, $request->validated());
|
||||
|
||||
return to_route('projects.settings.metadata', $project)
|
||||
return $this->settingsRedirect($project)
|
||||
->with('status', "{$ticketLinkType->fresh()->label} link type was updated.");
|
||||
}
|
||||
|
||||
@@ -238,7 +225,7 @@ class ProjectTicketMetadataSettingsController extends Controller
|
||||
|
||||
$deletedLabel = $this->deleteTicketLinkType->handle($project, $ticketLinkType);
|
||||
|
||||
return to_route('projects.settings.metadata', $project)
|
||||
return $this->settingsRedirect($project)
|
||||
->with('status', "{$deletedLabel} link type was removed.");
|
||||
}
|
||||
|
||||
@@ -249,4 +236,12 @@ class ProjectTicketMetadataSettingsController extends Controller
|
||||
403,
|
||||
);
|
||||
}
|
||||
|
||||
private function settingsRedirect(Project $project): RedirectResponse
|
||||
{
|
||||
return to_route('projects.settings.index', [
|
||||
'project' => $project,
|
||||
'section' => ProjectSettingsSection::Metadata->value,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user