using FluentValidation; using SeaHaven.Services.DTOs; namespace SeaHaven.Services.Validation { public interface ICreateAssetValidation : IValidator { } public class CreateAssetValidation : AbstractValidator, ICreateAssetValidation { public CreateAssetValidation() { RuleFor(x => x.Name) .NotEmpty().WithMessage("Asset name is required") .MaximumLength(200).WithMessage("Asset name cannot exceed 200 characters"); RuleFor(x => x.LocationId) .GreaterThan(0).WithMessage("Valid location must be selected") .When(x => x.LocationId.HasValue); } } public interface IUpdateAssetValidation : IValidator { } public class UpdateAssetValidation : AbstractValidator, IUpdateAssetValidation { public UpdateAssetValidation() { RuleFor(x => x.Name) .MaximumLength(200).WithMessage("Asset name cannot exceed 200 characters") .When(x => !string.IsNullOrEmpty(x.Name)); RuleFor(x => x.LocationId) .GreaterThan(0).WithMessage("Valid location must be selected") .When(x => x.LocationId.HasValue); } } }