using FluentValidation; using SeaHaven.Services.DTOs; namespace SeaHaven.Services.Validation { public interface ICreateLocationValidation : IValidator { } public class CreateLocationValidation : AbstractValidator, ICreateLocationValidation { public CreateLocationValidation() { RuleFor(x => x.LocationName) .NotEmpty().WithMessage("Location name is required") .MaximumLength(200).WithMessage("Location name cannot exceed 200 characters"); RuleFor(x => x.Address) .MaximumLength(500).WithMessage("Address cannot exceed 500 characters") .When(x => !string.IsNullOrEmpty(x.Address)); RuleFor(x => x.City) .MaximumLength(100).WithMessage("City cannot exceed 100 characters") .When(x => !string.IsNullOrEmpty(x.City)); RuleFor(x => x.State) .MaximumLength(2).WithMessage("State must be 2 characters") .When(x => !string.IsNullOrEmpty(x.State)); RuleFor(x => x.Zipcode) .MaximumLength(10).WithMessage("Zipcode cannot exceed 10 characters") .When(x => !string.IsNullOrEmpty(x.Zipcode)); } } public interface IUpdateLocationValidation : IValidator { } public class UpdateLocationValidation : AbstractValidator, IUpdateLocationValidation { public UpdateLocationValidation() { RuleFor(x => x.LocationName) .MaximumLength(200).WithMessage("Location name cannot exceed 200 characters") .When(x => !string.IsNullOrEmpty(x.LocationName)); RuleFor(x => x.Address) .MaximumLength(500).WithMessage("Address cannot exceed 500 characters") .When(x => !string.IsNullOrEmpty(x.Address)); RuleFor(x => x.City) .MaximumLength(100).WithMessage("City cannot exceed 100 characters") .When(x => !string.IsNullOrEmpty(x.City)); RuleFor(x => x.State) .MaximumLength(2).WithMessage("State must be 2 characters") .When(x => !string.IsNullOrEmpty(x.State)); RuleFor(x => x.Zipcode) .MaximumLength(10).WithMessage("Zipcode cannot exceed 10 characters") .When(x => !string.IsNullOrEmpty(x.Zipcode)); } } }