Refactor InformativeValidators to move the modules into Validators.
continuous-integration/drone/push Build is passing

This commit is contained in:
2023-09-03 11:54:39 +03:00
parent 9244aa11bc
commit 4c1e0bec07
13 changed files with 34 additions and 34 deletions
@@ -0,0 +1,26 @@
<?php
namespace App\Models\Validation\Validators\Informative\Factories;
use App\Models\Validation\Validators\Informative\Factories\InformativeValidatorByNameFactory;
use App\Models\Validation\Validators\Informative\InformativeValidator;
use App\Models\Validation\Messages\Factories\MessageByNameFactory;
use App\Models\Validation\Validators\Validator;
use App\Models\Validation\Validators\CompanyValidatorByName;
class CompanyInformativeValidatorByNameFactory extends InformativeValidatorByNameFactory
{
public function __construct(string $name)
{
$this->setMessages((new MessageByNameFactory('company'))->create());
$this->setName($name);
}
public function getValidatorByName(InformativeValidator $okValidator): Validator
{
return new CompanyValidatorByName($this->name, $okValidator);
}
}
@@ -0,0 +1,57 @@
<?php
namespace App\Models\Validation\Validators\Informative\Factories;
use App\Models\Validation\Validators\Informative\Factories\InformativeValidatorFactory;
use App\Models\Validation\Validators\Informative\InformativeValidator;
use App\Models\Validation\Validators\Informative\OkInformativeValidator;
use App\Models\Validation\Validators\Informative\NextInformativeValidator;
use App\Models\Validation\Validators\EmptyNameValidator;
use App\Models\Validation\Validators\Validator;
abstract class InformativeValidatorByNameFactory extends InformativeValidatorFactory
{
protected array $messages;
protected string $name;
public function setMessages(array $messages): void
{
$this->messages = $messages;
}
public function getMessages(): array
{
return $this->messages;
}
public function setName(string $name): void
{
$this->name = $name;
}
public function getName(): string
{
return $this->name;
}
abstract public function getValidatorByName(InformativeValidator $okValidator): Validator;
public function create(): InformativeValidator
{
$okValidator = new OkInformativeValidator($this->messages['found']);
$nameValidator = new NextInformativeValidator(
$this->messages['not_found'],
$this->getValidatorByName($okValidator),
$okValidator
);
return new NextInformativeValidator(
$this->messages['invalid_name'],
new EmptyNameValidator($this->name, $nameValidator),
$nameValidator
);
}
}
@@ -0,0 +1,11 @@
<?php
namespace App\Models\Validation\Validators\Informative\Factories;
use App\Models\Validation\Validators\Informative\InformativeValidator;
abstract class InformativeValidatorFactory
{
abstract function create(): InformativeValidator;
}
@@ -0,0 +1,26 @@
<?php
namespace App\Models\Validation\Validators\Informative\Factories;
use App\Models\Validation\Validators\Informative\Factories\InformativeValidatorByNameFactory;
use App\Models\Validation\Validators\Informative\InformativeValidator;
use App\Models\Validation\Messages\Factories\MessageByNameFactory;
use App\Models\Validation\Validators\Validator;
use App\Models\Validation\Validators\ItemValidatorByName;
class ItemInformativeValidatorByNameFactory extends InformativeValidatorByNameFactory
{
public function __construct(string $name)
{
$this->setMessages((new MessageByNameFactory('item'))->create());
$this->setName($name);
}
public function getValidatorByName(InformativeValidator $okValidator): Validator
{
return new ItemValidatorByName($this->name, $okValidator);
}
}