singleloginsystem/app/Livewire/Forms/StoreConnectionProviderForm.php

51 lines
1.2 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Livewire\Forms;
use App\Data\ConnectedApp\ConnectionProviderData;
use App\Models\ConnectionProvider;
use Closure;
use Illuminate\Support\Str;
use Livewire\Form;
class StoreConnectionProviderForm extends Form
{
public string $name = '';
public ?int $connectionProviderId = null;
public function set(ConnectionProviderData $provider): void
{
$this->connectionProviderId = $provider->id;
$this->name = $provider->name;
}
public function rules(): array
{
return [
'name' => [
'required',
'string',
'min:3',
'max:255',
function (string $attribute, mixed $value, Closure $fail): void {
$slug = Str::slug($value);
$query = ConnectionProvider::query()
->where('slug', $slug);
if ($this->connectionProviderId) {
$query->where('id', '!=', $this->connectionProviderId);
}
if ($query->exists()) {
$fail("The name '{$value}' is already taken.");
}
},
],
];
}
}