Esempio n. 1
0
        /// <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" +
                   $"Контрольный символ: успешно прошёл проверку");
        }
Esempio n. 2
0
        /// <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);
        }