namespace WalletService.API.Application.Commands;

using MediatR;

/// <summary>
/// EN: Command to earn points
/// VI: Command để tích điểm
/// </summary>
public record EarnPointsCommand(
    Guid UserId,
    long Points,
    string Source,
    string Description,
    int? ExpiryMonths = 12
) : IRequest<PointTransactionResult>;

public record PointTransactionResult(
    Guid TransactionId,
    Guid AccountId,
    long Points,
    string Type,
    long BalanceAfter,
    DateTime CreatedAt,
    DateTime? ExpiresAt = null
);
