using FluentValidation;

namespace CMSMicroservice.Application.SitePageSettingsCQ.Commands.SavePageSettings;

public class SavePageSettingsCommandValidator : AbstractValidator<SavePageSettingsCommand>
{
    private static readonly string[] ValidPageKeys = { "landing", "about", "contact", "licenses" };

    public SavePageSettingsCommandValidator()
    {
        RuleFor(x => x.PageKey)
            .NotEmpty().WithMessage("کلید صفحه الزامی است")
            .MaximumLength(50)
            .Must(key => ValidPageKeys.Contains(key))
            .WithMessage("کلید صفحه باید یکی از مقادیر landing, about, contact, licenses باشد");

        RuleFor(x => x.Title)
            .NotEmpty().WithMessage("عنوان صفحه الزامی است")
            .MaximumLength(200).WithMessage("عنوان صفحه حداکثر ۲۰۰ کاراکتر");

        RuleFor(x => x.MetaDescription)
            .MaximumLength(300).WithMessage("توضیحات متا حداکثر ۳۰۰ کاراکتر");

        RuleFor(x => x.HeroTitle)
            .MaximumLength(200).WithMessage("عنوان هیرو حداکثر ۲۰۰ کاراکتر");

        RuleFor(x => x.HeroSubtitle)
            .MaximumLength(500).WithMessage("زیرعنوان هیرو حداکثر ۵۰۰ کاراکتر");
    }
}
