using FluentValidation;

namespace CMSMicroservice.Application.UserCartsCQ.Commands.MergeCart;

public class MergeCartCommandValidator : AbstractValidator<MergeCartCommand>
{
    public MergeCartCommandValidator()
    {
        RuleFor(x => x.UserId)
            .GreaterThan(0)
            .WithMessage("شناسه کاربر نامعتبر است");

        RuleFor(x => x.GuestCartItems)
            .NotNull()
            .WithMessage("لیست آیتم‌های سبد خرید نباید خالی باشد");

        RuleForEach(x => x.GuestCartItems)
            .ChildRules(item =>
            {
                item.RuleFor(i => i.ProductId)
                    .GreaterThan(0)
                    .WithMessage("شناسه محصول نامعتبر است");

                item.RuleFor(i => i.Count)
                    .GreaterThan(0)
                    .WithMessage("تعداد باید بیشتر از صفر باشد")
                    .LessThanOrEqualTo(100)
                    .WithMessage("حداکثر تعداد مجاز 100 عدد است");
            });
    }
}
