From b43759f3f42fceeb723c6388052bdb0c1db010ff Mon Sep 17 00:00:00 2001 From: KKlochko Date: Wed, 30 Aug 2023 17:28:24 +0300 Subject: [PATCH] Refactor Validators. --- .../Validators/CompanyValidatorByName.php | 15 ++-------- .../Validators/EmptyNameValidator.php | 4 +-- .../Validators/ItemValidatorByName.php | 15 ++-------- .../Validation/Validators/NextValidator.php | 26 +++++++++++++++++ .../Validators/NextValidatorByName.php | 28 +++++++++++++++++++ .../Validation/Validators/OkValidator.php | 4 +-- .../Validators/UpperRangeValidator.php | 4 +-- .../Validation/Validators/Validator.php | 7 +---- 8 files changed, 67 insertions(+), 36 deletions(-) create mode 100644 app/Models/Validation/Validators/NextValidator.php create mode 100644 app/Models/Validation/Validators/NextValidatorByName.php diff --git a/app/Models/Validation/Validators/CompanyValidatorByName.php b/app/Models/Validation/Validators/CompanyValidatorByName.php index c827d51..989d6f8 100644 --- a/app/Models/Validation/Validators/CompanyValidatorByName.php +++ b/app/Models/Validation/Validators/CompanyValidatorByName.php @@ -2,22 +2,13 @@ namespace App\Models\Validation\Validators; -use App\Models\Validation\Validators\Validator; +use App\Models\Validation\Validators\NextValidatorByName; use App\Models\Company; -class CompanyValidatorByName extends Validator { - private string $name; - protected Validator $nextValidator; - - public function __construct(string $name, Validator $nextValidator) - { - $this->name = $name; - $this->nextValidator = $nextValidator; - } - +class CompanyValidatorByName extends NextValidatorByName { public function isCurrentValid(): bool { - $count = Company::where('name', $this->name)->count(); + $count = Company::where('name', $this->getName())->count(); return $count != 0; } diff --git a/app/Models/Validation/Validators/EmptyNameValidator.php b/app/Models/Validation/Validators/EmptyNameValidator.php index fb48d6c..f0737be 100644 --- a/app/Models/Validation/Validators/EmptyNameValidator.php +++ b/app/Models/Validation/Validators/EmptyNameValidator.php @@ -2,9 +2,9 @@ namespace App\Models\Validation\Validators; -use App\Models\Validation\Validators\Validator; +use App\Models\Validation\Validators\NextValidator; -class EmptyNameValidator extends Validator { +class EmptyNameValidator extends NextValidator { private string $name; protected Validator $nextValidator; diff --git a/app/Models/Validation/Validators/ItemValidatorByName.php b/app/Models/Validation/Validators/ItemValidatorByName.php index 333981d..d27211a 100644 --- a/app/Models/Validation/Validators/ItemValidatorByName.php +++ b/app/Models/Validation/Validators/ItemValidatorByName.php @@ -2,22 +2,13 @@ namespace App\Models\Validation\Validators; -use App\Models\Validation\Validators\Validator; +use App\Models\Validation\Validators\NextValidatorByName; use App\Models\Item; -class ItemValidatorByName extends Validator { - private string $name; - protected Validator $nextValidator; - - public function __construct(string $name, Validator $nextValidator) - { - $this->name = $name; - $this->nextValidator = $nextValidator; - } - +class ItemValidatorByName extends NextValidatorByName { public function isCurrentValid(): bool { - $count = Item::where('name', $this->name)->count(); + $count = Item::where('name', $this->getName())->count(); return $count != 0; } diff --git a/app/Models/Validation/Validators/NextValidator.php b/app/Models/Validation/Validators/NextValidator.php new file mode 100644 index 0000000..a0179be --- /dev/null +++ b/app/Models/Validation/Validators/NextValidator.php @@ -0,0 +1,26 @@ +nextValidator = $validator; + } + + public function getNextValidator(): Validator + { + return $this->nextValidator; + } + + abstract public function isCurrentValid(): bool; + + public function isValid(): bool + { + return $this->isCurrentValid() && $this->getNextValidator()->isValid(); + } +} + diff --git a/app/Models/Validation/Validators/NextValidatorByName.php b/app/Models/Validation/Validators/NextValidatorByName.php new file mode 100644 index 0000000..fcc1f33 --- /dev/null +++ b/app/Models/Validation/Validators/NextValidatorByName.php @@ -0,0 +1,28 @@ +setName($name); + $this->setNextValidator($nextValidator); + } + + public function setName(string $name): void + { + $this->name = $name; + } + + public function getName(): string + { + return $this->name; + } + + abstract public function isCurrentValid(): bool; +} + diff --git a/app/Models/Validation/Validators/OkValidator.php b/app/Models/Validation/Validators/OkValidator.php index 1b11063..3292c98 100644 --- a/app/Models/Validation/Validators/OkValidator.php +++ b/app/Models/Validation/Validators/OkValidator.php @@ -2,9 +2,9 @@ namespace App\Models\Validation\Validators; -use App\Models\Validation\Validators\Validator; +use App\Models\Validation\Validators\NextValidator; -class OkValidator extends Validator { +class OkValidator extends NextValidator { public function isCurrentValid(): bool { return true; diff --git a/app/Models/Validation/Validators/UpperRangeValidator.php b/app/Models/Validation/Validators/UpperRangeValidator.php index bcdb0f0..0fbfddb 100644 --- a/app/Models/Validation/Validators/UpperRangeValidator.php +++ b/app/Models/Validation/Validators/UpperRangeValidator.php @@ -2,9 +2,9 @@ namespace App\Models\Validation\Validators; -use App\Models\Validation\Validators\Validator; +use App\Models\Validation\Validators\NextValidator; -class UpperRangeValidator extends Validator { +class UpperRangeValidator extends NextValidator { private int $value; private int $rangeLimit; protected Validator $nextValidator; diff --git a/app/Models/Validation/Validators/Validator.php b/app/Models/Validation/Validators/Validator.php index 5ec1476..2f37ff2 100644 --- a/app/Models/Validation/Validators/Validator.php +++ b/app/Models/Validation/Validators/Validator.php @@ -3,11 +3,6 @@ namespace App\Models\Validation\Validators; abstract class Validator { - abstract public function isCurrentValid(): bool; - - public function isValid(): bool - { - return $this->isCurrentValid() && $this->nextValidator->isValid(); - } + abstract public function isValid(): bool; }