public static bool GetWarnings(IPersonData data, IPersonPassportData passport, out ErrorEnum @enum) { @enum = ErrorEnum.NONE; if (data.LastName.Length > 32) { @enum |= ErrorEnum.LastName; } if (data.FirstName.Length > 32) { @enum |= ErrorEnum.FirstName; } if (data.Patronymic.Length > 32) { @enum |= ErrorEnum.Patronymic; } if (data.BirthPlace.Length > 32) { @enum |= ErrorEnum.BirthPlace; } if (passport.PassportIssue.Length > 29) { @enum |= ErrorEnum.PassportPlace; } if (passport.Address.Length > 96) { @enum |= ErrorEnum.Registration; } return(@enum != ErrorEnum.NONE); }
public static bool GetErrors(IPersonData data, IPersonPassportData passport, out ErrorEnum @enum) { @enum = ErrorEnum.NONE; if (DateTime.TryParseExact(data.BirthDate.Replace(".", "/"), "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out var bDay)) { // Уже стукнуло 27 if (DateTime.Now > bDay.AddYears(27)) { @enum |= ErrorEnum.BirthDate; } // Еще не стукнуло 18 if (DateTime.Now < bDay.AddYears(18)) { @enum |= ErrorEnum.BirthDate; } } else { @enum |= ErrorEnum.BirthDate; } if (data.PassportSerial.Length != 12) // 10? { @enum |= ErrorEnum.PassportSerial; } if (DateTime.TryParseExact(passport.PassportIssueDate.Replace(".", "/"), "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out var pDay)) { // Больше 20 лет, но паспорт не обновлен if (bDay.AddYears(20) < DateTime.Now && bDay.AddYears(20) > pDay) { @enum |= ErrorEnum.BirthDate | ErrorEnum.PassportDate; } } else { @enum |= ErrorEnum.BirthDate; } if (passport.PassportDivisionCode.Length != 7) { @enum |= ErrorEnum.PassportPlaceCode; } if (passport.PassportDivisionCode.Length == 7 && passport.PassportDivisionCode[3] != '-') { @enum |= ErrorEnum.PassportPlaceCode; } if (passport.PassportDivisionCode.Length == 7 && (!char.IsDigit(passport.PassportDivisionCode[0]) || !char.IsDigit(passport.PassportDivisionCode[1]) || !char.IsDigit(passport.PassportDivisionCode[2]) || !char.IsDigit(passport.PassportDivisionCode[4]) || !char.IsDigit(passport.PassportDivisionCode[5]) || !char.IsDigit(passport.PassportDivisionCode[6]))) { @enum |= ErrorEnum.PassportPlaceCode; } if (passport.PhoneHome.Length != 10) { @enum |= ErrorEnum.PhoneHome; } if (passport.PhoneMobile.Length != 10) { @enum |= ErrorEnum.PhoneMobile; } if (Equals(bDay.Date, pDay.Date)) { @enum |= ErrorEnum.BirthDate | ErrorEnum.PassportDate; } return(@enum != ErrorEnum.NONE); }