Files
einundzwanzig-portal/app/Rules/UniqueAttendeeName.php
Shift 5776b01d15 Apply Laravel coding style
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).
2023-02-19 18:05:16 +01:00

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.');
}
}
}