Showing
1 changed file
with
44 additions
and
0 deletions
| @@ -293,6 +293,50 @@ class GetUtils { | @@ -293,6 +293,50 @@ class GetUtils { | ||
| 293 | /// Checks if num a EQUAL than num b. | 293 | /// Checks if num a EQUAL than num b. |
| 294 | static bool isEqual(num a, num b) => a == b; | 294 | static bool isEqual(num a, num b) => a == b; |
| 295 | 295 | ||
| 296 | + //Check if num is a cnpj | ||
| 297 | + static bool isCnpj(String cnpj) { | ||
| 298 | + if (cnpj == null) return false; | ||
| 299 | + | ||
| 300 | + // Obter somente os números do CNPJ | ||
| 301 | + var numbers = cnpj.replaceAll(RegExp(r'[^0-9]'), ''); | ||
| 302 | + | ||
| 303 | + // Testar se o CNPJ possui 14 dígitos | ||
| 304 | + if (numbers.length != 14) return false; | ||
| 305 | + | ||
| 306 | + // Testar se todos os dígitos do CNPJ são iguais | ||
| 307 | + if (RegExp(r'^(\d)\1*$').hasMatch(numbers)) return false; | ||
| 308 | + | ||
| 309 | + // Dividir dígitos | ||
| 310 | + List<int> digits = | ||
| 311 | + numbers.split('').map((String d) => int.parse(d)).toList(); | ||
| 312 | + | ||
| 313 | + // Calcular o primeiro dígito verificador | ||
| 314 | + var calcDv1 = 0; | ||
| 315 | + var j = 0; | ||
| 316 | + for (var i in Iterable<int>.generate(12, (i) => i < 4 ? 5 - i : 13 - i)) { | ||
| 317 | + calcDv1 += digits[j++] * i; | ||
| 318 | + } | ||
| 319 | + calcDv1 %= 11; | ||
| 320 | + var dv1 = calcDv1 < 2 ? 0 : 11 - calcDv1; | ||
| 321 | + | ||
| 322 | + // Testar o primeiro dígito verificado | ||
| 323 | + if (digits[12] != dv1) return false; | ||
| 324 | + | ||
| 325 | + // Calcular o segundo dígito verificador | ||
| 326 | + var calcDv2 = 0; | ||
| 327 | + j = 0; | ||
| 328 | + for (var i in Iterable<int>.generate(13, (i) => i < 5 ? 6 - i : 14 - i)) { | ||
| 329 | + calcDv2 += digits[j++] * i; | ||
| 330 | + } | ||
| 331 | + calcDv2 %= 11; | ||
| 332 | + var dv2 = calcDv2 < 2 ? 0 : 11 - calcDv2; | ||
| 333 | + | ||
| 334 | + // Testar o segundo dígito verificador | ||
| 335 | + if (digits[13] != dv2) return false; | ||
| 336 | + | ||
| 337 | + return true; | ||
| 338 | + } | ||
| 339 | + | ||
| 296 | /// Checks if the cpf is valid. | 340 | /// Checks if the cpf is valid. |
| 297 | static bool isCpf(String cpf) { | 341 | static bool isCpf(String cpf) { |
| 298 | if (cpf == null) return false; | 342 | if (cpf == null) return false; |
-
Please register or login to post a comment