namespace CMSMicroservice.Application.ConfigurationCQ.Commands.SetConfigurationValue; public class SetConfigurationValueCommandValidator : AbstractValidator { public SetConfigurationValueCommandValidator() { RuleFor(x => x.Scope) .IsInEnum() .WithMessage("محدوده تنظیمات معتبر نیست"); RuleFor(x => x.Key) .NotEmpty() .WithMessage("کلید تنظیمات الزامی است") .MaximumLength(100) .WithMessage("کلید تنظیمات نمی‌تواند بیشتر از 100 کاراکتر باشد") .Matches(@"^[a-zA-Z0-9_\.]+$") .WithMessage("کلید تنظیمات فقط می‌تواند شامل حروف انگلیسی، اعداد، نقطه و آندرلاین باشد"); RuleFor(x => x.Value) .NotEmpty() .WithMessage("مقدار تنظیمات الزامی است") .MaximumLength(2000) .WithMessage("مقدار تنظیمات نمی‌تواند بیشتر از 2000 کاراکتر باشد"); RuleFor(x => x.Description) .MaximumLength(500) .WithMessage("توضیحات نمی‌تواند بیشتر از 500 کاراکتر باشد") .When(x => !string.IsNullOrEmpty(x.Description)); RuleFor(x => x.ChangeReason) .MaximumLength(500) .WithMessage("دلیل تغییر نمی‌تواند بیشتر از 500 کاراکتر باشد") .When(x => !string.IsNullOrEmpty(x.ChangeReason)); } public Func>> ValidateValue => async (model, propertyName) => { var result = await ValidateAsync( ValidationContext.CreateWithOptions( (SetConfigurationValueCommand)model, x => x.IncludeProperties(propertyName))); if (result.IsValid) return Array.Empty(); return result.Errors.Select(e => e.ErrorMessage); }; }