Newer
Older
hypermedia-blazorcrud / Blazorcrud.Shared / Models / PersonValidator.cs
@Derek Comartin Derek Comartin on 12 Jul 1 KB Init
using FluentValidation;

namespace Blazorcrud.Shared.Models
{
    public class PersonValidator : AbstractValidator<Person>
    {
        public PersonValidator()
        {
            CascadeMode = CascadeMode.Stop;

            RuleFor(person => person.FirstName).NotEmpty().WithMessage("First name is a required field.")
                .Length(3, 50).WithMessage("First name must be between 3 and 50 characters.");
            RuleFor(person => person.LastName).NotEmpty().WithMessage("Last name is a required field.")
                .Length(3, 50).WithMessage("Last name must be between 3 and 50 characters.");
            RuleFor(person => person.Gender).IsInEnum()
                .WithMessage("Gender is a required field.");
            RuleFor(person => person.PhoneNumber).NotEmpty().WithMessage("Phone number is a required field.")
                .Length(5, 50).WithMessage("Phone number must be between 5 and 50 characters.");
            RuleFor(person => person.Addresses).NotEmpty().WithMessage("You have to define at least one address per person");
            RuleForEach(person => person.Addresses).SetValidator(new AddressValidator());
        }
    }
}