mirror of
https://github.com/Einundzwanzig-Podcast/einundzwanzig-portal.git
synced 2025-12-11 06:46:47 +00:00
Shift automatically applies the Laravel coding style - which uses the PSR-12 coding style as a base with some minor additions. You may customize the code style applied by configuring [Pint](https://laravel.com/docs/pint), [PHP CS Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer), or [PHP CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer) for your project root. For more information on customizing the code style applied by Shift, [watch this short video](https://laravelshift.com/videos/shift-code-style).
47 lines
1.4 KiB
PHP
47 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Rules;
|
|
|
|
use App\Models\MeetupEvent;
|
|
use Illuminate\Contracts\Validation\InvokableRule;
|
|
|
|
class UniqueAttendeeName implements InvokableRule
|
|
{
|
|
/**
|
|
* Create a new rule instance.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function __construct(public MeetupEvent $meetupEvent)
|
|
{
|
|
//
|
|
}
|
|
|
|
public function __invoke($attribute, $value, $fail)
|
|
{
|
|
$this->meetupEvent->refresh();
|
|
$attendees = collect($this->meetupEvent->attendees);
|
|
$mightAttendees = collect($this->meetupEvent->might_attendees);
|
|
$isInAttendees = $attendees
|
|
->contains(fn ($v) => str($v)
|
|
->after('|')
|
|
->lower()
|
|
->toString() === str($value)
|
|
->lower()
|
|
->toString());
|
|
$isInMightAttendees = $mightAttendees
|
|
->contains(fn ($v) => str($v)
|
|
->after('|')
|
|
->lower()
|
|
->toString() === str($value)
|
|
->lower()
|
|
->toString());
|
|
if ($isInAttendees) {
|
|
$fail('The name is already taken.');
|
|
}
|
|
if ($isInMightAttendees) {
|
|
$fail('The name is already taken.');
|
|
}
|
|
}
|
|
}
|