private bool FinalCheck(PassportData input) { bool result = false; if (!string.IsNullOrEmpty(input.PersonalNumber) && !string.IsNullOrEmpty(PassportNum) && !string.IsNullOrEmpty(DOB) && !string.IsNullOrEmpty(ExpiredDate)) { string personalNum = input.PersonalNumber.PadRight(14, '<'); int chkDigitPersonalNum = CheckDigit(personalNum); int chkFinalDigit = CheckDigit(string.Format("{0}{1}{2}{3}{4}", PassportNum, DOB, ExpiredDate, personalNum, chkDigitPersonalNum.ToString())); string finalDigit = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}", PassportNum, input.Nationality, DOB, input.Gender, ExpiredDate, personalNum, chkDigitPersonalNum.ToString(), chkFinalDigit.ToString()); result = input.MRZLineTwo == finalDigit ? true : false; } return(result); }
public ValidationResult Validate(PassportData input) { //Add your core validation logic here var result = new ValidationResult { IsValidPassportNumber = true, IsValidDateofBirthDigit = ValidateDateDetails(input.DateOfBirth), IsValidPassportExpiredDate = ValidateDateDetails(input.ExpiryDate), IsValidPersonalNumber = ValidateDetails(input.PersonalNumber), IsValidGender = ValidateGenderDetails(input.Gender), IsValidNationalityCode = ValidateDetails(input.Nationality), IsValidDateofBirthCrossCheck = CrossCheckDOB(input.MRZLineTwo, input.DateOfBirth), IsValidPassportExpiredCrossCheck = CrossCheckExpired(input.MRZLineTwo, input.ExpiryDate), IsValidPassportNumberCrossCheck = CrossCheck(input.MRZLineTwo, input.PassportNumber), IsValidFinalCheck = FinalCheck(input), }; return(result); }