Test Failed
Pull Request — 1.x (#56)
by
unknown
11:07
created

ValidCartNumberIran::validate()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 2
nc 2
nop 3
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Milwad\LaravelValidate\Rules;
4
5
use Closure;
6
use Illuminate\Contracts\Validation\ValidationRule;
0 ignored issues
show
Bug introduced by
The type Illuminate\Contracts\Validation\ValidationRule was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
7
8
class ValidCartNumberIran implements ValidationRule
9
{
10
    /**
11
     * Check cart number is valid.
12
     *
13
     * @param string $attribute
14
     * @param mixed $value
15
     * @param Closure $fail
16
     * @return void
17
     */
18
    public function validate(string $attribute, mixed $value, Closure $fail): void
19
    {
20
        if (! $this->isCartNumberValid($value)) {
21
            $fail('validate.cart-number-iran')->translate();
22
        }
23
    }
24
25
    /**
26
     * Check cart number validity.
27
     *
28
     * @param $value
29
     * @return bool
30
     */
31
    private function isCartNumberValid($value): bool
32
    {
33
        $cardToArr = str_split($value);
34
        $cardTotal = 0;
35
        for ($i = 0; $i < 16; $i++) {
36
            $c = (int) $cardToArr[$i];
37
            if ($i % 2 === 0) {
38
                $cardTotal += (($c * 2 > 9) ? ($c * 2) - 9 : ($c * 2));
39
            } else {
40
                $cardTotal += $c;
41
            }
42
        }
43
44
        return $cardTotal % 10 === 0;
45
    }
46
}
47