Funkcja może zwrócić podany numer w postaci sformatowanej tj ze spacjami.
/// <summary>
/// Walidacja numeru bankowego
/// </summary>
/// <param name="szNR">weryfikowany numer</param>
/// <param name="retFormated">Czy zwracać numer w postaci sformatowanej</param>
/// <returns>true/false</returns>
public static bool ValidateIBAN_NRB(ref string szNR, bool retFormated = true)
{
bool bResult = false;
szNR = szNR.Trim()
.Replace(" ", "")
.Replace("-", "");
if (szNR.Length == 26 || szNR.Length == 28)
{
string nr = szNR;
if (nr.Length == 26)
{
nr = (nr +"PL"+ nr.Substring(0, 2)).Remove(0, 2);
}
else
{
nr = (nr + nr.Substring(0, 4)).Remove(0, 4);
}
nr = nr.Replace("P", "25").Replace("L", "21");
String nr6 = nr.Substring(0, 6);
String nr12 = nr.Substring(6, 6);
String nr18 = nr.Substring(12, 6);
String nr24 = nr.Substring(18, 6);
String nr30 = nr.Substring(24);
int r = Convert.ToInt32(nr6) % 97;
nr12 = (r > 0 ? r.ToString() : "") + nr12;
r = Convert.ToInt32(nr12) % 97;
nr18 = (r > 0 ? r.ToString() : "") + nr18;
r = Convert.ToInt32(nr18) % 97;
nr24 = (r > 0 ? r.ToString() : "") + nr24;
r = Convert.ToInt32(nr24) % 97;
nr30 = (r > 0 ? r.ToString() : "") + nr30;
bResult = (Convert.ToInt32(nr30) % 97 == 1);
}
else return false;
if (bResult && retFormated)
{
if (szNR.Length==26)
{
szNR = szNR.Insert(22, " ").Insert(18, " ").Insert(14, " ").Insert(10, " ").Insert(6, " ").Insert(2, " ");
}
else
{
szNR = szNR.Insert(24, " ").Insert(20, " ").Insert(16, " ").Insert(12, " ").Insert(8, " ").Insert(4, " ");
}
}
return bResult;
}
Brak komentarzy:
Prześlij komentarz