validatePesel function
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;
}