Files
panel-pelican-dev/app/Filament/Admin/Resources/DatabaseHostResource/Pages/EditDatabaseHost.php

70 lines
2.2 KiB
PHP
Raw Normal View History

2024-04-09 18:45:01 -04:00
<?php
namespace App\Filament\Admin\Resources\DatabaseHostResource\Pages;
2024-04-09 18:45:01 -04:00
use App\Filament\Admin\Resources\DatabaseHostResource;
2024-06-03 03:54:33 +02:00
use App\Models\DatabaseHost;
use App\Services\Databases\Hosts\HostUpdateService;
use App\Traits\Filament\CanCustomizeHeaderActions;
use App\Traits\Filament\CanCustomizeHeaderWidgets;
use Filament\Actions\Action;
use Filament\Actions\ActionGroup;
use Filament\Actions\DeleteAction;
use Filament\Notifications\Notification;
use Filament\Resources\Pages\EditRecord;
use Filament\Support\Exceptions\Halt;
use Illuminate\Database\Eloquent\Model;
use PDOException;
2024-04-09 18:45:01 -04:00
class EditDatabaseHost extends EditRecord
{
use CanCustomizeHeaderActions;
use CanCustomizeHeaderWidgets;
2024-04-09 18:45:01 -04:00
protected static string $resource = DatabaseHostResource::class;
2024-10-19 17:22:03 -04:00
private HostUpdateService $hostUpdateService;
2024-10-20 11:41:46 -04:00
public function boot(HostUpdateService $hostUpdateService): void
2024-10-19 17:22:03 -04:00
{
$this->hostUpdateService = $hostUpdateService;
}
/** @return array<Action|ActionGroup> */
protected function getDefaultHeaderActions(): array
2024-04-09 18:45:01 -04:00
{
return [
DeleteAction::make()
2025-02-27 09:28:00 -05:00
->label(fn (DatabaseHost $databaseHost) => $databaseHost->databases()->count() > 0 ? trans('admin/databasehost.delete_help') : trans('filament-actions::delete.single.modal.actions.delete.label'))
2024-06-03 04:09:36 +02:00
->disabled(fn (DatabaseHost $databaseHost) => $databaseHost->databases()->count() > 0),
$this->getSaveFormAction()->formId('form'),
2024-04-09 18:45:01 -04:00
];
}
2024-05-10 16:15:10 -04:00
protected function getFormActions(): array
{
return [];
}
2024-10-19 21:00:11 -04:00
protected function handleRecordUpdate(Model $record, array $data): Model
{
2024-10-19 21:16:33 -04:00
if (!$record instanceof DatabaseHost) {
2024-10-19 21:00:11 -04:00
return $record;
}
try {
return $this->hostUpdateService->handle($record, $data);
} catch (PDOException $exception) {
Notification::make()
2025-02-27 09:28:00 -05:00
->title(trans('admin/databasehost.error'))
->body($exception->getMessage())
->color('danger')
->icon('tabler-database')
->danger()
->send();
throw new Halt();
}
}
2024-04-09 18:45:01 -04:00
}