public CreditCardDetector(String cardNumber) { if (!ValidationHelper.IsAValidNumber(cardNumber)) throw new ArgumentException("Invalid number. Just numbers and white spaces are accepted on the string."); _cardNumber = cardNumber.RemoveWhiteSpace(); LoadCard(); }
/// <summary> /// Verify if the card number is valid. /// </summary> /// <param name="creditCardNumber"></param> /// <returns></returns> public static bool CheckLuhn(String creditCardNumber) { if (!ValidationHelper.IsAValidNumber(creditCardNumber)) throw new ArgumentException("Invalid number. Just numbers and white spaces are accepted on the string."); var checkSum = creditCardNumber .RemoveWhiteSpace() .Select(charToInt) .Reverse() .Select((digit, index) => isEven(index + 1) ? doubleDigit(digit) : digit) .Sum(); return checkSum % 10 == 0; }
public static String CreateCheckDigit(String number) { if (!ValidationHelper.IsAValidNumber(number)) throw new ArgumentException("Invalid number. Just numbers and white spaces are accepted on the string."); var digitsSum = number .RemoveWhiteSpace() .Reverse() .Select(charToInt) .Select((digit, index) => isEven(index) ? doubleDigit(digit) : digit) .Sum(); digitsSum = digitsSum * 9; return digitsSum.ToString().Last().ToString(); }
public static bool IsAValidNumber(String number) { number = number.RemoveWhiteSpace(); return (number.All(Char.IsNumber) && !String.IsNullOrEmpty(number)); }