����JFIF��x�x����'
| Server IP : 78.140.185.180  /  Your IP : 216.73.216.38 Web Server : LiteSpeed System : Linux cpanel13.v.fozzy.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64 User : builderbox ( 1072) PHP Version : 7.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/builderbox/././././././www/common/Validation/Validators/  | 
Upload File :  | 
<?php
namespace Common\Validation\Validators;
use App\User;
use Illuminate\Contracts\Validation\Rule;
use Illuminate\Validation\Concerns\ValidatesAttributes;
class EmailsAreValid implements Rule
{
    use ValidatesAttributes;
    /**
     * @var int
     */
    private $maxEmails = 5;
    /**
     * @var bool
     */
    private $validateExistence;
    /**
     * @var string
     */
    private $validationMessage;
    public function __construct($validateExistence = true)
    {
        $this->validateExistence = $validateExistence;
    }
    /**
     * @inheritDoc
     */
    public function passes($attribute, $emails)
    {
        $invalidEmails = array_filter($emails, function($email) use($attribute) {
            return !$this->validateEmail($attribute, $email, []);
        });
        if ( ! empty($invalidEmails)) {
            $this->validationMessage = $this->invalidEmailsMessage($invalidEmails);
            return false;
        }
        if ($this->validateExistence) {
            $dbEmails = app(User::class)->whereIn('email', $emails)->pluck('email');
            $nonExistentEmails = array_filter($emails, function($email) use($dbEmails) {
                return !$dbEmails->contains($email);
            });
            if ( ! empty($nonExistentEmails)) {
                $this->validationMessage = $this->emailsDontExistMessage($nonExistentEmails);
                return false;
            }
        }
        return true;
    }
    private function invalidEmailsMessage(array $emails): string
    {
        $emailString = implode(', ', array_slice($emails, 0, $this->maxEmails));
        if (count($emails) > $this->maxEmails) {
            $emailString .= '...';
        }
        return trans("Invalid emails: :emails", ['emails' => $emailString]);
    }
    private function emailsDontExistMessage(array $emails): string
    {
        $emailString = implode(', ', array_slice($emails, 0, $this->maxEmails));
        if (count($emails) > $this->maxEmails) {
            $emailString .= '...';
        }
        return trans("Could not find users for emails: :emails", ['emails' => $emailString]);
    }
    /**
     * @inheritDoc
     */
    public function message()
    {
       return $this->validationMessage;
    }
}