using CMSMicroservice.Domain.Common;
using FluentValidation;

namespace CMSMicroservice.Application.WalletCQ.Commands.ChargeMagicWallet;

public class ChargeMagicWalletCommandValidator : AbstractValidator<ChargeMagicWalletCommand>
{
    public ChargeMagicWalletCommandValidator()
    {
        RuleFor(x => x.UserId)
            .GreaterThan(0)
            .WithMessage("شناسه کاربر باید بزرگتر از صفر باشد");

        // حصار ایمنی — سقف واقعی per-package در هندلر اعمال می‌شود
        RuleFor(x => x.Amount)
            .GreaterThanOrEqualTo(SystemConstants.MagicWalletMinCharge)
            .WithMessage("حداقل مبلغ شارژ جادویی ۱۰,۰۰۰ تومان است")
            .LessThanOrEqualTo(SystemConstants.WalletMaxSafeAmount)
            .WithMessage("مبلغ وارد شده بیش از حد مجاز است");
    }
}
