Funkcja oparta o sumę kontrolną
/// <summary>
/// Weryfikacja Nr Dowowdu Osobistego
/// </summary>
/// <param name="szNR">Nr Dowodu</param>
/// <param name="retFormated">Czy zwracać numer w postaci sformatowanej</param>
/// <returns>true/false</returns>
public static bool ValidateDO(ref string szNR, bool retFormated = true)
{
byte[] tab = new byte[9] { 7, 3, 1, 9, 7, 3, 1, 7, 3 };
byte[] tablicz = new byte[] { 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 };
bool bResult = false;
int sumcontrol = 0;
int sum = 0;
szNR = szNR.Trim().Replace(" ", "");
if (szNR.Length == 9)
{
byte b;
for (int i = 0; i < 3; i++)
{
b = Convert.ToByte(szNR[i]);
if (b < 65 || b > 90) return false;
}
for (int i = 3; i < 9; i++)
{
b = Convert.ToByte(szNR[i]);
if (b < 48 || b > 57) return false;
}
sumcontrol = Convert.ToInt32(szNR[3].ToString());
for (int i = 0; i < 9; i++)
{
if (i < 3)
{
sum += (Convert.ToByte(szNR[i]) - 55) * tab[i];
}
else
{
sum += Convert.ToInt32(szNR[i].ToString()) * tab[i];
}
}
bResult = ((sum % 10) == 0);
}
else return false;
if (bResult && retFormated)
{
szNR = szNR.Insert(3, " ");
}
return bResult;
}
Brak komentarzy:
Prześlij komentarz