Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
CRAP | |
100.00% |
9 / 9 |
Zipcode | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
2 | |
100.00% |
9 / 9 |
check | |
100.00% |
1 / 1 |
2 | |
100.00% |
9 / 9 |
1 | <?php |
2 | |
3 | namespace Qmp\Laravel\ValidationRules\Rules; |
4 | |
5 | |
6 | class Zipcode extends Rule |
7 | { |
8 | /** |
9 | * Undocumented variable |
10 | * |
11 | * @var string |
12 | */ |
13 | protected $message = 'The :attribute must be a valid zipcode'; |
14 | |
15 | /** |
16 | * Undocumented variable |
17 | * |
18 | * @var array |
19 | */ |
20 | protected $patterns = [ |
21 | 'BE' => '/^(?:\d{4})$/i', |
22 | 'FR' => '/^(?:\d{2} ?\d{3})$/i', |
23 | 'IT' => '/^(?:\d{5})$/i' |
24 | ]; |
25 | |
26 | |
27 | /** |
28 | * Undocumented function |
29 | * |
30 | * @param string $attribute |
31 | * @param mixed $value |
32 | * @param array $parameters |
33 | * @return bool |
34 | */ |
35 | public function check(string $attribute, $value, array $parameters): bool |
36 | { |
37 | $parameters = array_map('strtoupper', $parameters); |
38 | $this->setError('Format : ' . implode(', ', $parameters)); |
39 | $value = preg_replace('/[^0-9]/', '', $value); |
40 | |
41 | $patterns = collect($this->patterns); |
42 | $patterns = empty($parameters) ? $patterns : $patterns->only($parameters); |
43 | |
44 | $filtered = $patterns->filter(function ($pattern) use ($value) { |
45 | return preg_match($pattern, $value); |
46 | }); |
47 | |
48 | |
49 | |
50 | return $filtered->count() > 0; |
51 | } |
52 | } |