vito/app/Web/Pages/Settings/Projects/Widgets/UpdateProject.php
2024-10-06 21:46:03 +02:00

67 lines
1.8 KiB
PHP

<?php
namespace App\Web\Pages\Settings\Projects\Widgets;
use App\Models\Project;
use Filament\Forms\Components\Actions\Action;
use Filament\Forms\Components\Section;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Concerns\InteractsWithForms;
use Filament\Forms\Contracts\HasForms;
use Filament\Notifications\Notification;
use Filament\Widgets\Widget;
class UpdateProject extends Widget implements HasForms
{
use InteractsWithForms;
protected static string $view = 'components.form';
public Project $project;
public string $name;
public function mount(Project $project): void
{
$this->project = $project;
$this->name = $project->name;
}
public function getFormSchema(): array
{
return [
Section::make()
->heading('Project Information')
->schema([
TextInput::make('name')
->name('name')
->label('Name')
->rules(\App\Actions\Projects\UpdateProject::rules($this->project)['name'])
->placeholder('Enter the project name'),
])
->footerActions([
Action::make('save')
->label('Save')
->action(fn () => $this->submit()),
]),
];
}
public function submit(): void
{
$this->authorize('update', $this->project);
$this->validate();
app(\App\Actions\Projects\UpdateProject::class)
->update($this->project, [
'name' => $this->name,
]);
Notification::make()
->title('Project updated successfully!')
->success()
->send();
}
}