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)
            .NotEmpty().WithMessage("توضیحات کوتاه الزامی است")
            .MaximumLength(500).WithMessage("توضیحات کوتاه نمی‌تواند بیشتر از 500 کاراکتر باشد");

        RuleFor(v => v.FullInformation)
            .NotEmpty().WithMessage("توضیحات کامل الزامی است")
            .MaximumLength(2000).WithMessage("توضیحات کامل نمی‌تواند بیشتر از 2000 کاراکتر باشد");

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

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

        RuleFor(v => v.RemainingCount)
            .GreaterThanOrEqualTo(0).WithMessage("موجودی نمی‌تواند منفی باشد");

        RuleFor(v => v.ImagePath)
            .NotEmpty().WithMessage("تصویر محصول الزامی است");

        RuleFor(v => v.ThumbnailPath)
            .NotEmpty().WithMessage("تصویر بندانگشتی الزامی است");
    }
}
