ProductValidator::setValidationRules()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 28
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 18
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 28
rs 9.6666
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Platine\App\Validator;
6
7
use Platine\App\Param\ProductParam;
8
use Platine\Framework\Form\Validator\AbstractValidator;
9
use Platine\Lang\Lang;
10
use Platine\Validator\Rule\Integer;
11
use Platine\Validator\Rule\MaxLength;
12
use Platine\Validator\Rule\Min;
13
use Platine\Validator\Rule\MinLength;
14
use Platine\Validator\Rule\NotEmpty;
15
use Platine\Validator\Rule\Number;
16
17
/**
18
* @class ProductValidator
19
* @package Platine\App\Validator
20
* @template TEntity as \Platine\Orm\Entity
21
*/
22
class ProductValidator extends AbstractValidator
23
{
24
    /**
25
    * Create new instance
26
    * @param ProductParam<TEntity> $param
27
    * @param Lang $lang
28
    */
29
    public function __construct(protected ProductParam $param, Lang $lang)
30
    {
31
        parent::__construct($lang);
32
    }
33
34
    /**
35
    * {@inheritdoc}
36
    */
37
    public function setValidationData(): void
38
    {
39
        $this->addData('name', $this->param->getName());
40
        $this->addData('description', $this->param->getDescription());
41
        $this->addData('price', $this->param->getPrice());
42
        $this->addData('quantity', $this->param->getQuantity());
43
        $this->addData('category', $this->param->getCategory());
44
    }
45
46
    /**
47
    * {@inheritdoc}
48
    */
49
    public function setValidationRules(): void
50
    {
51
        $this->addRules('name', [
52
            new NotEmpty(),
53
            new MinLength(2),
54
            new MaxLength(50),
55
        ]);
56
57
        $this->addRules('description', [
58
            new MinLength(2),
59
            new MaxLength(150),
60
        ]);
61
62
        $this->addRules('price', [
63
            new NotEmpty(),
64
            new Number(),
65
            new Min(0),
66
        ]);
67
68
        $this->addRules('quantity', [
69
            new NotEmpty(),
70
            new Number(),
71
            new Min(0),
72
        ]);
73
74
        $this->addRules('category', [
75
            new NotEmpty(),
76
            new Integer(),
77
        ]);
78
    }
79
}
80