mirror of
https://github.com/vitodeploy/vito.git
synced 2025-04-20 18:31:36 +00:00
85 lines
2.5 KiB
PHP
85 lines
2.5 KiB
PHP
<?php
|
|
|
|
namespace App\Web\Pages\Settings\Projects;
|
|
|
|
use App\Actions\Projects\DeleteProject;
|
|
use App\Models\Project;
|
|
use App\Web\Components\Page;
|
|
use App\Web\Pages\Settings\Projects\Widgets\AddUser;
|
|
use App\Web\Pages\Settings\Projects\Widgets\ProjectUsersList;
|
|
use App\Web\Pages\Settings\Projects\Widgets\UpdateProject;
|
|
use Exception;
|
|
use Filament\Actions\Action;
|
|
use Filament\Notifications\Notification;
|
|
use Illuminate\Contracts\Support\Htmlable;
|
|
|
|
class Settings extends Page
|
|
{
|
|
protected static ?string $slug = 'settings/projects/{project}';
|
|
|
|
protected static ?string $title = 'Project Settings';
|
|
|
|
protected static bool $shouldRegisterNavigation = false;
|
|
|
|
public Project $project;
|
|
|
|
public function mount(): void
|
|
{
|
|
$this->authorize('update', $this->project);
|
|
}
|
|
|
|
public function getWidgets(): array
|
|
{
|
|
return [
|
|
[
|
|
UpdateProject::class,
|
|
['project' => $this->project],
|
|
],
|
|
[
|
|
AddUser::class,
|
|
['project' => $this->project],
|
|
],
|
|
[
|
|
ProjectUsersList::class,
|
|
['project' => $this->project],
|
|
],
|
|
];
|
|
}
|
|
|
|
public function getTitle(): string|Htmlable
|
|
{
|
|
return 'Project Settings';
|
|
}
|
|
|
|
protected function getHeaderActions(): array
|
|
{
|
|
return [
|
|
Action::make('delete')
|
|
->record($this->project)
|
|
->color('danger')
|
|
->label('Delete Project')
|
|
->icon('heroicon-o-trash')
|
|
->modalHeading('Delete Project')
|
|
->modalDescription('Are you sure you want to delete this project? This action will delete all associated data and cannot be undone.')
|
|
->requiresConfirmation()
|
|
->action(function (Project $record) {
|
|
try {
|
|
app(DeleteProject::class)->delete(auth()->user(), $record);
|
|
|
|
Notification::make()
|
|
->success()
|
|
->title('Project deleted successfully.')
|
|
->send();
|
|
|
|
$this->redirect(Index::getUrl());
|
|
} catch (Exception $e) {
|
|
Notification::make()
|
|
->title($e->getMessage())
|
|
->danger()
|
|
->send();
|
|
}
|
|
}),
|
|
];
|
|
}
|
|
}
|