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 );