Skip to content

Commit 52bb67a

Browse files
committed
Adiciona verificação de DDD
1 parent d5a0e7b commit 52bb67a

File tree

4 files changed

+88
-0
lines changed

4 files changed

+88
-0
lines changed

README.md

+9
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,14 @@ $this->validate($request, [
128128
]);
129129
```
130130

131+
* **ddd** - Verifica se a DDD é válida
132+
133+
```php
134+
$this->validate($request, [
135+
'ddd' => 'required|ddd',
136+
]);
137+
```
138+
131139
* **formato_cnpj** - Verifica se o formato de um CNPJ é válida. ( 99.999.999/9999-99 )
132140

133141
```php
@@ -199,6 +207,7 @@ public function store(Request $request)
199207
'cns' => 'required|cns',
200208
'renavam' => 'required|renavam',
201209
'placa' => 'required|placa',
210+
'ddd' => 'required|ddd',
202211
]);
203212

204213
dd($data);

src/validator-docs/Rules/Ddd.php

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
3+
namespace geekcom\ValidatorDocs\Rules;
4+
5+
use function preg_match;
6+
7+
final class Ddd
8+
{
9+
public function validateDdd($attribute, $ddd): bool
10+
{
11+
if (preg_match('/([1-9]{2}+)/', $ddd, $matches) <= 0) {
12+
return false;
13+
}
14+
15+
$dddExtracted = (int) $matches[0];
16+
17+
$dddExisting = array_merge(
18+
range(11, 19),
19+
[21, 22, 24, 27, 28],
20+
range(31, 35),
21+
[37, 38],
22+
range(41, 49),
23+
[51],
24+
range(53, 55),
25+
range(61, 69),
26+
[71],
27+
range(73, 75),
28+
[77, 79],
29+
range(81, 89),
30+
range(91, 99)
31+
);
32+
33+
return in_array($dddExtracted, $dddExisting);
34+
}
35+
}

src/validator-docs/Validator.php

+8
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace geekcom\ValidatorDocs;
66

7+
use geekcom\ValidatorDocs\Rules\Ddd;
78
use Illuminate\Validation\Validator as BaseValidator;
89
use geekcom\ValidatorDocs\Rules\TituloEleitoral;
910
use geekcom\ValidatorDocs\Rules\Cns;
@@ -127,4 +128,11 @@ protected function validatePlaca($attribute, $value): bool
127128

128129
return $placa->validatePlaca($attribute, $value);
129130
}
131+
132+
protected function validateDdd($attribute, $value): bool
133+
{
134+
$ddd = new Ddd();
135+
136+
return $ddd->validateDdd($attribute, $value);
137+
}
130138
}

tests/TestValidator.php

+36
Original file line numberDiff line numberDiff line change
@@ -425,4 +425,40 @@ public function placa()
425425

426426
$this->assertTrue($incorrect->fails());
427427
}
428+
429+
/**
430+
* @test
431+
*/
432+
public function ddd()
433+
{
434+
$dddExisting = array_merge(
435+
range(11, 19),
436+
[21, 22, 24, 27, 28],
437+
range(31, 35),
438+
[37, 38],
439+
range(41, 49),
440+
[51],
441+
range(53, 55),
442+
range(61, 69),
443+
[71],
444+
range(73, 75),
445+
[77, 79],
446+
range(81, 89),
447+
range(91, 99)
448+
);
449+
450+
$correct = Validator::make(
451+
['certo' => $dddExisting[array_rand($dddExisting)]],
452+
['certo' => 'ddd']
453+
);
454+
455+
$incorrect = Validator::make(
456+
['errado' => '10'],
457+
['errado' => 'ddd']
458+
);
459+
460+
$this->assertTrue($correct->passes());
461+
462+
$this->assertTrue($incorrect->fails());
463+
}
428464
}

0 commit comments

Comments
 (0)