private IObjectValidator GetValidator(IList <Book> books = null, IList <Publisher> publishers = null) { var builder = new ValidationBuilder <Book>(); builder.RuleFor(book => book.ISBN) .Must(ISBNUtils.IsValid) .WithMessage("ISBN is not valid"); builder.RuleFor(book => book.ISBN) .Must(isbn => publishers == null || publishers.Any(publisher => publisher.Id == ISBNUtils.GetPublisherId(isbn))) .WithMessage("Publisher that owns such ISBN does not exist") .Must(isbn => books == null || !books.Any(book => book != this && book.ISBN == isbn)) .WithMessage("ISBN should be unique") .AllWhen(book => ISBNUtils.IsValid(book.ISBN)); builder.RuleFor(book => book.Name) .NotEmpty() .WithMessage("Name can't be empty"); builder.RuleFor(book => book.AgeRestriction) .NotEmpty() .WithMessage("Age Restriction can't be empty") .Matches(@"^\d+\+$") .WithMessage("Age Restriction has wrong format"); return(builder.Build(this)); }
private IObjectValidator GetValidator() { var builder = new ValidationBuilder <SendGroupViewModel>(); builder.RuleFor(vm => vm.RegOtdelenie).MyNotEmpty(); builder.RuleFor(vm => vm.City).MyNotEmpty(); builder.RuleFor(vm => vm.Depo).MyNotEmpty(); builder.RuleFor(vm => vm.Uvolnenie).MyNotEmptyDat(); builder.RuleFor(vm => vm.Poezd).MyNotEmpty(); builder.RuleFor(vm => vm.Vagon).MyNotEmpty(); builder.RuleFor(vm => vm.OtprDat).MyNotEmptyDat(); builder.RuleFor(vm => vm.PribDat).MyNotEmptyDat(); //.Matches(@"^\d{1,2}:d{2}$") builder.RuleFor(vm => vm.PribTime) .Must(IsValidTime) .WithMessage("{PropertyName} должно быть в формате ЧЧ:ММ"); /* builder.RuleFor(vm=>vm).NotEmpty() * .When(vm => vm.Persons, persons => !persons.Any(pp=>pp.IsMain)) * .WithMessage("В группе должен быть старший"); */ builder.RuleFor(vm => vm.Vokzal).MyNotEmpty(); ;//TODO .When(vm => UchZavedenie, uchZavedenie => !string.IsNullOrEmpty(uchZavedenie)).Between("1950", "2050"); return(builder.Build(this)); }
private IObjectValidator GetValidator() { var organizationBuilder = new ValidationBuilder <RiskCreatedDateViewModel>(); organizationBuilder.RuleFor(x => x.Value).LessThan(DateTime.Now).WithMessage("Укажите корректную дату"); return(organizationBuilder.Build(this /*методу нужна ЭТА ViewModel*/));// после созданных правил тут мы создаем саму инициализацию. Билдер сбилдся. }
private IObjectValidator GetValidator() { var builder = new ValidationBuilder <InnerObject>(); builder.RuleFor(vm => vm.Name) .NotEmpty(); return(builder.Build(this)); }
private IObjectValidator GetValidator() { var builder = new ValidationBuilder <ParamViewModel>(); builder.RuleFor(vm => vm.Radius).NotEmpty().WithMessage("Введите радиус, не оставляйте поле пустым"); builder.RuleFor(vm => vm.TPolarization).NotEmpty().WithMessage("Введите теоретическую поляризуемость, не оставляйте поле пустым"); builder.RuleFor(vm => vm.Speed).NotEmpty().WithMessage("Введите скорость, не оставляйте поле пустым"); builder.RuleFor(vm => vm.MPolarization).NotNull().WithMessage("Введите измеренную поляризуемость, не оставляйте поле пустым"); return(builder.Build(this)); }
private IObjectValidator GetValidator() { var builder = new ValidationBuilder <Publisher>(); builder.RuleFor(publisher => publisher.Name) .NotEmpty() .WithMessage("Name can't be empty"); builder.RuleFor(publisher => publisher.Address) .NotEmpty() .WithMessage("Address can't be empty"); return(builder.Build(this)); }
private IObjectValidator GetValidator(IList <LiteratureType> literatureTypes = null) { var builder = new ValidationBuilder <LiteratureType>(); builder.RuleFor(literatureType => literatureType.Name) .NotEmpty() .WithMessage("Name can't be empty"); builder.RuleFor(literatureType => literatureType.Name) .Must(name => literatureTypes == null || !literatureTypes.Any(literatureType => literatureType.Id != Id && literatureType.Name == name)) .WithMessage("Name should be unique"); return(builder.Build(this)); }
private IObjectValidator GetValidator() { var personBuilder = new ValidationBuilder <UpdatePersViewModel>(); personBuilder.RuleFor(x => x.OwnerName).NotEmpty().WithMessage("Поле не может быть пустым"); personBuilder.RuleFor(x => x.OwnerName).MinLength(2).WithMessage("Поле должно содержать минимум два символа"); personBuilder.RuleFor(x => x.OwnerName).Matches(@"[A-Za-zА-Яа-яЁё].").WithMessage("Поле должно минимум две буквы"); personBuilder.RuleFor(x => x.HeadName).NotEmpty().WithMessage("Поле не может быть пустым"); personBuilder.RuleFor(x => x.HeadName).MinLength(2).WithMessage("Поле должно содержать минимум два символа"); personBuilder.RuleFor(x => x.HeadName).Matches(@"[A-Za-zА-Яа-яЁё].").WithMessage("Поле должно минимум две буквы"); personBuilder.RuleFor(x => x.SelectedCountry).Must(BeAValidCountry).WithMessage("Укажите страну"); return(personBuilder.Build(this)); }
private IObjectValidator GetValidator() { var builder = new ValidationBuilder <InnerValidatableObjectAndCollectionViewModel>(); builder.RuleFor(vm => vm.InnerObjectValue) .NotNull() .ModelIsValid(); builder.RuleForCollection(vm => vm.InnerObjectsCollection) .NotNull() .Count(3, 5) .CollectionElementsAreValid(i => i.Validator?.IsValid != false); return(builder.Build(this)); }
private IObjectValidator GetValidator() { var builder = new ValidationBuilder <BaseSampleViewModel>(); builder.RuleFor(vm => vm.Name) .NotEmpty() .MaxLength(16) .NotEqual("foo"); builder.RuleFor(vm => vm.Surname) .Equal("foo"); builder.RuleFor(vm => vm.PhoneNumber) .NotEmpty() .Matches(@"^\d{9,12}$"); builder.RuleFor(vm => vm.Age) .NotNull() .Between(18, 35); return(builder.Build(this)); }
private IObjectValidator GetValidator() { var builder = new ValidationBuilder <LocalizationViewModel>(); builder.RuleFor(vm => vm.PhoneNumber) .NotEmpty() .When(vm => Email, email => string.IsNullOrEmpty(email) == true) .WithLocalizedMessage(nameof(Resources.Default.PhoneNumberOrEmailRequired)) .Matches(@"^\d{11}$") .WithLocalizedMessage(nameof(Resources.Default.PhoneNumberFormat)); builder.RuleFor(vm => vm.Email) .NotEmpty() .When(vm => PhoneNumber, phoneNumber => string.IsNullOrEmpty(phoneNumber) == true) .WithLocalizedMessage(nameof(Resources.Default.PhoneNumberOrEmailRequired)) .Must(IsValidEmail) .WithLocalizedMessage(Resources.Additional.ResourceManager, nameof(Resources.Additional.NotValidEmail)); builder.RuleFor(vm => vm.Password) .NotEmpty() .MinLength(8, ValidationMessageType.Warning) .WithLocalizedMessage(nameof(Resources.Default.SecurePassword)); builder.RuleFor(vm => vm.ConfirmPassword) .Equal(vm => vm.Password); builder.RuleFor(vm => vm.Country) .NotEmpty() .AllWhen(vm => vm.AdditionalInformation); builder.RuleFor(vm => vm.City) .NotEmpty() .AllWhen(vm => vm.AdditionalInformation); return(builder.Build(this)); }
private IObjectValidator GetValidator() { var builder = new ValidationBuilder <DependentPropertiesViewModel>(); builder.RuleFor(vm => vm.PhoneNumber) .NotEmpty() .When(vm => Email, email => string.IsNullOrEmpty(email) == true) .WithMessage("You need to specify a phone or email") .Matches(@"^\d{11}$") .WithMessage("Phone number must contain 11 digits"); builder.RuleFor(vm => vm.Email) .NotEmpty() .When(vm => PhoneNumber, phoneNumber => string.IsNullOrEmpty(phoneNumber) == true) .WithMessage("You need to specify a phone or email") .Must(IsValidEmail) .WithMessage("Not valid email"); builder.RuleFor(vm => vm.Password) .NotEmpty() .MinLength(8, ValidationMessageType.Warning) .WithMessage("For a secure password, enter more than {MinLength} characters. You entered {TotalLength} characters"); builder.RuleFor(vm => vm.ConfirmPassword) .Equal(vm => vm.Password); builder.RuleFor(vm => vm.Country) .NotEmpty() .AllWhen(vm => vm.AdditionalInformation); builder.RuleFor(vm => vm.City) .NotEmpty() .AllWhen(vm => vm.AdditionalInformation); return(builder.Build(this)); }
private IObjectValidator GetValidator(IList <Author> authors = null) { var builder = new ValidationBuilder <Author>(); builder.RuleFor(author => author.FIO) .NotEmpty() .WithMessage("FIO can't be empty"); builder.RuleFor(author => author.FIO) .Must(fio => authors == null || !authors.Any(author => author.Id != Id && author.FIO == fio && (author.Pseudonym == Pseudonym || string.IsNullOrWhiteSpace(author.Pseudonym) && string.IsNullOrWhiteSpace(Pseudonym)))) .WithMessage("Pair of FIO and Pseudonym should be unique"); builder.RuleFor(author => author.Pseudonym) .Must(pseudonym => authors == null || !authors.Any(author => author.Id != Id && author.FIO == FIO && (author.Pseudonym == pseudonym || string.IsNullOrWhiteSpace(author.Pseudonym) && string.IsNullOrWhiteSpace(pseudonym)))) .WithMessage("Pair of FIO and Pseudonym should be unique"); return(builder.Build(this)); }
private IObjectValidator GetValidator(IList <Publisher> publishers = null) { var builder = new ValidationBuilder <Publisher>(); builder.RuleFor(publisher => publisher.Name) .NotEmpty() .WithMessage("Name can't be empty"); builder.RuleFor(publisher => publisher.Address) .NotEmpty() .WithMessage("Address can't be empty"); builder.RuleFor(publisher => publisher.Name) .Must(name => publishers == null || !publishers.Any(publisher => !publisher.EqualsPrimaryKey(this) && publisher.Name == name && publisher.Address == Address)) .WithMessage("Pair of Name and Address should be unique"); builder.RuleFor(publisher => publisher.Address) .Must(address => publishers == null || !publishers.Any(publisher => !publisher.EqualsPrimaryKey(this) && publisher.Name == Name && publisher.Address == address)) .WithMessage("Pair of Name and Address should be unique"); return(builder.Build(this)); }
private IObjectValidator GetValidator() { var RegistratuonBuilder = new ValidationBuilder <RegistrationViewModel>(); RegistratuonBuilder.RuleFor(x => x.LoginUser).Matches(@"^[^\s][a-zA-Zа-яА-Я-0-9\s]*$").WithMessage("Пробелы в начале строки не допустимы"); RegistratuonBuilder.RuleFor(x => x.LoginUser).NotEmpty().WithMessage("Поле не может быть пустым"); RegistratuonBuilder.RuleFor(x => x.LoginUser).MinLength(3).WithMessage("Минимум пять символов!"); RegistratuonBuilder.RuleFor(x => x.Department).Matches(@"^[^\s][a-zA-Zа-яА-Я-0-9\s]*$").WithMessage("Пробелы в начале строки не допустимы"); RegistratuonBuilder.RuleFor(x => x.Department).NotEmpty().WithMessage("Поле не может быть пустым"); RegistratuonBuilder.RuleFor(x => x.Department).MinLength(2).WithMessage("Минимум пять символов!"); RegistratuonBuilder.RuleFor(x => x.Password).Matches(@"^[^\s][a-zA-Zа-яА-Я-0-9\s]*$").WithMessage("Пробелы в начале строки не допустимы"); RegistratuonBuilder.RuleFor(x => x.Password).NotEmpty().WithMessage("Поле не может быть пустым"); RegistratuonBuilder.RuleFor(x => x.Password).MinLength(5).WithMessage("Минимум пять символов!"); RegistratuonBuilder.RuleFor(x => x.RepeatedPassword).Matches(@"^[^\s][a-zA-Zа-яА-Я-0-9\s]*$").WithMessage("Пробелы в начале строки не допустимы"); RegistratuonBuilder.RuleFor(x => x.RepeatedPassword).NotEmpty().WithMessage("Поле не может быть пустым"); RegistratuonBuilder.RuleFor(x => x.RepeatedPassword).MinLength(5).WithMessage("Минимум пять символов!"); RegistratuonBuilder.RuleFor(x => x.RepeatedPassword).Must(BeAValidRepeatedPassword).WithMessage("Пароли не совпадают!"); return(RegistratuonBuilder.Build(this)); }
private IObjectValidator GetValidator(IList <User> users = null) { var builder = new ValidationBuilder <User>(); builder.RuleFor(user => user.Login) .NotEmpty() .WithMessage("Login can't be empty") .Must(login => users == null || !users.Any(user => !user.EqualsPrimaryKey(this) && user.Login == login)) .WithMessage("This login is already used") .Must(login => string.IsNullOrWhiteSpace(login) || Regex.IsMatch(login.Trim().ToLower(), @"^[à-ÿ0-9a-z¸`!@#$%^&*()_\-=+{}\[\];:'"",<.>/?\\*¹~|\s]{6,50}$")) .WithMessage( "Login must contain from 6 to 50 characters shown on the classic Russian-English keyboard layout"); builder.RuleFor(user => user.Password) .NotEmpty() .WithMessage("Password can't be empty"); builder.RuleFor(user => user.Role) .Must(role => new[] { "ADMIN", "USER" }.Contains(role)) .WithMessage("Such role does not exist"); return(builder.Build(this)); }