using FluentValidation;

namespace SIGCM2.Application.ProductTypes.Create;

public sealed class CreateProductTypeCommandValidator : AbstractValidator<CreateProductTypeCommand>
{
    public CreateProductTypeCommandValidator()
    {
        RuleFor(x => x.Nombre)
            .NotEmpty().WithMessage("El nombre del tipo de producto es requerido.")
            .MaximumLength(200).WithMessage("El nombre no puede superar los 200 caracteres.");

        RuleFor(x => x.MaxImages)
            .GreaterThan(0).When(x => x.MaxImages.HasValue)
            .WithMessage("MaxImages debe ser mayor que 0 (o null para sin límite).");

        RuleFor(x => x.MaxImageSizeMB)
            .GreaterThan(0).When(x => x.MaxImageSizeMB.HasValue)
            .WithMessage("MaxImageSizeMB debe ser mayor que 0 (o null para sin límite).");

        RuleFor(x => x.MaxImageWidth)
            .GreaterThan(0).When(x => x.MaxImageWidth.HasValue)
            .WithMessage("MaxImageWidth debe ser mayor que 0 (o null para sin límite).");

        RuleFor(x => x.MaxImageHeight)
            .GreaterThan(0).When(x => x.MaxImageHeight.HasValue)
            .WithMessage("MaxImageHeight debe ser mayor que 0 (o null para sin límite).");
    }
}
