mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-11-16 13:07:14 +01:00
138 lines
4.5 KiB
PHP
138 lines
4.5 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Xentral\Modules\Hubspot\Validators;
|
||
|
|
||
|
use Xentral\Modules\Hubspot\Exception\HubspotException;
|
||
|
|
||
|
final class ContactValidator implements ValidatorInterface
|
||
|
{
|
||
|
|
||
|
/** @var string */
|
||
|
private $rules;
|
||
|
private $data;
|
||
|
|
||
|
public function __construct($rules = 'default')
|
||
|
{
|
||
|
$this->rules = $rules;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return array
|
||
|
*/
|
||
|
public function validatorRuleDefault()
|
||
|
{
|
||
|
return [
|
||
|
'email' => [
|
||
|
'rule' => static function ($data) {
|
||
|
return !empty($data['email']) && is_string($data['email']);
|
||
|
},
|
||
|
'required' => false,
|
||
|
'message' => sprintf('%s should be a non empty String', 'Email'),
|
||
|
],
|
||
|
'firstname' => [
|
||
|
'rule' => static function ($data) {
|
||
|
return !empty($data['firstname']) && is_string($data['firstname']);
|
||
|
},
|
||
|
'required' => false,
|
||
|
'message' => sprintf('%s should be a non empty String', 'First name'),
|
||
|
],
|
||
|
'lastname' => [
|
||
|
'rule' => static function ($data) {
|
||
|
return !empty($data['lastname']) && is_string($data['lastname']);
|
||
|
},
|
||
|
'required' => false,
|
||
|
'message' => sprintf('%s should be a non empty String', 'Last name'),
|
||
|
],
|
||
|
|
||
|
'website' => [
|
||
|
'rule' => static function ($data) {
|
||
|
return !empty($data['website']) && is_string($data['website']);
|
||
|
},
|
||
|
'required' => false,
|
||
|
'message' => sprintf('%s should be a non empty String', 'Website'),
|
||
|
],
|
||
|
|
||
|
'company' => [
|
||
|
'rule' => static function ($data) {
|
||
|
return !empty($data['company']) && is_string($data['company']);
|
||
|
},
|
||
|
'required' => false,
|
||
|
'message' => sprintf('%s should be a non empty String', 'company'),
|
||
|
],
|
||
|
|
||
|
'phone' => [
|
||
|
'rule' => static function ($data) {
|
||
|
return !empty($data['phone']) && is_string($data['phone']);
|
||
|
},
|
||
|
'required' => false,
|
||
|
'message' => sprintf('%s should be a non empty String', 'phone'),
|
||
|
],
|
||
|
|
||
|
'address' => [
|
||
|
'rule' => static function ($data) {
|
||
|
return !empty($data['address']) && is_string($data['address']);
|
||
|
},
|
||
|
'required' => false,
|
||
|
'message' => sprintf('%s should be a non empty String', 'Address'),
|
||
|
],
|
||
|
|
||
|
'city' => [
|
||
|
'rule' => static function ($data) {
|
||
|
return !empty($data['city']) && is_string($data['city']);
|
||
|
},
|
||
|
'required' => false,
|
||
|
'message' => sprintf('%s should be a non empty String', 'city'),
|
||
|
],
|
||
|
'state' => [
|
||
|
'rule' => static function ($data) {
|
||
|
return !empty($data['state']) && is_string($data['state']);
|
||
|
},
|
||
|
'required' => false,
|
||
|
'message' => sprintf('%s should be a non empty String', 'state'),
|
||
|
],
|
||
|
'zip' => [
|
||
|
'rule' => static function ($data) {
|
||
|
return !empty($data['zip']) && is_string($data['zip']);
|
||
|
},
|
||
|
'required' => false,
|
||
|
'message' => sprintf('%s should be a non empty String', 'zip'),
|
||
|
],
|
||
|
];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param array $data
|
||
|
*
|
||
|
* @return bool
|
||
|
*/
|
||
|
public function isValid($data = [])
|
||
|
{
|
||
|
$this->data = $data;
|
||
|
$validatorMethod = 'validatorRule' . ucfirst($this->rules);
|
||
|
if (!method_exists($this, $validatorMethod)) {
|
||
|
throw new HubspotException(sprintf('Validator method %s is missing', $validatorMethod));
|
||
|
}
|
||
|
|
||
|
$rules = $this->{$validatorMethod}();
|
||
|
foreach ($rules as $field => $rule) {
|
||
|
if (array_key_exists('rule', $rule)) {
|
||
|
$validation = call_user_func($rule['rule'], $this->data);
|
||
|
if (!$validation && (!empty($this->data[$field]) || !empty($rule['required']))) {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
public function getData()
|
||
|
{
|
||
|
return array_filter($this->data, static function ($value) {
|
||
|
return $value !== null && trim($value) !== '';
|
||
|
});
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|