using FluentValidation;
namespace AiDevProject.Core.Validation;
///
/// User creation validator.
///
public class CreateUserValidator : AbstractValidator
{
public CreateUserValidator()
{
RuleFor(x => x.Email)
.NotEmpty().WithMessage("Email is required")
.EmailAddress().WithMessage("Invalid email format");
RuleFor(x => x.Password)
.NotEmpty().WithMessage("Password is required")
.MinimumLength(8).WithMessage("Password must be at least 8 characters")
.Matches(@"[A-Z]").WithMessage("Password must contain uppercase letter")
.Matches(@"[a-z]").WithMessage("Password must contain lowercase letter")
.Matches(@"[0-9]").WithMessage("Password must contain number");
RuleFor(x => x.Name)
.MaximumLength(100).WithMessage("Name too long")
.When(x => !string.IsNullOrEmpty(x.Name));
}
}
///
/// User creation request DTO.
///
public record CreateUserRequest(
string Email,
string Password,
string? Name = null
);