using FluentValidation;

namespace CMSMicroservice.Application.SitePageCQ.Commands.UpdateSitePageSection;

public class UpdateSitePageSectionCommandValidator : AbstractValidator<UpdateSitePageSectionCommand>
{
    public UpdateSitePageSectionCommandValidator()
    {
        RuleFor(x => x.Id)
            .GreaterThan(0).WithMessage("شناسه بخش نامعتبر است");

        RuleFor(x => x.SectionKey)
            .NotEmpty().WithMessage("کلید بخش الزامی است")
            .MaximumLength(100).WithMessage("کلید بخش حداکثر ۱۰۰ کاراکتر")
            .Matches(@"^[a-z0-9\-_]+$").WithMessage("کلید بخش فقط شامل حروف کوچک، اعداد، خط تیره و زیرخط");

        RuleFor(x => x.Title)
            .MaximumLength(300).WithMessage("عنوان بخش حداکثر ۳۰۰ کاراکتر");

        RuleFor(x => x.Subtitle)
            .MaximumLength(500).WithMessage("زیرعنوان بخش حداکثر ۵۰۰ کاراکتر");

        RuleFor(x => x.IconName)
            .MaximumLength(100).WithMessage("نام آیکون حداکثر ۱۰۰ کاراکتر");
    }
}
