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