public class NationalCodeValidator {
public int AddToList(string nationalCode, out int lastNumber)
{
string str = nationalCode;
List<int> list = new List<int>();
if (str.Length < 10)
{
lastNumber = 0;
return 0;
}
for (int i = 0; i < str.Length; i++)
{
list.Add(int.Parse(str.Substring(i, 1)));
}
lastNumber = this.GetFlag(list);
return this.Sum(list);
}
public bool Calculate(int sum, int lastNumber)
{
int num = sum % 11;
if (num > 2)
{
return (lastNumber == (11 - num));
}
return (lastNumber == num);
}
public int GetFlag(List<int> nationalCode)
{
return nationalCode[nationalCode.Count - 1];
}
public static bool IsValid(string nationalCode)
{
int num;
NationalCodeValidator validator = new NationalCodeValidator();
int sum = validator.AddToList(nationalCode, out num);
return ((sum != 0) && validator.Calculate(sum, num));
}
public int Sum(List<int> list)
{
int result = 0;
int i = 10;
list.RemoveAt(list.Count - 1);
list.ForEach(delegate (int x) {
result += x * i--;
});
return result;
}
}