using FluentValidation;

namespace CMSMicroservice.Application.DiscountShopCQ.Commands.CreateDiscountCategory;

public class CreateDiscountCategoryCommandValidator : AbstractValidator<CreateDiscountCategoryCommand>
{
    public CreateDiscountCategoryCommandValidator()
    {
        RuleFor(x => x.Name)
            .NotEmpty().WithMessage("نام دسته‌بندی الزامی است")
            .MaximumLength(100).WithMessage("نام دسته‌بندی نباید بیشتر از 100 کاراکتر باشد");

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

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

        RuleFor(x => x.ImagePath)
            .MaximumLength(500).WithMessage("مسیر تصویر نباید بیشتر از 500 کاراکتر باشد")
            .When(x => !string.IsNullOrEmpty(x.ImagePath));

        RuleFor(x => x.ParentCategoryId)
            .GreaterThan(0).WithMessage("شناسه دسته‌بندی والد باید مثبت باشد")
            .When(x => x.ParentCategoryId.HasValue);

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