using BookHive.DTO.Author; using FastEndpoints; using FluentValidation; namespace BookHive.Validators.Authors; public class CreateAuthorDtoValidator : Validator { public CreateAuthorDtoValidator() { RuleFor(x => x.FirstName) .NotEmpty() .WithMessage("First name is required.") .MaximumLength(100) .WithMessage("First name cannot exceed 100 characters.") .MinimumLength(2) .WithMessage("First name must exceed 2 characters."); RuleFor(x => x.LastName) .NotEmpty() .WithMessage("Last name is required.") .MaximumLength(100) .WithMessage("Last name cannot exceed 100 characters.") .MinimumLength(2) .WithMessage("Last name must exceed 2 characters."); RuleFor(x => x.Biography) .MaximumLength(2000) .WithMessage("Biography cannot exceed 2000 characters.") .MinimumLength(2) .WithMessage("Biography must exceed 2 characters."); RuleFor(x => x.BirthDate) .NotEmpty() .WithMessage("Birth date is required.") .LessThan(DateOnly.FromDateTime(DateTime.Now)) .WithMessage("Birth date cannot be in the future."); RuleFor(x => x.Nationality) .NotEmpty() .WithMessage("Nationality is required.") .MaximumLength(60) .WithMessage("Nationality cannot exceed 60 characters."); } }