documentid-checksum-validator
Version:
checksum validation for government doc ids
47 lines (39 loc) • 1.57 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true
});
exports['default'] = isValidDocId;
function isValidDocId(value) {
var valueArray = value.split('');
var valid = true;
if (valueArray.length < 12 || valueArray.length > 12) {
valid = false;
} else {
// standard multiplier for the control of 11th didgit
var controleleventhDigitMultiplier = [7, 2, 4, 10, 3, 5, 9, 4, 6, 8];
// standard multiplier for the control of 12th digit
var controltwelthDigitMulitplier = [3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8];
var sumElevenDigits = 0;
var sumTenDigits = 0;
for (var i = 0; i < controleleventhDigitMultiplier.length; i++) {
sumTenDigits += controleleventhDigitMultiplier[i] * valueArray[i];
}
for (var j = 0; j < controltwelthDigitMulitplier.length; j++) {
sumElevenDigits += controltwelthDigitMulitplier[j] * valueArray[j];
}
var controlEleventhDigit = sumTenDigits - Math.floor(sumTenDigits / 11) * 11;
var controlTwelthDigit = sumElevenDigits - Math.floor(sumElevenDigits / 11) * 11;
if (controlEleventhDigit === 10) {
controlEleventhDigit = 0;
} else if (controlTwelthDigit === 10) {
controlTwelthDigit = 0;
}
if (controlEleventhDigit === valueArray[10] && controlTwelthDigit === valueArray[11]) {
valid = true;
} else {
valid = false;
}
}
return valid;
}
module.exports = exports['default'];