Files
animethemes-server/app/Rules/Api/DistinctIgnoringDirectionRule.php
T
paranarimasu fd2cebe3cf chore: address deprecations to validation rules in Laravel 10 (#584)
* chore: address deprecations to validation rules in Laravel 10

* style: fix StyleCI findings
2023-06-05 01:01:49 -05:00

42 lines
1.0 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Rules\Api;
use Closure;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Support\Str;
use Illuminate\Translation\PotentiallyTranslatedString;
/**
* Class DistinctIgnoringDirectionRule.
*/
class DistinctIgnoringDirectionRule implements ValidationRule
{
/**
* Run the validation rule.
*
* @param string $attribute
* @param mixed $value
* @param Closure(string): PotentiallyTranslatedString $fail
* @return void
*/
public function validate(string $attribute, mixed $value, Closure $fail): void
{
$values = Str::of($value)->explode(',');
$duplicateValues = $values->duplicates(function (mixed $sort) {
if (is_string($sort) && Str::startsWith($sort, '-')) {
return Str::replaceFirst('-', '', $sort);
}
return $sort;
});
if ($duplicateValues->isNotEmpty()) {
$fail(__('validation.distinct'));
}
}
}