File: /home/posscale/www/printmanager/app/Filament/Resources/TenantResource/Pages/CreateTenant.php
<?php
namespace App\Filament\Resources\TenantResource\Pages;
use App\Filament\Resources\TenantResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\CreateRecord;
use Filament\Support\Exceptions\Halt;
use Filament\Support\Facades\FilamentView;
use Throwable;
use Illuminate\Support\Str;
class CreateTenant extends CreateRecord
{
protected static string $resource = TenantResource::class;
public function create(bool $another = false): void
{
$this->authorizeAccess();
try {
$this->beginDatabaseTransaction();
$this->callHook('beforeValidate');
$data = $this->form->getState();
$this->callHook('afterValidate');
if(isset($data['reseller_name'])){
$data['id'] = Str::slug($data['reseller_name']);
}
$data = $this->mutateFormDataBeforeCreate($data);
$this->callHook('beforeCreate');
$this->record = $this->handleRecordCreation($data);
$this->form->model($this->getRecord())->saveRelationships();
$this->callHook('afterCreate');
$this->commitDatabaseTransaction();
} catch (Halt $exception) {
$exception->shouldRollbackDatabaseTransaction() ?
$this->rollBackDatabaseTransaction() :
$this->commitDatabaseTransaction();
return;
} catch (Throwable $exception) {
$this->rollBackDatabaseTransaction();
throw $exception;
}
$this->rememberData();
$this->getCreatedNotification()?->send();
if ($another) {
// Ensure that the form record is anonymized so that relationships aren't loaded.
$this->form->model($this->getRecord()::class);
$this->record = null;
$this->fillForm();
return;
}
$redirectUrl = $this->getRedirectUrl();
$this->redirect($redirectUrl, navigate: FilamentView::hasSpaMode() && is_app_url($redirectUrl));
}
}