28 lines
762 B
PHP
28 lines
762 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Rules;
|
|
|
|
use Closure;
|
|
use Domain\Models\ValueObjects\IncoId as ValueObjectsIncoId;
|
|
use Illuminate\Contracts\Validation\ValidationRule;
|
|
|
|
class IncoId implements ValidationRule
|
|
{
|
|
/** @param \Closure(string, ?string=):\Illuminate\Translation\PotentiallyTranslatedString $fail */
|
|
public function validate(string $attribute, mixed $value, Closure $fail): void
|
|
{
|
|
try {
|
|
if (! is_numeric($value)) {
|
|
$fail(trans('validation.integer', compact('attribute')));
|
|
|
|
return;
|
|
}
|
|
|
|
new ValueObjectsIncoId(intval($value));
|
|
} catch (\DomainException) {
|
|
$fail(trans('validation.inco_id', compact('attribute')));
|
|
}
|
|
}
|
|
}
|