private static bool hasValidBbanEntryCharacterType(BBanEntry entry, string entryValue, out IbanFormatViolation validationResult) { validationResult = IbanFormatViolation.NO_VIOLATION; switch (entry.CharacterType) { case BBanEntryCharacterType.A: foreach (char c in entryValue.ToCharArray()) { if (!char.IsUpper(c)) { validationResult = IbanFormatViolation.BBAN_ONLY_UPPER_CASE_LETTERS; break; } } break; case BBanEntryCharacterType.C: foreach (char c in entryValue.ToCharArray()) { if (!char.IsLetterOrDigit(c)) { validationResult = IbanFormatViolation.BBAN_ONLY_DIGITS_OR_LETTERS; break; } } break; case BBanEntryCharacterType.N: foreach (char c in entryValue.ToCharArray()) { if (!char.IsDigit(c)) { validationResult = IbanFormatViolation.BBAN_ONLY_DIGITS; break; } } break; } return(validationResult == IbanFormatViolation.NO_VIOLATION); }
private static void validateBbanEntryCharacterType(BBanEntry entry, string entryValue) { switch (entry.CharacterType) { case BBanEntryCharacterType.A: foreach (char c in entryValue.ToCharArray()) { if (!char.IsUpper(c)) { throw new IbanFormatException($"'{entryValue}' must contain only upper case letters", IbanFormatViolation.BBAN_ONLY_UPPER_CASE_LETTERS, c, entry.EntryType, entryValue); } } break; case BBanEntryCharacterType.C: foreach (char c in entryValue.ToCharArray()) { if (!char.IsLetterOrDigit(c)) { throw new IbanFormatException($"'{entryValue}' must contain only letters or digits", IbanFormatViolation.BBAN_ONLY_DIGITS_OR_LETTERS, c, entry.EntryType, entryValue); } } break; case BBanEntryCharacterType.N: foreach (char c in entryValue.ToCharArray()) { if (!char.IsDigit(c)) { throw new IbanFormatException($"'{entryValue}' must contain only digits", IbanFormatViolation.BBAN_ONLY_DIGITS, c, entry.EntryType, entryValue); } } break; } }
/// <summary> /// Loads BBANs structures definitions /// </summary> private void loadStructures() { _bbanStructures = new SortedDictionary <string, BBanStructure>(); _bbanStructures.Add("AD", new BBanStructure(BBanEntry.BankCode(4, "n"), BBanEntry.BranchCode(4, "n"), BBanEntry.AccountNumber(12, "c"))); _bbanStructures.Add("AE", new BBanStructure(BBanEntry.BankCode(3, "n"), BBanEntry.AccountNumber(16, "c"))); _bbanStructures.Add("AL", new BBanStructure(BBanEntry.BankCode(3, "n"), BBanEntry.BranchCode(4, "n"), BBanEntry.NationalCheckDigit(1, "n"), BBanEntry.AccountNumber(16, "c"))); _bbanStructures.Add("AT", new BBanStructure(BBanEntry.BankCode(5, "n"), BBanEntry.AccountNumber(11, "n"))); _bbanStructures.Add("AZ", new BBanStructure(BBanEntry.BankCode(4, "a"), BBanEntry.AccountNumber(20, "c"))); _bbanStructures.Add("BH", new BBanStructure(BBanEntry.BankCode(4, "a"), BBanEntry.AccountNumber(14, "n"))); _bbanStructures.Add("BE", new BBanStructure(BBanEntry.BankCode(3, "n"), BBanEntry.AccountNumber(7, "n"), BBanEntry.NationalCheckDigit(2, "n"))); _bbanStructures.Add("BA", new BBanStructure(BBanEntry.BankCode(3, "n"), BBanEntry.BranchCode(3, "n"), BBanEntry.AccountNumber(8, "n"), BBanEntry.NationalCheckDigit(2, "n"))); _bbanStructures.Add("BR", new BBanStructure(BBanEntry.BankCode(8, "n"), BBanEntry.BranchCode(5, "n"), BBanEntry.AccountNumber(10, "n"), BBanEntry.AccountType(1, "a"), BBanEntry.OwnerAccountNumber(1, "c"))); _bbanStructures.Add("BG", new BBanStructure(BBanEntry.BankCode(4, "n"), BBanEntry.BranchCode(4, "n"), BBanEntry.AccountType(2, "n"), BBanEntry.AccountNumber(8, "c"))); _bbanStructures.Add("CR", new BBanStructure(BBanEntry.BankCode(3, "n"), BBanEntry.AccountNumber(14, "n"))); _bbanStructures.Add("CY", new BBanStructure(BBanEntry.BankCode(3, "n"), BBanEntry.BranchCode(5, "n"), BBanEntry.AccountNumber(16, "c"))); _bbanStructures.Add("CZ", new BBanStructure(BBanEntry.BankCode(4, "n"), BBanEntry.AccountNumberPrefix(6, "n"), BBanEntry.AccountNumber(10, "n"))); _bbanStructures.Add("DE", new BBanStructure(BBanEntry.BankCode(8, "n"), BBanEntry.AccountNumber(10, "n"))); _bbanStructures.Add("DK", new BBanStructure(BBanEntry.BankCode(4, "n"), BBanEntry.AccountNumber(10, "n"))); _bbanStructures.Add("DO", new BBanStructure(BBanEntry.BankCode(4, "c"), BBanEntry.AccountNumber(20, "n"))); _bbanStructures.Add("EE", new BBanStructure(BBanEntry.BankCode(2, "n"), BBanEntry.BranchCode(2, "n"), BBanEntry.AccountNumber(11, "n"), BBanEntry.NationalCheckDigit(1, "n"))); _bbanStructures.Add("ES", new BBanStructure(BBanEntry.BankCode(4, "n"), BBanEntry.BranchCode(4, "n"), BBanEntry.NationalCheckDigit(2, "n"), BBanEntry.AccountNumber(10, "n"))); _bbanStructures.Add("FO", new BBanStructure(BBanEntry.BankCode(4, "n"), BBanEntry.AccountNumber(9, "n"), BBanEntry.NationalCheckDigit(1, "n"))); _bbanStructures.Add("FI", new BBanStructure(BBanEntry.BankCode(6, "n"), BBanEntry.AccountNumber(7, "n"), BBanEntry.NationalCheckDigit(1, "n"))); _bbanStructures.Add("FR", new BBanStructure(BBanEntry.BankCode(5, "n"), BBanEntry.BranchCode(5, "n"), BBanEntry.AccountNumber(11, "c"), BBanEntry.NationalCheckDigit(2, "n"))); _bbanStructures.Add("GB", new BBanStructure(BBanEntry.BankCode(4, "a"), BBanEntry.BranchCode(6, "n"), BBanEntry.AccountNumber(8, "n"))); _bbanStructures.Add("GE", new BBanStructure(BBanEntry.BankCode(2, "a"), BBanEntry.AccountNumber(16, "n"))); _bbanStructures.Add("GI", new BBanStructure(BBanEntry.BankCode(4, "a"), BBanEntry.AccountNumber(15, "c"))); _bbanStructures.Add("GL", new BBanStructure(BBanEntry.BankCode(4, "n"), BBanEntry.AccountNumber(10, "n"))); _bbanStructures.Add("GR", new BBanStructure(BBanEntry.BankCode(3, "n"), BBanEntry.BranchCode(4, "n"), BBanEntry.AccountNumber(16, "c"))); _bbanStructures.Add("GT", new BBanStructure(BBanEntry.BankCode(4, "c"), BBanEntry.AccountNumber(20, "c"))); _bbanStructures.Add("HR", new BBanStructure(BBanEntry.BankCode(7, "n"), BBanEntry.AccountNumber(10, "n"))); _bbanStructures.Add("HU", new BBanStructure(BBanEntry.BankCode(3, "n"), BBanEntry.BranchCode(4, "n"), BBanEntry.AccountNumber(16, "n"), BBanEntry.NationalCheckDigit(1, "n"))); _bbanStructures.Add("CH", new BBanStructure(BBanEntry.BankCode(5, "n"), BBanEntry.AccountNumber(12, "c"))); _bbanStructures.Add("IS", new BBanStructure(BBanEntry.BankCode(4, "n"), BBanEntry.BranchCode(2, "n"), BBanEntry.AccountNumber(6, "n"), BBanEntry.IdentificationNumber(10, "n"))); _bbanStructures.Add("IL", new BBanStructure(BBanEntry.BankCode(3, "n"), BBanEntry.BranchCode(3, "n"), BBanEntry.AccountNumber(13, "n"))); _bbanStructures.Add("IR", new BBanStructure(BBanEntry.BankCode(3, "n"), BBanEntry.AccountNumber(19, "n"))); _bbanStructures.Add("IT", new BBanStructure(BBanEntry.NationalCheckDigit(1, "a"), BBanEntry.BankCode(5, "n"), BBanEntry.BranchCode(5, "n"), BBanEntry.AccountNumber(12, "c"))); _bbanStructures.Add("JO", new BBanStructure(BBanEntry.BankCode(4, "a"), BBanEntry.BranchCode(4, "n"), BBanEntry.AccountNumber(18, "c"))); _bbanStructures.Add("KZ", new BBanStructure(BBanEntry.BankCode(3, "n"), BBanEntry.AccountNumber(13, "c"))); _bbanStructures.Add("KW", new BBanStructure(BBanEntry.BankCode(4, "a"), BBanEntry.AccountNumber(22, "c"))); _bbanStructures.Add("LV", new BBanStructure(BBanEntry.BankCode(4, "a"), BBanEntry.AccountNumber(13, "c"))); _bbanStructures.Add("LB", new BBanStructure(BBanEntry.BankCode(4, "n"), BBanEntry.AccountNumber(20, "c"))); _bbanStructures.Add("LI", new BBanStructure(BBanEntry.BankCode(5, "n"), BBanEntry.AccountNumber(12, "c"))); _bbanStructures.Add("LT", new BBanStructure(BBanEntry.BankCode(5, "n"), BBanEntry.AccountNumber(11, "n"))); _bbanStructures.Add("LU", new BBanStructure(BBanEntry.BankCode(3, "n"), BBanEntry.AccountNumber(13, "c"))); _bbanStructures.Add("MK", new BBanStructure(BBanEntry.BankCode(3, "n"), BBanEntry.AccountNumber(10, "c"), BBanEntry.NationalCheckDigit(2, "n"))); _bbanStructures.Add("MT", new BBanStructure(BBanEntry.BankCode(4, "a"), BBanEntry.BranchCode(5, "n"), BBanEntry.AccountNumber(18, "c"))); _bbanStructures.Add("MR", new BBanStructure(BBanEntry.BankCode(5, "n"), BBanEntry.BranchCode(5, "n"), BBanEntry.AccountNumber(11, "n"), BBanEntry.NationalCheckDigit(2, "n"))); _bbanStructures.Add("MU", new BBanStructure(BBanEntry.BankCode(6, "c"), BBanEntry.BranchCode(2, "n"), BBanEntry.AccountNumber(18, "c"))); _bbanStructures.Add("MD", new BBanStructure(BBanEntry.BankCode(2, "c"), BBanEntry.AccountNumber(18, "c"))); _bbanStructures.Add("MC", new BBanStructure(BBanEntry.BankCode(5, "n"), BBanEntry.BranchCode(5, "n"), BBanEntry.AccountNumber(11, "c"), BBanEntry.NationalCheckDigit(2, "n"))); _bbanStructures.Add("ME", new BBanStructure(BBanEntry.BankCode(3, "n"), BBanEntry.AccountNumber(13, "n"), BBanEntry.NationalCheckDigit(2, "n"))); _bbanStructures.Add("NL", new BBanStructure(BBanEntry.BankCode(4, "a"), BBanEntry.AccountNumber(10, "n"))); _bbanStructures.Add("NO", new BBanStructure(BBanEntry.BankCode(4, "n"), BBanEntry.AccountNumber(6, "n"), BBanEntry.NationalCheckDigit(1, "n"))); _bbanStructures.Add("PK", new BBanStructure(BBanEntry.BankCode(4, "c"), BBanEntry.AccountNumber(16, "n"))); _bbanStructures.Add("PS", new BBanStructure(BBanEntry.BankCode(4, "a"), BBanEntry.AccountNumber(21, "c"))); _bbanStructures.Add("PL", new BBanStructure(BBanEntry.BankCode(3, "n"), BBanEntry.BranchCode(4, "n"), BBanEntry.NationalCheckDigit(1, "n"), BBanEntry.AccountNumber(16, "n"))); _bbanStructures.Add("PT", new BBanStructure(BBanEntry.BankCode(4, "n"), BBanEntry.BranchCode(4, "n"), BBanEntry.AccountNumber(11, "n"), BBanEntry.NationalCheckDigit(2, "n"))); _bbanStructures.Add("QA", new BBanStructure(BBanEntry.BankCode(4, "a"), BBanEntry.AccountNumber(21, "c"))); _bbanStructures.Add("RS", new BBanStructure(BBanEntry.BankCode(3, "n"), BBanEntry.AccountNumber(13, "n"), BBanEntry.NationalCheckDigit(2, "n"))); _bbanStructures.Add("RO", new BBanStructure(BBanEntry.BankCode(4, "a"), BBanEntry.AccountNumber(16, "c"))); _bbanStructures.Add("TL", new BBanStructure(BBanEntry.BankCode(3, "n"), BBanEntry.AccountNumber(14, "n"), BBanEntry.NationalCheckDigit(2, "n"))); _bbanStructures.Add("TN", new BBanStructure(BBanEntry.BankCode(2, "n"), BBanEntry.BranchCode(3, "n"), BBanEntry.AccountNumber(15, "c"))); _bbanStructures.Add("TR", new BBanStructure(BBanEntry.BankCode(5, "n"), BBanEntry.NationalCheckDigit(1, "c"), BBanEntry.AccountNumber(16, "c"))); _bbanStructures.Add("SM", new BBanStructure(BBanEntry.NationalCheckDigit(1, "a"), BBanEntry.BankCode(5, "n"), BBanEntry.BranchCode(5, "n"), BBanEntry.AccountNumber(12, "c"))); _bbanStructures.Add("SA", new BBanStructure(BBanEntry.BankCode(2, "n"), BBanEntry.AccountNumber(18, "c"))); _bbanStructures.Add("SK", new BBanStructure(BBanEntry.BankCode(4, "n"), BBanEntry.AccountNumberPrefix(6, "n"), BBanEntry.AccountNumber(10, "n"))); _bbanStructures.Add("SI", new BBanStructure(BBanEntry.BankCode(2, "n"), BBanEntry.BranchCode(3, "n"), BBanEntry.AccountNumber(8, "n"), BBanEntry.NationalCheckDigit(2, "n"))); _bbanStructures.Add("SE", new BBanStructure(BBanEntry.BankCode(3, "n"), BBanEntry.AccountNumber(17, "n"))); _bbanStructures.Add("UA", new BBanStructure(BBanEntry.BankCode(6, "n"), BBanEntry.AccountNumber(19, "n"))); _bbanStructures.Add("VG", new BBanStructure(BBanEntry.BankCode(4, "c"), BBanEntry.AccountNumber(16, "n"))); _bbanStructures.Add("XK", new BBanStructure(BBanEntry.BankCode(2, "n"), BBanEntry.BranchCode(2, "n"), BBanEntry.AccountNumber(10, "n"), BBanEntry.NationalCheckDigit(2, "n"))); }