using FluentValidation;

namespace CMSMicroservice.Application.SitePageCQ.Commands.CreateSitePageSection;

public class CreateSitePageSectionCommandValidator : AbstractValidator<CreateSitePageSectionCommand>
{
    public CreateSitePageSectionCommandValidator()
    {
        RuleFor(x => x.SitePageId)
            .GreaterThan(0).WithMessage("شناسه صفحه نامعتبر است");

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

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

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

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