Skip to content

Commit 41df883

Browse files
committed
add ValidImei rule
1 parent 5cde5c6 commit 41df883

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

src/Rules/ValidImei.php

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<?php
2+
3+
namespace Milwad\LaravelValidate\Rules;
4+
5+
use Illuminate\Contracts\Validation\Rule;
6+
7+
class ValidImei implements Rule
8+
{
9+
/**
10+
* Check jwt is valid.
11+
*
12+
* @param string $attribute
13+
* @param mixed $value
14+
* @return bool
15+
*/
16+
public function passes($attribute, $value)
17+
{
18+
$imei = $value;
19+
20+
if (strlen($imei) != 15 || !ctype_digit($imei)) {
21+
return false;
22+
}
23+
24+
$digits = str_split($imei); // Get digits
25+
$imei_last = array_pop($digits); // Remove last digit, and store it
26+
$log = array();
27+
28+
foreach ($digits as $key => $n) {
29+
if ($key & 1) {
30+
$double = str_split($n * 2); // Get double digits
31+
$n = array_sum($double); // Sum double digits
32+
}
33+
34+
$log[] = $n; // Append log
35+
}
36+
$sum = array_sum($log) * 9; // Sum log & multiply by 9
37+
38+
return substr($sum, -1) === $imei_last;
39+
}
40+
41+
/**
42+
* Get the validation error message.
43+
*
44+
* @return string
45+
*/
46+
public function message()
47+
{
48+
return __('imei');
49+
}
50+
}

0 commit comments

Comments
 (0)