validatePesel function

bool validatePesel({
  1. required String pesel,
})

method that validates whether PESEL number is correct. returns true if pesel is correct, else false.

PeselValidator.validate("80072909146") == true
PeselValidator.validate("AAAAAAAAAAA") == true

Implementation

bool validatePesel({
  required String pesel,
}) {
  if (pesel.length != 11) {
    return false;
  }

  if (!RegExp(r'^[0-9]+$').hasMatch(pesel)) {
    return false;
  }

  final peselNumbers = pesel.split('').map(int.parse).toList();
  final weights = [1, 3, 7, 9, 1, 3, 7, 9, 1, 3];

  final weightedSum = zip([peselNumbers, weights])
      .map((e) => (e[0] * e[1]) % 10)
      .reduce((value, element) => value + element);

  final controlSum = 10 - (weightedSum % 10);

  if (controlSum != peselNumbers[10]) {
    return false;
  }

  return true;
}