using BookHive.DTO.Loan; using FastEndpoints; using FluentValidation; namespace BookHive.Validators.Loans; public class CreateLoanDtoValidator : Validator { public CreateLoanDtoValidator() { RuleFor(x => x.BookId) .GreaterThan(0) .WithMessage("Invalid book id."); RuleFor(x => x.MemberId) .GreaterThan(0) .WithMessage("Invalid member id."); RuleFor(x => x.LoanDate) .NotEmpty() .WithMessage("Date is required."); RuleFor(x => x.DueDate) .NotEmpty() .WithMessage("Due date is required.") .GreaterThan(d => d.LoanDate) .WithMessage("Due date must be in the future.") .Must((loan, dueDate) => dueDate <= loan.LoanDate.AddDays(30)) .WithMessage("Due date must be in the future.");; } }