namespace CMSMicroservice.Application.TagCQ.Commands.CreateTag;

public class CreateTagCommandValidator : AbstractValidator<CreateTagCommand>
{
    public CreateTagCommandValidator()
    {
        RuleFor(x => x.Name)
            .NotEmpty().WithMessage("نام تگ الزامی است")
            .MaximumLength(100).WithMessage("نام تگ نباید بیشتر از 100 کاراکتر باشد")
            .Matches("^[a-zA-Z0-9_-]+$").WithMessage("نام تگ فقط باید شامل حروف انگلیسی، اعداد، خط تیره و زیرخط باشد");

        RuleFor(x => x.Title)
            .NotEmpty().WithMessage("عنوان تگ الزامی است")
            .MaximumLength(200).WithMessage("عنوان تگ نباید بیشتر از 200 کاراکتر باشد");

        RuleFor(x => x.Description)
            .MaximumLength(500).When(x => !string.IsNullOrEmpty(x.Description))
            .WithMessage("توضیحات نباید بیشتر از 500 کاراکتر باشد");

        RuleFor(x => x.SortOrder)
            .GreaterThanOrEqualTo(0).WithMessage("ترتیب نمایش نمی‌تواند منفی باشد");
    }
}
