namespace CMSMicroservice.Application.ProductsCQ.Commands.BulkUpdateProductStock;

public class BulkUpdateProductStockCommandValidator : AbstractValidator<BulkUpdateProductStockCommand>
{
    public BulkUpdateProductStockCommandValidator()
    {
        RuleFor(x => x.Products)
            .NotEmpty().WithMessage("لیست محصولات نمی‌تواند خالی باشد")
            .Must(x => x.Count <= 100).WithMessage("حداکثر 100 محصول در هر بار قابل به‌روزرسانی است");

        RuleForEach(x => x.Products).ChildRules(product =>
        {
            product.RuleFor(p => p.ProductId)
                .GreaterThan(0).WithMessage("شناسه محصول باید بزرگتر از 0 باشد");

            // برای Set mode، مقدار نمی‌تواند منفی باشد (چک در Handler انجام می‌شود)
            product.RuleFor(p => p.Quantity)
                .GreaterThanOrEqualTo(-10000)
                .WithMessage("مقدار موجودی نامعتبر است");
        });
    }
}
