using FluentValidation;

namespace PlanTempus.Components.Accounts.Create
{
    public class CreateAccountValidator : AbstractValidator<CreateAccountCommand>
	{
		public CreateAccountValidator()
		{
			RuleFor(x => x.Email)
				.NotEmpty().WithMessage("Email skal angives.")
				.EmailAddress().WithMessage("Ugyldig emailadresse.")
				.MaximumLength(256).WithMessage("Email må højst være 256 tegn.");

			RuleFor(x => x.Password)
				.NotEmpty().WithMessage("Password skal angives.")
				.MinimumLength(8).WithMessage("Password skal være mindst 8 tegn.")
				.Matches("[A-Z]").WithMessage("Password skal indeholde mindst ét stort bogstav.")
				.Matches("[a-z]").WithMessage("Password skal indeholde mindst ét lille bogstav.")
				.Matches("[0-9]").WithMessage("Password skal indeholde mindst ét tal.")
				.Matches("[^a-zA-Z0-9]").WithMessage("Password skal indeholde mindst ét specialtegn.");
		}
	}
}
