using FluentValidation; using SIGCM2.Domain.Entities; namespace SIGCM2.Application.Secciones.Create; public sealed class CreateSeccionCommandValidator : AbstractValidator { private const int CodigoMaxLength = 30; private const int NombreMaxLength = 100; public CreateSeccionCommandValidator() { RuleFor(x => x.MedioId) .GreaterThan(0).WithMessage("El medioId debe ser mayor a 0."); RuleFor(x => x.Codigo) .NotEmpty().WithMessage("El código es requerido.") .MaximumLength(CodigoMaxLength).WithMessage($"El código no puede superar los {CodigoMaxLength} caracteres."); RuleFor(x => x.Nombre) .NotEmpty().WithMessage("El nombre es requerido.") .MaximumLength(NombreMaxLength).WithMessage($"El nombre no puede superar los {NombreMaxLength} caracteres."); RuleFor(x => x.Tipo) .NotEmpty().WithMessage("El tipo es requerido.") .Must(t => TipoSeccion.AllowedTipos.Contains(t)) .WithMessage($"El tipo debe ser uno de: {string.Join(", ", TipoSeccion.AllowedTipos)}."); } }