/// <summary> /// Метод, выводящий полную информацию о введённом VIN номере /// </summary> /// <param name="vin">VIN номер</param> /// <returns>Возвращает результат с ошибкой или с информацией</returns> public static string GetVINInfo(string vin) { _vin = vin.ToUpper(); if (_vin.Length != 17) { return("Ошибка!\nДлина VIN должна составлять 17 знаков"); } foreach (var @char in _vin) { if (!_allowedChars.Contains(@char)) { return("Ошибка!\nVIN состоит из запрещённых символов"); } } if (_vin[0] == '0') { return("Ошибка!\nПервый символ не может быть равен 0"); } Country country = CountriesList.FirstOrDefault(i => i.GeoAreaCode == _vin[0] && i.IsActive == true && ExpandedCode(i.CodeInterval).Contains(_vin[1].ToString())); if (country == null) { return("Ошибка!\nНеверный всемирный индекс изготовителя (WMI)"); } if (!ModelYearDict.TryGetValue(_vin[9], out _)) { return("Ошибка!\nНеверный модельный год"); } if (!char.IsDigit(_vin[13]) || !char.IsDigit(_vin[14]) || !char.IsDigit(_vin[15]) || !char.IsDigit(_vin[16])) { return("Ошибка!\nПоследние 4 знака обязательно должны быть цифрами"); } if (_vin[8].ToString() != CalculatingChecksum(_vin)) { return("Ошибка!\nНеверный контрольный символ"); } return($"Информация об указанном VIN({ vin}):\n" + $"Регион: {country.GeoArea.Name}\n" + $"Страна сборки: {country.Name}\n" + $"Фирма-производитель: неизвестно\n" + $"Колесная база: неизвестно\n" + $"Тип кузова: неизвестно\n" + $"Двигатель: неизвестно\n" + $"Тип трансмиссии: неизвестно\n" + $"Год выпуска: {ModelYearDict[_vin[9]]}\n" + $"Отделение завода: неизвестно\n" + $"Порядковый номер: неизвестно\n" + $"Контрольный символ: успешно прошёл проверку"); }
/// <summary> /// Метод, проверяющий на правильность введённый VIN номер /// </summary> /// <param name="vin">VIN номер</param> /// <returns>true - всё хорошо, false - что-то не так</returns> public static bool CheckVIN(string vin) { _vin = vin.ToUpper(); if (_vin.Length != 17) { return(false); } foreach (var @char in _vin) { if (!_allowedChars.Contains(@char)) { return(false); } } if (_vin[0] == '0') { return(false); } Country country = CountriesList.FirstOrDefault(i => i.GeoAreaCode == _vin[0] && i.IsActive == true && ExpandedCode(i.CodeInterval).Contains(_vin[1].ToString())); if (country == null) { return(false); } if (!ModelYearDict.TryGetValue(_vin[9], out _)) { return(false); } if (!char.IsDigit(_vin[13]) || !char.IsDigit(_vin[14]) || !char.IsDigit(_vin[15]) || !char.IsDigit(_vin[16])) { return(false); } if (_vin[8].ToString() != CalculatingChecksum(_vin)) { return(false); } return(true); }