using FluentValidation;

namespace CMSMicroservice.Application.DiscountShopCQ.Commands.CreateDiscountProduct;

public class CreateDiscountProductCommandValidator : AbstractValidator<CreateDiscountProductCommand>
{
    public CreateDiscountProductCommandValidator()
    {
        RuleFor(v => v.Title)
            .NotEmpty().WithMessage("عنوان محصول الزامی است")
            .MaximumLength(200).WithMessage("عنوان محصول نمی‌تواند بیشتر از 200 کاراکتر باشد");

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

        RuleFor(v => v.FullInformation)
            .MaximumLength(10000).WithMessage("توضیحات کامل نمی‌تواند بیشتر از 10000 کاراکتر باشد")
            .When(v => !string.IsNullOrEmpty(v.FullInformation));

        RuleFor(v => v.Price)
            .GreaterThan(0).WithMessage("قیمت باید بیشتر از صفر باشد");

        RuleFor(v => v.MaxDiscountPercent)
            .InclusiveBetween(0, 100).WithMessage("درصد تخفیف باید بین 0 تا 100 باشد");
    }
}
