Skip to content

Commit

Permalink
[ENH] Replace array message with a class module
Browse files Browse the repository at this point in the history
  • Loading branch information
bim-g committed Jul 25, 2023
1 parent 77e50b9 commit a2e0f59
Show file tree
Hide file tree
Showing 8 changed files with 255 additions and 202 deletions.
73 changes: 73 additions & 0 deletions src/MessageErrorBuilder.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
<?php
/*
* Copyright (c) 2023. Wepesi validation.
* @author Boss Ibrahim Mussa
*/

namespace Wepesi\App;

/**
*
*/
final class MessageErrorBuilder
{

/**
* @var array
*/
private array $items;

/**
*
*/
public function __construct(){
$this->items = [];
}

/**
* @param string $value
* @return $this
*/
public function type(string $value): MessageErrorBuilder
{
$this->items['type'] = $value;
return $this;
}

/**
* @param string $value
* @return $this
*/
public function message(string $value): MessageErrorBuilder
{
$this->items['message'] = $value;
return $this;
}

/**
* @param string $value
* @return $this
*/
public function label(string $value): MessageErrorBuilder
{
$this->items['label'] = $value;
return $this;
}

/**
* @param string $value
* @return $this
*/
public function limit(string $value): MessageErrorBuilder
{
$this->items['limit'] = $value;
return $this;
}

/**
* @return array
*/
public function generate(){
return $this->items;
}
}
45 changes: 24 additions & 21 deletions src/Providers/ValidatorProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

namespace Wepesi\App\Providers;

use Wepesi\App\MessageErrorBuilder;
use Wepesi\App\Providers\Contracts\Contracts;

/**
Expand All @@ -29,13 +30,18 @@ abstract class ValidatorProvider implements Contracts
* @var
*/
protected $field_value;

/**
* @var MessageErrorBuilder
*/
protected MessageErrorBuilder $messageItem;
/**
*
*/

function __construct()
{
$this->errors = [];
$this->messageItem = new MessageErrorBuilder();
}

/**
Expand Down Expand Up @@ -70,22 +76,20 @@ public function required()
{
if (is_array($this->field_value)) {
if (count($this->field_value) == 0) {
$message = [
'type' => $this->getClassProvider() . ' required',
'message' => "'$this->field_name' is required",
'label' => $this->field_name,
];
$this->addError($message);
$this->messageItem
->type($this->getClassProvider() . ' required')
->label($this->field_name)
->message("'$this->field_name' is required");
$this->addError($this->messageItem);
}
} else {
$required_value = trim($this->field_value);
if (strlen($required_value) == 0) {
$message = [
'type' => $this->classProvider() . ' required',
'message' => "'$this->field_name' is required",
'label' => $this->field_name,
];
$this->addError($message);
$this->messageItem
->type($this->classProvider() . ' required')
->message("'$this->field_name' is required")
->label($this->field_name);
$this->addError($this->messageItem);
}
}
}
Expand All @@ -95,9 +99,9 @@ public function required()
* @param array $value
* @return void
*/
public function addError(array $value): void
public function addError(MessageErrorBuilder $item): void
{
$this->errors[] = $value;
$this->errors[] = $item->generate();
}

/**
Expand All @@ -118,12 +122,11 @@ protected function positiveParamMethod(int $rule, bool $max = false): bool
$status = true;
if ($rule < 1) {
$method = $max ? "max" : "min";
$message = [
'type' => $this->getClassProvider() . ' method ' . $method,
'message' => "'$this->field_name' $method param should be a positive number",
'label' => $this->field_name,
];
$this->addError($message);
$this->messageItem
->type($this->getClassProvider() . ' method ' . $method)
->message("'$this->field_name' $method param should be a positive number")
->label($this->field_name);
$this->addError($this->messageItem);
$status = false;
}
return $status;
Expand Down
19 changes: 11 additions & 8 deletions src/Validate.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,18 @@ class Validate
* @var bool
*/
private bool $passed;

/**
* @var MessageErrorBuilder
*/
private MessageErrorBuilder $message;
/**
*
*/
function __construct()
{
$this->errors = [];
$this->passed = false;
$this->message = new MessageErrorBuilder();
}

/**
Expand All @@ -53,11 +57,10 @@ function check(array $resource, array $schema)

$exceptions = isset($options['exception']) || isset($options['InvalidArgumentException']) ?? false;
if ($exceptions) {
$message = [
'type' => 'object.unknown',
'message' => $options['exception'] ?? $options['InvalidArgumentException'],
'label' => "exception",
];
$this->message
->type('object.unknown')
->message($options['exception'] ?? $options['InvalidArgumentException'])
->label("exception");
$this->addError($message);
} else {
foreach ($schema as $item => $rules) {
Expand Down Expand Up @@ -97,9 +100,9 @@ function check(array $resource, array $schema)
* @param array $message
* @return void
*/
private function addError(array $message)
private function addError(MessageErrorBuilder $item)
{
$this->errors[] = $message;
$this->errors[] = $item->generate();
}

/**
Expand Down
52 changes: 24 additions & 28 deletions src/Validator/ArrayValidator.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,12 @@ public function min(int $rule): void
// TODO: Implement min() method.
if ($this->positiveParamMethod($rule)) return;
if (count($this->field_value) < $rule) {
$message = [
'type' => 'array.min',
'message' => "`$this->field_name` should have a minimum of `$rule` elements",
'label' => $this->field_name,
'limit' => $rule
];
$this->addError($message);
$this->messageItem
->type('array.min')
->message("`$this->field_name` should have a minimum of `$rule` elements")
->label($this->field_name)
->limit($rule);
$this->addError($this->messageItem);
}
}

Expand All @@ -56,13 +55,12 @@ public function max(int $rule): void
// TODO: Implement max() method.
if ($this->positiveParamMethod($rule, true)) return;
if (count($this->field_value) > $rule) {
$message = [
'type' => 'array.max',
'message' => "`$this->field_name` should have a maximum of `$rule` elements",
'label' => $this->field_name,
'limit' => $rule
];
$this->addError($message);
$this->messageItem
->type('array.max')
->message("`$this->field_name` should have a maximum of `$rule` elements")
->label($this->field_name)
->limit($rule);
$this->addError($this->messageItem);
}
}

Expand Down Expand Up @@ -96,13 +94,12 @@ public function string(): void
$keys = array_keys($filter);
for ($i = 0; $i < count($keys); $i++) {
$position = $keys[$i];
$message = [
'type' => 'array.string',
'message' => "`$this->field_name[$position]` should be a string",
'label' => $this->field_name,
'limit' => 1
];
$this->addError($message);
$this->messageItem
->type('array.string')
->message("`$this->field_name[$position]` should be a string")
->label($this->field_name)
->limit(1);
$this->addError($this->messageItem);
}
}
}
Expand All @@ -123,13 +120,12 @@ public function number(): void
$keys = array_keys($filter);
for ($i = 0; $i < count($keys); $i++) {
$position = $keys[$i];
$message = [
'type' => 'array.number',
'message' => "`$this->field_name[$position]` should be a number",
'label' => $this->field_name,
'limit' => count($keys)
];
$this->addError($message);
$this->messageItem
->type('array.number')
->message("`$this->field_name[$position]` should be a number")
->label($this->field_name)
->limit(count($keys));
$this->addError($this->messageItem);
}
}
}
Expand Down
33 changes: 15 additions & 18 deletions src/Validator/BooleanValidator.php
Original file line number Diff line number Diff line change
Expand Up @@ -66,12 +66,11 @@ private function isBoolean(string $itemKey = null): bool

$regex = "/^(true|false)$/";
if (!preg_match($regex, is_bool($val) ? ($val ? 'true' : 'false') : $val)) {
$message = [
'type' => 'boolean.unknown',
'message' => "`$item_to_check` should be a boolean",
'label' => $item_to_check,
];
$this->addError($message);
$this->messageItem
->type('boolean.unknown')
->message("`$item_to_check` should be a boolean")
->label($item_to_check);
$this->addError($this->messageItem);
return false;
}
return true;
Expand All @@ -87,23 +86,21 @@ public function isValid(string $value)
$required_value = strtolower($passed_value);
$check = $required_value == 'true' || $required_value == 'false';
if (!($check)) {
$message = [
'type' => 'boolean.required',
'message' => "isValid param must be boolean but you put `$required_value`",
'label' => $this->field_name,
];
$this->addError($message);
$this->messageItem
->type('boolean.required')
->message("isValid param must be boolean but you put `$required_value`")
->label($this->field_name);
$this->addError($this->messageItem);
} else {
// $sting_value= is_bool($this->string_value);
$incoming_value = $this->field_value ? 'true' : 'false';

if ($incoming_value != $required_value) {
$message = [
'type' => 'boolean.valid',
'message' => "`$incoming_value` is not validValue required. You must put `$required_value`",
'label' => $this->field_name,
];
$this->addError($message);
$this->messageItem
->type('boolean.valid')
->message("`$incoming_value` is not validValue required. You must put `$required_value`")
->label($this->field_name);
$this->addError($this->messageItem);
}
}
}
Expand Down
Loading

0 comments on commit a2e0f59

Please sign in to comment.